@pimlico/alto 0.0.0-main.20250716T135636 → 0.0.0-main.20250717T214626

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/contracts/EIP712.sol/EIP712.json +1 -1
  2. package/contracts/Eip7702Support.sol/Eip7702Support.json +1 -1
  3. package/contracts/EntryPoint.sol/EntryPoint.json +1 -1
  4. package/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride06.json +1 -1
  5. package/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride07.json +1 -1
  6. package/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride08.json +1 -1
  7. package/contracts/EntryPointGasEstimationOverride.sol/EntryPointGasEstimationOverride06.json +1 -1
  8. package/contracts/EntryPointSimulations.sol/EntryPointSimulations07.json +1 -1
  9. package/contracts/EntryPointSimulations.sol/EntryPointSimulations08.json +1 -1
  10. package/contracts/IERC5267.sol/IERC5267.json +1 -1
  11. package/contracts/IEntryPointSimulations.sol/IEntryPointSimulations.json +1 -1
  12. package/contracts/Math.sol/Math.json +1 -1
  13. package/contracts/MessageHashUtils.sol/MessageHashUtils.json +1 -1
  14. package/contracts/Panic.sol/Panic.json +1 -1
  15. package/contracts/PimlicoSimulations.sol/PimlicoSimulations.json +1 -1
  16. package/contracts/ReentrancyGuard.sol/ReentrancyGuard.json +1 -1
  17. package/contracts/ReentrancyGuardTransient.sol/ReentrancyGuardTransient.json +1 -1
  18. package/contracts/SafeCast.sol/SafeCast.json +1 -1
  19. package/contracts/SenderCreator.sol/SenderCreator.json +1 -1
  20. package/contracts/ShortStrings.sol/ShortStrings.json +1 -1
  21. package/contracts/SignedMath.sol/SignedMath.json +1 -1
  22. package/contracts/SimulationOverrideHelper.sol/SimulationOverrideHelper.json +1 -0
  23. package/contracts/StakeManager.sol/StakeManager.json +1 -1
  24. package/contracts/StorageSlot.sol/StorageSlot.json +1 -1
  25. package/contracts/Strings.sol/Strings.json +1 -1
  26. package/contracts/TransientSlot.sol/TransientSlot.json +1 -1
  27. package/contracts/UserOperationLib.sol/UserOperationLib.json +1 -1
  28. package/contracts/build-info/006aa55b425148d5.json +1 -0
  29. package/contracts/build-info/{880955d5786bfdae.json → 7112d1913b854416.json} +1 -1
  30. package/contracts/utils/StorageSlot.sol/StorageSlot.json +1 -0
  31. package/esm/cli/setupServer.js +17 -1
  32. package/esm/cli/setupServer.js.map +1 -1
  33. package/esm/cli/shutDown.d.ts +18 -0
  34. package/esm/cli/shutDown.js +247 -0
  35. package/esm/cli/shutDown.js.map +1 -0
  36. package/esm/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride06.json +1 -1
  37. package/esm/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride07.json +1 -1
  38. package/esm/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride08.json +1 -1
  39. package/esm/contracts/EntryPointGasEstimationOverride.sol/EntryPointGasEstimationOverride06.json +1 -1
  40. package/esm/contracts/EntryPointSimulations.sol/EntryPointSimulations07.json +1 -1
  41. package/esm/contracts/EntryPointSimulations.sol/EntryPointSimulations08.json +1 -1
  42. package/esm/contracts/PimlicoSimulations.sol/PimlicoSimulations.json +1 -1
  43. package/esm/executor/index.d.ts +1 -0
  44. package/esm/executor/index.js +1 -0
  45. package/esm/executor/index.js.map +1 -1
  46. package/esm/executor/senderManager/createMemorySenderManager.js +12 -0
  47. package/esm/executor/senderManager/createMemorySenderManager.js.map +1 -1
  48. package/esm/executor/senderManager/index.d.ts +1 -0
  49. package/esm/executor/senderManager/index.js.map +1 -1
  50. package/esm/mempool/mempool.d.ts +0 -8
  51. package/esm/mempool/mempool.js +1 -232
  52. package/esm/mempool/mempool.js.map +1 -1
  53. package/esm/utils/entryPointOverrides.js +11 -4
  54. package/esm/utils/entryPointOverrides.js.map +1 -1
  55. package/package.json +1 -1
  56. package/contracts/build-info/7710b5a048396e70.json +0 -1
@@ -1 +1 @@
1
- {"abi":[{"type":"receive","stateMutability":"payable"},{"type":"function","name":"SIG_VALIDATION_FAILED","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"_validateSenderAndPaymaster","inputs":[{"name":"initCode","type":"bytes","internalType":"bytes"},{"name":"sender","type":"address","internalType":"address"},{"name":"paymasterAndData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"addStake","inputs":[{"name":"unstakeDelaySec","type":"uint32","internalType":"uint32"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"depositTo","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"deposits","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"deposit","type":"uint112","internalType":"uint112"},{"name":"staked","type":"bool","internalType":"bool"},{"name":"stake","type":"uint112","internalType":"uint112"},{"name":"unstakeDelaySec","type":"uint32","internalType":"uint32"},{"name":"withdrawTime","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"getDepositInfo","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"info","type":"tuple","internalType":"struct IStakeManager.DepositInfo","components":[{"name":"deposit","type":"uint112","internalType":"uint112"},{"name":"staked","type":"bool","internalType":"bool"},{"name":"stake","type":"uint112","internalType":"uint112"},{"name":"unstakeDelaySec","type":"uint32","internalType":"uint32"},{"name":"withdrawTime","type":"uint48","internalType":"uint48"}]}],"stateMutability":"view"},{"type":"function","name":"getNonce","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"uint192","internalType":"uint192"}],"outputs":[{"name":"nonce","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getSenderAddress","inputs":[{"name":"initCode","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getUserOpHash","inputs":[{"name":"userOp","type":"tuple","internalType":"struct UserOperation","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":"callGasLimit","type":"uint256","internalType":"uint256"},{"name":"verificationGasLimit","type":"uint256","internalType":"uint256"},{"name":"preVerificationGas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"maxPriorityFeePerGas","type":"uint256","internalType":"uint256"},{"name":"paymasterAndData","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"handleAggregatedOps","inputs":[{"name":"opsPerAggregator","type":"tuple[]","internalType":"struct IEntryPoint.UserOpsPerAggregator[]","components":[{"name":"userOps","type":"tuple[]","internalType":"struct UserOperation[]","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":"callGasLimit","type":"uint256","internalType":"uint256"},{"name":"verificationGasLimit","type":"uint256","internalType":"uint256"},{"name":"preVerificationGas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"maxPriorityFeePerGas","type":"uint256","internalType":"uint256"},{"name":"paymasterAndData","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"aggregator","type":"address","internalType":"contract IAggregator"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"beneficiary","type":"address","internalType":"address payable"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"handleOps","inputs":[{"name":"ops","type":"tuple[]","internalType":"struct UserOperation[]","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":"callGasLimit","type":"uint256","internalType":"uint256"},{"name":"verificationGasLimit","type":"uint256","internalType":"uint256"},{"name":"preVerificationGas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"maxPriorityFeePerGas","type":"uint256","internalType":"uint256"},{"name":"paymasterAndData","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"beneficiary","type":"address","internalType":"address payable"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"incrementNonce","inputs":[{"name":"key","type":"uint192","internalType":"uint192"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"innerHandleOp","inputs":[{"name":"callData","type":"bytes","internalType":"bytes"},{"name":"opInfo","type":"tuple","internalType":"struct EntryPointGasEstimationOverride06.UserOpInfo","components":[{"name":"mUserOp","type":"tuple","internalType":"struct EntryPointGasEstimationOverride06.MemoryUserOp","components":[{"name":"sender","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"callGasLimit","type":"uint256","internalType":"uint256"},{"name":"verificationGasLimit","type":"uint256","internalType":"uint256"},{"name":"preVerificationGas","type":"uint256","internalType":"uint256"},{"name":"paymaster","type":"address","internalType":"address"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"maxPriorityFeePerGas","type":"uint256","internalType":"uint256"}]},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"prefund","type":"uint256","internalType":"uint256"},{"name":"contextOffset","type":"uint256","internalType":"uint256"},{"name":"preOpGas","type":"uint256","internalType":"uint256"}]},{"name":"context","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"actualGasCost","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"nonceSequenceNumber","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint192","internalType":"uint192"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"simulateHandleOp","inputs":[{"name":"op","type":"tuple","internalType":"struct UserOperation","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":"callGasLimit","type":"uint256","internalType":"uint256"},{"name":"verificationGasLimit","type":"uint256","internalType":"uint256"},{"name":"preVerificationGas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"maxPriorityFeePerGas","type":"uint256","internalType":"uint256"},{"name":"paymasterAndData","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"target","type":"address","internalType":"address"},{"name":"targetCallData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"simulateValidation","inputs":[{"name":"userOp","type":"tuple","internalType":"struct UserOperation","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":"callGasLimit","type":"uint256","internalType":"uint256"},{"name":"verificationGasLimit","type":"uint256","internalType":"uint256"},{"name":"preVerificationGas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"maxPriorityFeePerGas","type":"uint256","internalType":"uint256"},{"name":"paymasterAndData","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unlockStake","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawStake","inputs":[{"name":"withdrawAddress","type":"address","internalType":"address payable"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawTo","inputs":[{"name":"withdrawAddress","type":"address","internalType":"address payable"},{"name":"withdrawAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AccountDeployed","inputs":[{"name":"userOpHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"factory","type":"address","indexed":false,"internalType":"address"},{"name":"paymaster","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BeforeExecution","inputs":[],"anonymous":false},{"type":"event","name":"Deposited","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"totalDeposit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SignatureAggregatorChanged","inputs":[{"name":"aggregator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StakeLocked","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"totalStaked","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"unstakeDelaySec","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"StakeUnlocked","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"withdrawTime","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"StakeWithdrawn","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"withdrawAddress","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"UserOperationEvent","inputs":[{"name":"userOpHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"paymaster","type":"address","indexed":true,"internalType":"address"},{"name":"nonce","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"success","type":"bool","indexed":false,"internalType":"bool"},{"name":"actualGasCost","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"actualGasUsed","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"UserOperationRevertReason","inputs":[{"name":"userOpHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"nonce","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"revertReason","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"Withdrawn","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"withdrawAddress","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"CallPhaseReverted","inputs":[{"name":"reason","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"ExecutionResult","inputs":[{"name":"preOpGas","type":"uint256","internalType":"uint256"},{"name":"paid","type":"uint256","internalType":"uint256"},{"name":"validAfter","type":"uint48","internalType":"uint48"},{"name":"validUntil","type":"uint48","internalType":"uint48"},{"name":"targetSuccess","type":"bool","internalType":"bool"},{"name":"targetResult","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"FailedOp","inputs":[{"name":"opIndex","type":"uint256","internalType":"uint256"},{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"FailedOpWithRevert","inputs":[{"name":"opIndex","type":"uint256","internalType":"uint256"},{"name":"reason","type":"string","internalType":"string"},{"name":"inner","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"SenderAddressResult","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"SignatureValidationFailed","inputs":[{"name":"aggregator","type":"address","internalType":"address"}]},{"type":"error","name":"ValidationResult","inputs":[{"name":"returnInfo","type":"tuple","internalType":"struct IEntryPoint.ReturnInfo","components":[{"name":"preOpGas","type":"uint256","internalType":"uint256"},{"name":"prefund","type":"uint256","internalType":"uint256"},{"name":"sigFailed","type":"bool","internalType":"bool"},{"name":"validAfter","type":"uint48","internalType":"uint48"},{"name":"validUntil","type":"uint48","internalType":"uint48"},{"name":"paymasterContext","type":"bytes","internalType":"bytes"}]},{"name":"senderInfo","type":"tuple","internalType":"struct IStakeManager.StakeInfo","components":[{"name":"stake","type":"uint256","internalType":"uint256"},{"name":"unstakeDelaySec","type":"uint256","internalType":"uint256"}]},{"name":"factoryInfo","type":"tuple","internalType":"struct IStakeManager.StakeInfo","components":[{"name":"stake","type":"uint256","internalType":"uint256"},{"name":"unstakeDelaySec","type":"uint256","internalType":"uint256"}]},{"name":"paymasterInfo","type":"tuple","internalType":"struct IStakeManager.StakeInfo","components":[{"name":"stake","type":"uint256","internalType":"uint256"},{"name":"unstakeDelaySec","type":"uint256","internalType":"uint256"}]}]},{"type":"error","name":"ValidationResultWithAggregation","inputs":[{"name":"returnInfo","type":"tuple","internalType":"struct IEntryPoint.ReturnInfo","components":[{"name":"preOpGas","type":"uint256","internalType":"uint256"},{"name":"prefund","type":"uint256","internalType":"uint256"},{"name":"sigFailed","type":"bool","internalType":"bool"},{"name":"validAfter","type":"uint48","internalType":"uint48"},{"name":"validUntil","type":"uint48","internalType":"uint48"},{"name":"paymasterContext","type":"bytes","internalType":"bytes"}]},{"name":"senderInfo","type":"tuple","internalType":"struct IStakeManager.StakeInfo","components":[{"name":"stake","type":"uint256","internalType":"uint256"},{"name":"unstakeDelaySec","type":"uint256","internalType":"uint256"}]},{"name":"factoryInfo","type":"tuple","internalType":"struct IStakeManager.StakeInfo","components":[{"name":"stake","type":"uint256","internalType":"uint256"},{"name":"unstakeDelaySec","type":"uint256","internalType":"uint256"}]},{"name":"paymasterInfo","type":"tuple","internalType":"struct IStakeManager.StakeInfo","components":[{"name":"stake","type":"uint256","internalType":"uint256"},{"name":"unstakeDelaySec","type":"uint256","internalType":"uint256"}]},{"name":"aggregatorInfo","type":"tuple","internalType":"struct IEntryPoint.AggregatorStakeInfo","components":[{"name":"aggregator","type":"address","internalType":"address"},{"name":"stakeInfo","type":"tuple","internalType":"struct IStakeManager.StakeInfo","components":[{"name":"stake","type":"uint256","internalType":"uint256"},{"name":"unstakeDelaySec","type":"uint256","internalType":"uint256"}]}]}]}],"bytecode":{"object":"0x6080806040523461001b5760016002556154cb90816100218239f35b600080fdfe60806040526004361015610023575b361561001957600080fd5b610021611f33565b005b60003560e01c80630396cb60146101b35780630bd28e3b146101aa5780631b2e01b8146101a15780631d732756146101985780631fad948c1461018f578063205c28781461018657806335567e1a1461017d5780634b1d7cf5146101745780635287ce121461016b57806370a08231146101625780638f41ec5a14610159578063957122ab146101505780639b249f6914610147578063a61935311461013e578063b760faf914610135578063bb9fe6bf1461012c578063c23a5cea14610123578063d6383f941461011a578063ee219423146101115763fc7e286d0361000e5761010c611e13565b61000e565b5061010c611bfb565b5061010c611a93565b5061010c6118fa565b5061010c61177c565b5061010c61173d565b5061010c61171c565b5061010c61151c565b5061010c611349565b5061010c61130e565b5061010c611289565b5061010c611139565b5061010c610df1565b5061010c610d2c565b5061010c610b8d565b5061010c6108ba565b5061010c6106e7565b5061010c610467565b5061010c610385565b5060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595760043563ffffffff8116808203610359576103547fa5ae833d0bb1dcd632d98a8b70973e8516812898e19bf27b70071ebc8dc52c01916102716102413373ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b9161024d8115156120aa565b61026a610261600185015463ffffffff1690565b63ffffffff1690565b111561210f565b54926103366dffffffffffffffffffffffffffff946102f461029834888460781c16611fa4565b966102a4881515612174565b6102b0818911156121d9565b6102d4816102bc6105ec565b941684906dffffffffffffffffffffffffffff169052565b6001602084015287166dffffffffffffffffffffffffffff166040830152565b63ffffffff83166060820152600060808201526103313373ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b61223e565b6040805194855263ffffffff90911660208501523393918291820190565b0390a2005b600080fd5b6024359077ffffffffffffffffffffffffffffffffffffffffffffffff8216820361035957565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595760043577ffffffffffffffffffffffffffffffffffffffffffffffff81168103610359576104149033600052600160205260406000209077ffffffffffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b61041e8154611ef9565b9055005b73ffffffffffffffffffffffffffffffffffffffff81160361035957565b6024359061044d82610422565b565b60c4359061044d82610422565b359061044d82610422565b50346103595760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595760206104fc6004356104a881610422565b73ffffffffffffffffffffffffffffffffffffffff6104c561035e565b91166000526001835260406000209077ffffffffffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b54604051908152f35b507f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60a0810190811067ffffffffffffffff82111761055157604052565b610559610505565b604052565b610100810190811067ffffffffffffffff82111761055157604052565b67ffffffffffffffff811161055157604052565b6060810190811067ffffffffffffffff82111761055157604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761055157604052565b6040519061044d82610535565b6040519060c0820182811067ffffffffffffffff82111761055157604052565b604051906040820182811067ffffffffffffffff82111761055157604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60209267ffffffffffffffff8111610675575b01160190565b61067d610505565b61066f565b92919261068e82610639565b9161069c60405193846105ab565b829481845281830111610359578281602093846000960137010152565b9181601f840112156103595782359167ffffffffffffffff8311610359576020838186019501011161035957565b5034610359576101c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595767ffffffffffffffff60043581811161035957366023820112156103595761074a903690602481600401359101610682565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36016101808112610359576101006040519161078783610535565b12610359576040516107988161055e565b6107a0610440565b815260443560208201526064356040820152608435606082015260a43560808201526107ca61044f565b60a082015260e43560c08201526101043560e082015281526101243560208201526101443560408201526101643560608201526101843560808201526101a4359182116103595761083e9261082661082e9336906004016106b9565b929091613041565b6040519081529081906020820190565b0390f35b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126103595760043567ffffffffffffffff9283821161035957806023830112156103595781600401359384116103595760248460051b830101116103595760240191906024356108b781610422565b90565b5034610359576108c936610842565b6108d4829392612701565b60005b84811061094957506000927fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f9728480a183915b85831061091a57610021858561280e565b90919360019061093f61092e8789876127c0565b610938888661279e565b5190612ac7565b0194019190610909565b61097461096d61095b8385979561279e565b516109678489876127c0565b84613a36565b919061376d565b73ffffffffffffffffffffffffffffffffffffffff92918316610b1f57610ab15761099e9061376d565b9116610a43576109b3576001019290926108d7565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152602160448201527f41413332207061796d61737465722065787069726564206f72206e6f7420647560648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a490fd5b0390fd5b610a3f826040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601460408201527f41413334207369676e6174757265206572726f7200000000000000000000000060608201520190565b610a3f836040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601760408201527f414132322065787069726564206f72206e6f742064756500000000000000000060608201520190565b610a3f846040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601460408201527f41413234207369676e6174757265206572726f7200000000000000000000000060608201520190565b50346103595760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261035957600435610bc981610422565b6024359060009133835282602052604083206dffffffffffffffffffffffffffff81541692838311610cce57848373ffffffffffffffffffffffffffffffffffffffff829593610c718496610c38610c258798610ccb9c6125e5565b6dffffffffffffffffffffffffffff1690565b6dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b6040805173ffffffffffffffffffffffffffffffffffffffff831681526020810185905233917fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb91a2165af1610cc5612550565b506125f2565b80f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f576974686472617720616d6f756e7420746f6f206c61726765000000000000006044820152fd5b50346103595760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610359576020600435610d6a81610422565b73ffffffffffffffffffffffffffffffffffffffff610d8761035e565b911660005260018252610dc28160406000209077ffffffffffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000006040519260401b16178152f35b503461035957610e0036610842565b6000805b838210610fdf57610e159150612701565b7fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972600080a16000805b848110610f4557505060008093815b818110610e8457610021868660007f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d8180a261280e565b610ee8610e9282848a612bb2565b610ebd610ea4610ea460208401612c54565b73ffffffffffffffffffffffffffffffffffffffff1690565b7f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d600080a280612c00565b906000915b808310610f0557505050610f0090611ef9565b610e4d565b90919497610f38610f32610f3e92610f2c8c610938610f258c898b6127c0565b918d61279e565b90611fa4565b99611ef9565b95611ef9565b9190610eed565b610f50818688612bb2565b6020610f68610f5f8380612c00565b92909301612c54565b9173ffffffffffffffffffffffffffffffffffffffff60009316905b828410610f9d5750505050610f9890611ef9565b610e3e565b90919294610f3881610fd285610fcb610fb9610fd7968d61279e565b51610fc58c8b8a6127c0565b85613a36565b908b613725565b611ef9565b929190610f84565b610fea828587612bb2565b90610ff58280612c00565b92611005610ea460208301612c54565b9173ffffffffffffffffffffffffffffffffffffffff831661102a6001821415612c5e565b61104b575b5050506110459161103f91611fa4565b91611ef9565b90610e04565b90959261106460409996939998959897888101906128ff565b92908a3b156103595789938b918a5193849283927fe3563a4f00000000000000000000000000000000000000000000000000000000845260049e8f8501936110ab94612df8565b03815a93600094fa9081611120575b5061110a5786517f86a9f75000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a16818a0190815281906020010390fd5b949750929550909350918161103f61104561102f565b8061112d6111339261057b565b80611303565b386110ba565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595761083e73ffffffffffffffffffffffffffffffffffffffff60043561118d81610422565b60806040928392835161119f81610535565b60009381858093528260208201528287820152826060820152015216815280602052209061122e65ffffffffffff60018351946111db86610535565b80546dffffffffffffffffffffffffffff8082168852607082901c60ff161515602089015260789190911c1685870152015463ffffffff8116606086015260201c16608084019065ffffffffffff169052565b5191829182919091608065ffffffffffff8160a08401956dffffffffffffffffffffffffffff808251168652602082015115156020870152604082015116604086015263ffffffff6060820151166060860152015116910152565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595773ffffffffffffffffffffffffffffffffffffffff6004356112da81610422565b16600052600060205260206dffffffffffffffffffffffffffff60406000205416604051908152f35b600091031261035957565b50346103595760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261035957602060405160018152f35b50346103595760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261035957600467ffffffffffffffff81358181116103595761139a90369084016106b9565b9050602435916113a983610422565b604435908111610359576113c090369085016106b9565b929091159081611512575b506114ab57601482101561141b575b610a3f836040519182917f08c379a0000000000000000000000000000000000000000000000000000000008352820160409060208152600060208201520190565b61142b6114379261143192613310565b9061331e565b60601c90565b3b156114445738806113da565b610a3f906040519182917f08c379a0000000000000000000000000000000000000000000000000000000008352820160609060208152601b60208201527f41413330207061796d6173746572206e6f74206465706c6f796564000000000060408201520190565b610a3f836040519182917f08c379a0000000000000000000000000000000000000000000000000000000008352820160609060208152601960208201527f41413230206163636f756e74206e6f74206465706c6f7965640000000000000060408201520190565b90503b15386113cb565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595760043567ffffffffffffffff81116103595761160a6020611574610a3f9336906004016106b9565b906115b37fbc79d710c27c417daea28cbdc16e638da2309ea2f5542218b102827c395d15d45473ffffffffffffffffffffffffffffffffffffffff1690565b9073ffffffffffffffffffffffffffffffffffffffff808316156116a8575b6000906040518097819682957f570e1a3600000000000000000000000000000000000000000000000000000000845260048401613509565b0393165af190811561169b575b60009161166d575b506040517f6ca7b80600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201529081906024820190565b61168e915060203d8111611694575b61168681836105ab565b8101906134f4565b3861161f565b503d61167c565b6116a3612aba565b611617565b737fc98430eaedbb6070b35b39d79872504908834892506115d2565b90816101609103126103595790565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc820112610359576004359067ffffffffffffffff8211610359576108b7916004016116c4565b5034610359576020611735611730366116d3565b613189565b604051908152f35b5060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595761002160043561177781610422565b611f38565b5034610359576000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126118f7573381528060205260408120600181019063ffffffff825416908115611899576118366117fb61185e936117ed6117e8855460ff9060701c1690565b6123a2565b65ffffffffffff4216612407565b84547fffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffff16602082901b69ffffffffffff000000001617909455565b7fffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff8154169055565b60405165ffffffffffff91909116815233907ffa9b3c14cc825c412c9ed81b3ba365a5b459439403f18829e572ed53a4180f0a90602090a280f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6e6f74207374616b6564000000000000000000000000000000000000000000006044820152fd5b80fd5b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595760043561193681610422565b610ccb73ffffffffffffffffffffffffffffffffffffffff6119783373ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b92611a3061199b610c2586546dffffffffffffffffffffffffffff9060781c1690565b946119a7861515612421565b611a08600182016119e065ffffffffffff6119cc835465ffffffffffff9060201c1690565b166119d8811515612486565b4210156124eb565b80547fffffffffffffffffffffffffffffffffffffffffffff00000000000000000000169055565b7fffffff0000000000000000000000000000ffffffffffffffffffffffffffffff8154169055565b6040805173ffffffffffffffffffffffffffffffffffffffff831681526020810186905233917fb7c918e0e249f999e965cafeb6c664271b3f4317d296461500e71da39f0cbda391a2600080809581948294165af1611a8d612550565b50612580565b50346103595760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595767ffffffffffffffff60043581811161035957611ae49036906004016116c4565b60243591611af183610422565b60443590811161035957611b0c610a3f9136906004016106b9565b611b1461267e565b611b1d85613620565b611b30611b2a828761382e565b90612f23565b94611b4082600092438452612ac7565b96438252819360609573ffffffffffffffffffffffffffffffffffffffff8316611bc7575b505050506080015193611b946040611b86602084015165ffffffffffff1690565b92015165ffffffffffff1690565b906040519687967f8b7ac98000000000000000000000000000000000000000000000000000000000885260048801612ec8565b83955083949650611be16040949293945180948193612eba565b03925af1906080611bf0612550565b929190388080611b65565b503461035957611c0a366116d3565b611c1261267e565b611c1b82613620565b611c25818361382e565b825160a00151919391611c529073ffffffffffffffffffffffffffffffffffffffff1661349f565b61349f565b90611c76611c4d855173ffffffffffffffffffffffffffffffffffffffff90511690565b94611c7f6132d8565b50611cae611c92604095868101906128ff565b90600060148310611e0b575061142b611c4d9261143192613310565b91611cb891612f23565b805173ffffffffffffffffffffffffffffffffffffffff169073ffffffffffffffffffffffffffffffffffffffff821660018114916080880151978781015191886020820151611d0d9065ffffffffffff1690565b91015165ffffffffffff16916060015192611d266105f9565b9a8b5260208b0152841515898b015265ffffffffffff1660608a015265ffffffffffff16608089015260a088015215159081611e02575b50611d975750610a3f92519485947fe0cff05f00000000000000000000000000000000000000000000000000000000865260048601613445565b9190610a3f93611da68461349f565b611dcd611db1610619565b73ffffffffffffffffffffffffffffffffffffffff9096168652565b6020850152519586957ffaecb4e4000000000000000000000000000000000000000000000000000000008752600487016133b3565b90501538611d5d565b91505061349f565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595773ffffffffffffffffffffffffffffffffffffffff600435611e6481610422565b16600052600060205260a0604060002065ffffffffffff60018254920154604051926dffffffffffffffffffffffffffff90818116855260ff8160701c161515602086015260781c16604084015263ffffffff8116606084015260201c166080820152f35b507f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6001907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611f27570190565b611f2f611ec9565b0190565b61044d335b73ffffffffffffffffffffffffffffffffffffffff90611f583482611fb9565b168060005260006020527f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c460206dffffffffffffffffffffffffffff60406000205416604051908152a2565b91908201809211611fb157565b61044d611ec9565b73ffffffffffffffffffffffffffffffffffffffff16600052600060205260406000206dffffffffffffffffffffffffffff8082541692830180931161209d575b80831161203f5761044d92166dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6465706f736974206f766572666c6f77000000000000000000000000000000006044820152fd5b6120a5611ec9565b611ffa565b156120b157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6d757374207370656369667920756e7374616b652064656c61790000000000006044820152fd5b1561211657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f63616e6e6f7420646563726561736520756e7374616b652074696d65000000006044820152fd5b1561217b57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6e6f207374616b652073706563696669656400000000000000000000000000006044820152fd5b156121e057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f7374616b65206f766572666c6f770000000000000000000000000000000000006044820152fd5b9065ffffffffffff6080600161044d9461229e6dffffffffffffffffffffffffffff86511682906dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b602085015115156eff000000000000000000000000000082549160701b16807fffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff83161783557fffffff000000000000000000000000000000ffffffffffffffffffffffffffff7cffffffffffffffffffffffffffff000000000000000000000000000000604089015160781b16921617178155019263ffffffff6060820151167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000008554161784550151167fffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffff69ffffffffffff0000000083549260201b169116179055565b156123a957565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f616c726561647920756e7374616b696e670000000000000000000000000000006044820152fd5b91909165ffffffffffff80809416911601918211611fb157565b1561242857565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4e6f207374616b6520746f2077697468647261770000000000000000000000006044820152fd5b1561248d57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6d7573742063616c6c20756e6c6f636b5374616b6528292066697273740000006044820152fd5b156124f257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f5374616b65207769746864726177616c206973206e6f742064756500000000006044820152fd5b3d1561257b573d9061256182610639565b9161256f60405193846105ab565b82523d6000602084013e565b606090565b1561258757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6661696c656420746f207769746864726177207374616b6500000000000000006044820152fd5b91908203918211611fb157565b156125f957565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6661696c656420746f20776974686472617700000000000000000000000000006044820152fd5b60209067ffffffffffffffff8111612671575b60051b0190565b612679610505565b61266a565b6040519061268b82610535565b604051608083610100830167ffffffffffffffff8111848210176126f4575b60405260009283815283602082015283604082015283606082015283838201528360a08201528360c08201528360e082015281528260208201528260408201528260608201520152565b6126fc610505565b6126aa565b9061270b82612657565b61271860405191826105ab565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06127468294612657565b019060005b82811061275757505050565b60209061276261267e565b8282850101520161274b565b507f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60209181518110156127b3575b60051b010190565b6127bb61276e565b6127ab565b9190811015612801575b60051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea181360301821215610359570190565b61280961276e565b6127ca565b73ffffffffffffffffffffffffffffffffffffffff1680156128a157600080809381935af161283b612550565b501561284357565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41413931206661696c65642073656e6420746f2062656e6566696369617279006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4141393020696e76616c69642062656e656669636961727900000000000000006044820152fd5b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610359570180359067ffffffffffffffff82116103595760200191813603831361035957565b90816020910312610359575190565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b60005b8381106129b15750506000910152565b81810151838201526020016129a1565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f6020936129fd8151809281875287808801910161299e565b0116010190565b90612a1e6080916108b796946101c080865285019161295f565b9360e0815173ffffffffffffffffffffffffffffffffffffffff80825116602087015260208201516040870152604082015160608701526060820151858701528482015160a087015260a08201511660c086015260c081015182860152015161010084015260208101516101208401526040810151610140840152606081015161016084015201516101808201526101a08184039101526129c1565b506040513d6000823e3d90fd5b612b17602091612ae060608501519160608101906128ff565b92909160405195869485947f1d73275600000000000000000000000000000000000000000000000000000000865260048601612a04565b03816000305af160009181612b82575b506108b757612b34612550565b60206000803e805115612b4957805190602001fd5b6040517f462c71b20000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604490fd5b612ba491925060203d8111612bab575b612b9c81836105ab565b810190612950565b9038612b27565b503d612b92565b9190811015612bf3575b60051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa181360301821215610359570190565b612bfb61276e565b612bbc565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610359570180359067ffffffffffffffff821161035957602001918160051b3603831361035957565b356108b781610422565b15612c6557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4141393620696e76616c69642061676772656761746f720000000000000000006044820152fd5b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18236030181121561035957016020813591019167ffffffffffffffff821161035957813603831361035957565b6108b791612d3e81612d248461045c565b73ffffffffffffffffffffffffffffffffffffffff169052565b60208201356020820152612dd9612d8a612d6f612d5e6040860186612cc3565b61016080604088015286019161295f565b612d7c6060860186612cc3565b90858303606087015261295f565b6080840135608084015260a084013560a084015260c084013560c084015260e084013560e08401526101008085013590840152610120612dcc81860186612cc3565b918584039086015261295f565b91612dea6101409182810190612cc3565b92909181850391015261295f565b949391929083604087016040885252606086019360608160051b8801019482600090815b848310612e3b575050505050508460206108b79596850391015261295f565b9091929394977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08b820301855288357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea184360301811215612eb65760019184612ea49201612d13565b98602090810196950193019190612e1c565b8280fd5b908092918237016000815290565b9290936108b796959260c0958552602085015265ffffffffffff8092166040850152166060830152151560808201528160a082015201906129c1565b60405190612f118261058f565b60006040838281528260208201520152565b612f38612f3e91612f32612f04565b50612fd5565b91612fd5565b9073ffffffffffffffffffffffffffffffffffffffff9182825116928315612fca575b65ffffffffffff928391826040816020850151169301511693836040816020840151169201511690808410612fc2575b50808511612fba575b5060405195612fa88761058f565b16855216602084015216604082015290565b935038612f9a565b925038612f91565b815181169350612f61565b612fdd612f04565b5065ffffffffffff808260a01c168015613029575b60405192612fff8461058f565b73ffffffffffffffffffffffffffffffffffffffff8116845260d01c602084015216604082015290565b5080612ff2565b9060206108b79281815201906129c1565b9291925a903033036130ea5782518151613077575b50506108b793613071915a9003608084015101933691610682565b90615193565b516130a29161309e9173ffffffffffffffffffffffffffffffffffffffff16905a91613148565b1590565b6130ad573880613056565b610a3f6130b861315a565b6040519182917f462c71b200000000000000000000000000000000000000000000000000000000835260048301613030565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4141393220696e7465726e616c2063616c6c206f6e6c790000000000000000006044820152fd5b9060009283809360208451940192f190565b3d610800808211613181575b50604051906020818301016040528082526000602083013e90565b905038613166565b61319f61319960408301836128ff565b906132cd565b906131b061319960608301836128ff565b906132666131c56131996101208401846128ff565b60405194859360208501956101008201359260e08301359260c08101359260a08201359260808301359273ffffffffffffffffffffffffffffffffffffffff60208201359135168c9693909a9998959261012098959273ffffffffffffffffffffffffffffffffffffffff6101408a019d168952602089015260408801526060870152608086015260a085015260c084015260e08301526101008201520152565b03916132987fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938481018352826105ab565b519020604080516020810192835230918101919091524660608201526080928301815290916132c790826105ab565b51902090565b816040519182372090565b604051906040820182811067ffffffffffffffff821117613303575b60405260006020838281520152565b61330b610505565b6132f4565b906014116103595790601490565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000903581811693926014811061335357505050565b60140360031b82901b16169150565b9060c060a06108b793805184526020810151602085015260408101511515604085015265ffffffffffff80606083015116606086015260808201511660808501520151918160a082015201906129c1565b929461341461044d956134026101009599986133f06133dc602097610140808c528b0190613362565b9b878a019060208091805184520151910152565b80516060890152602001516080880152565b805160a08701526020015160c0860152565b73ffffffffffffffffffffffffffffffffffffffff81511660e0850152015191019060208091805184520151910152565b61348e61044d9461347c61346760a0959998969960e0865260e0860190613362565b98602085019060208091805184520151910152565b80516060840152602001516080830152565b019060208091805184520151910152565b9073ffffffffffffffffffffffffffffffffffffffff6134bd6132d8565b9216600052600060205263ffffffff600160406000206dffffffffffffffffffffffffffff815460781c1685520154166020830152565b9081602091031261035957516108b781610422565b9160206108b793818152019161295f565b9061354973ffffffffffffffffffffffffffffffffffffffff916108b79795969460608552606085019161295f565b94166020820152604081850391015261295f565b60009060033d1161356a57565b905060046000803e60005160e01c90565b600060443d106108b7576040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc91823d016004833e815167ffffffffffffffff918282113d6024840111176135f7578184019485519384116135ff573d850101602084870101116135f757506108b7929101602001906105ab565b949350505050565b50949350505050565b9060406108b7926000815281602082015201906129c1565b61362d60408201826128ff565b61364561363984612c54565b936101208101906128ff565b9290303b15610359576000936136899160405196879586957f957122ab0000000000000000000000000000000000000000000000000000000087526004870161351a565b0381305afa9081613712575b5061044d5760016136a461355d565b6308c379a0146136bd575b6136b557565b61044d612aba565b6136c561357b565b806136d1575b506136af565b805160009250156136cb57610a3f906040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301613608565b8061112d61371f9261057b565b38613695565b9291906137319061376d565b909273ffffffffffffffffffffffffffffffffffffffff80809516911603610b1f57610ab1576137609061376d565b9116610a43576109b35750565b80156137c05761377c90612fd5565b73ffffffffffffffffffffffffffffffffffffffff65ffffffffffff8060408401511642119081156137b0575b5091511691565b90506020830151164210386137a9565b50600090600090565b156137d057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f41413934206761732076616c756573206f766572666c6f7700000000000000006044820152fd5b916000915a938151906138418282613d11565b61384a81613189565b60208401526138886effffffffffffffffffffffffffffff60808401516060850151176040850151176101008401359060e0850135171711156137c9565b61389182613dd3565b61389c818584613eab565b97906138cd61309e6138c2875173ffffffffffffffffffffffffffffffffffffffff1690565b602088015190613c3c565b6139c9576138da43600052565b73ffffffffffffffffffffffffffffffffffffffff61391260a0606097015173ffffffffffffffffffffffffffffffffffffffff1690565b166139af575b505a810360a0840135106139425760809360c092604087015260608601525a900391013501910152565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601e60408201527f41413430206f76657220766572696669636174696f6e4761734c696d6974000060608201520190565b909350816139c09297508584614c5b565b95909238613918565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601a60408201527f4141323520696e76616c6964206163636f756e74206e6f6e636500000000000060608201520190565b9290916000925a8251613a498184613d11565b613a5283613189565b6020850152613a906effffffffffffffffffffffffffffff60808301516060840151176040840151176101008601359060e0870135171711156137c9565b613a9981613dd3565b613aa58186868b614217565b9890613ad661309e613acb865173ffffffffffffffffffffffffffffffffffffffff1690565b602087015190613c3c565b613bce57613ae343600052565b73ffffffffffffffffffffffffffffffffffffffff613b1b60a0606096015173ffffffffffffffffffffffffffffffffffffffff1690565b16613bb3575b505a840360a086013510613b4d5750604085015260608401526080919060c0905a900391013501910152565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152601e60448201527f41413430206f76657220766572696669636174696f6e4761734c696d697400006064820152608490fd5b90925081613bc5929850868685614eee565b96909138613b21565b610a3f826040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601a60408201527f4141323520696e76616c6964206163636f756e74206e6f6e636500000000000060608201520190565b73ffffffffffffffffffffffffffffffffffffffff16600052600160205267ffffffffffffffff613c988260401c60406000209077ffffffffffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b91825492613ca584611ef9565b9055161490565b15613cb357565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4141393320696e76616c6964207061796d6173746572416e64446174610000006044820152fd5b613d8390613d3b613d2182612c54565b73ffffffffffffffffffffffffffffffffffffffff168452565b602081013560208401526080810135604084015260a0810135606084015260c0810135608084015260e081013560c084015261010081013560e08401526101208101906128ff565b908115613dc857613dad61143161142b8460a094613da8601461044d99981015613cac565b613310565b73ffffffffffffffffffffffffffffffffffffffff16910152565b505060a06000910152565b60a081015173ffffffffffffffffffffffffffffffffffffffff1615613e155760c060035b60ff60408401519116606084015102016080830151019101510290565b60c06001613df8565b613e3660409295949395606083526060830190612d13565b9460208201520152565b9061044d602f60405180947f414132332072657665727465643a2000000000000000000000000000000000006020830152613e84815180926020868601910161299e565b810103600f8101855201836105ab565b6040906108b79392815281602082015201906129c1565b916000926000925a93613f796020835193613eda855173ffffffffffffffffffffffffffffffffffffffff1690565b95613ef2613eeb60408301836128ff565b9084614482565b60a086015173ffffffffffffffffffffffffffffffffffffffff1690613f1743600052565b85809373ffffffffffffffffffffffffffffffffffffffff8094161598896141af575b60600151908601516040517f3a871cdd000000000000000000000000000000000000000000000000000000008152978896879586939060048501613e1e565b03938a1690f182918161418f575b506141865750600190613f9861355d565b6308c379a014614132575b506140c5575b613fb6575b50505a900391565b613fe09073ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b613ffb610c2582546dffffffffffffffffffffffffffff1690565b80831161405857614051926dffffffffffffffffffffffffffff9103166dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b3880613fae565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601760408201527f41413231206469646e2774207061792070726566756e6400000000000000000060608201520190565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601660408201527f4141323320726576657274656420286f72204f4f47290000000000000000000060608201520190565b61413a61357b565b90816141465750613fa3565b610a3f916141549150613e40565b6040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301613608565b9550613fa99050565b6141a891925060203d8111612bab57612b9c81836105ab565b9038613f87565b94506141f5610c256141e18c73ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b546dffffffffffffffffffffffffffff1690565b8b81111561420c5750856060835b96915050613f3a565b606087918d03614203565b90926000936000935a946142606020835193614247855173ffffffffffffffffffffffffffffffffffffffff1690565b95613ef261425860408301836128ff565b90848c6147e5565b03938a1690f1829181614462575b50614459575060019061427f61355d565b6308c379a014614403575b50614395575b61429e575b5050505a900391565b6142c89073ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b916142e4610c2584546dffffffffffffffffffffffffffff1690565b9081831161432f575082547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000169190036dffffffffffffffffffffffffffff16179055388080614295565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152601760448201527f41413231206469646e2774207061792070726566756e640000000000000000006064820152608490fd5b610a3f846040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601660408201527f4141323320726576657274656420286f72204f4f47290000000000000000000060608201520190565b61440b61357b565b9081614417575061428a565b86916144239150613e40565b90610a3f6040519283927f220266b600000000000000000000000000000000000000000000000000000000845260048401613e94565b96506142909050565b61447b91925060203d8111612bab57612b9c81836105ab565b903861426e565b90918061448e57505050565b81515173ffffffffffffffffffffffffffffffffffffffff1692833b6147785760006144ee7fbc79d710c27c417daea28cbdc16e638da2309ea2f5542218b102827c395d15d45473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff908181161561475d575b60209060608751015190604051809581937f570e1a3600000000000000000000000000000000000000000000000000000000835286836145518c8c60048401613509565b03941690f1918215614750575b600092614730575b508082169586156146c35716809503614656573b156145e95761143161142b7fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d936145b093613310565b602083810151935160a001516040805173ffffffffffffffffffffffffffffffffffffffff9485168152939091169183019190915290a3565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152602060408201527f4141313520696e6974436f6465206d757374206372656174652073656e64657260608201520190565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152602060408201527f4141313420696e6974436f6465206d7573742072657475726e2073656e64657260608201520190565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601b60408201527f4141313320696e6974436f6465206661696c6564206f72204f4f47000000000060608201520190565b61474991925060203d81116116945761168681836105ab565b9038614566565b614758612aba565b61455e565b50737fc98430eaedbb6070b35b39d79872504908834861450d565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601f60408201527f414131302073656e64657220616c726561647920636f6e73747275637465640060608201520190565b929091816147f4575b50505050565b82515173ffffffffffffffffffffffffffffffffffffffff1693843b614ae15760006148547fbc79d710c27c417daea28cbdc16e638da2309ea2f5542218b102827c395d15d45473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff9081811615614ac6575b60209060608851015190604051809581937f570e1a3600000000000000000000000000000000000000000000000000000000835286836148b78d8d60048401613509565b03941690f1918215614ab9575b600092614a99575b50808216968715614a2b57168096036149bd573b15614957575061143161142b7fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d9361491793613310565b602083810151935160a001516040805173ffffffffffffffffffffffffffffffffffffffff9485168152939091169183019190915290a3388080806147ee565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152602060448201527f4141313520696e6974436f6465206d757374206372656174652073656e6465726064820152608490fd5b610a3f826040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152602060408201527f4141313420696e6974436f6465206d7573742072657475726e2073656e64657260608201520190565b610a3f846040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601b60408201527f4141313320696e6974436f6465206661696c6564206f72204f4f47000000000060608201520190565b614ab291925060203d81116116945761168681836105ab565b90386148cc565b614ac1612aba565b6148c4565b50737fc98430eaedbb6070b35b39d798725049088348614873565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152601f60448201527f414131302073656e64657220616c726561647920636f6e7374727563746564006064820152608490fd5b15614b4e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4141343120746f6f206c6974746c6520766572696669636174696f6e476173006044820152fd5b919060408382031261035957825167ffffffffffffffff81116103595783019080601f8301121561035957815191614be383610639565b91614bf160405193846105ab565b8383526020848301011161035957602092614c119184808501910161299e565b92015190565b9061044d602f60405180947f414133332072657665727465643a2000000000000000000000000000000000006020830152613e84815180926020868601910161299e565b939192606094600094600093805192614c9a60a08a86015195614c7f888811614b47565b015173ffffffffffffffffffffffffffffffffffffffff1690565b91614cc58373ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b94614ce1610c2587546dffffffffffffffffffffffffffff1690565b96858810614e815773ffffffffffffffffffffffffffffffffffffffff60208a9894614d578a966dffffffffffffffffffffffffffff8b614d909e03166dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b015194604051998a98899788937ff465c77e00000000000000000000000000000000000000000000000000000000855260048501613e1e565b0395169103f1908183918493614e5b575b50614e54575050600190614db361355d565b6308c379a014614e32575b50614dc557565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601660408201527f4141333320726576657274656420286f72204f4f47290000000000000000000060608201520190565b614e3a61357b565b9081614e465750614dbe565b610a3f916141549150614c17565b9450925050565b909250614e7a91503d8085833e614e7281836105ab565b810190614bac565b9138614da1565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601e60408201527f41413331207061796d6173746572206465706f73697420746f6f206c6f77000060608201520190565b919492939093606095600095600093825190614f1560a08b84015193614c7f848611614b47565b93614f408573ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b614f5b610c2582546dffffffffffffffffffffffffffff1690565b8781106150b6579273ffffffffffffffffffffffffffffffffffffffff60208a98969394614d578a966dffffffffffffffffffffffffffff8d614fd59e9c9a03166dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b0395169103f1908183918493615098575b50615090575050600190614ff861355d565b6308c379a014615071575b5061500b5750565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152601660448201527f4141333320726576657274656420286f72204f4f4729000000000000000000006064820152608490fd5b61507961357b565b90816150855750615003565b614423925050614c17565b955093505050565b9092506150af91503d8085833e614e7281836105ab565b9138614fe6565b610a3f8a6040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601e60408201527f41413331207061796d6173746572206465706f73697420746f6f206c6f77000060608201520190565b929190615142604091600086526060602087015260608601906129c1565b930152565b9060a06108b7926000815260606020820152601460608201527f4141353020706f73744f70207265766572746564000000000000000000000000608082015281604082015201906129c1565b9291905a938051906151a48261546d565b9260a08301946151c8865173ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff92818416918261533457505050615208845173ffffffffffffffffffffffffffffffffffffffff1690565b975b5a900301938402966040830192888451106152c7576152506020928a7f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f96510390611fb9565b0151926152c26020615294615279845173ffffffffffffffffffffffffffffffffffffffff1690565b985173ffffffffffffffffffffffffffffffffffffffff1690565b9201519589846040519586951699169784606091949392608082019582526001602083015260408201520152565b0390a4565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152602060408201527f414135312070726566756e642062656c6f772061637475616c476173436f737460608201520190565b99918151615344575b505061520a565b606087015191813b15610359576153929289600080946040518097819682957fa9a234090000000000000000000000000000000000000000000000000000000084528c029060048401615124565b0393f1908161545a575b50615453576153a9612550565b8051156153e657610a3f906040519182917f65c8fd4d00000000000000000000000000000000000000000000000000000000835260048301615147565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601260408201527f4141353020706f73744f7020726576657274000000000000000000000000000060608201520190565b388061533d565b8061112d6154679261057b565b3861539c565b60e060c08201519101518082146154915748018082101561548c575090565b905090565b509056fea2646970667358221220e12e6fb5372ff2fb32710fce9ddbe61b2ddcb627bb43d117a1c09e2001aa8d4864736f6c63430008110033","sourceMap":"1256:33277:16:-:0;;;;;;;1716:1:12;1821:22;1716:1;1256:33277:16;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610023575b361561001957600080fd5b610021611f33565b005b60003560e01c80630396cb60146101b35780630bd28e3b146101aa5780631b2e01b8146101a15780631d732756146101985780631fad948c1461018f578063205c28781461018657806335567e1a1461017d5780634b1d7cf5146101745780635287ce121461016b57806370a08231146101625780638f41ec5a14610159578063957122ab146101505780639b249f6914610147578063a61935311461013e578063b760faf914610135578063bb9fe6bf1461012c578063c23a5cea14610123578063d6383f941461011a578063ee219423146101115763fc7e286d0361000e5761010c611e13565b61000e565b5061010c611bfb565b5061010c611a93565b5061010c6118fa565b5061010c61177c565b5061010c61173d565b5061010c61171c565b5061010c61151c565b5061010c611349565b5061010c61130e565b5061010c611289565b5061010c611139565b5061010c610df1565b5061010c610d2c565b5061010c610b8d565b5061010c6108ba565b5061010c6106e7565b5061010c610467565b5061010c610385565b5060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595760043563ffffffff8116808203610359576103547fa5ae833d0bb1dcd632d98a8b70973e8516812898e19bf27b70071ebc8dc52c01916102716102413373ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b9161024d8115156120aa565b61026a610261600185015463ffffffff1690565b63ffffffff1690565b111561210f565b54926103366dffffffffffffffffffffffffffff946102f461029834888460781c16611fa4565b966102a4881515612174565b6102b0818911156121d9565b6102d4816102bc6105ec565b941684906dffffffffffffffffffffffffffff169052565b6001602084015287166dffffffffffffffffffffffffffff166040830152565b63ffffffff83166060820152600060808201526103313373ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b61223e565b6040805194855263ffffffff90911660208501523393918291820190565b0390a2005b600080fd5b6024359077ffffffffffffffffffffffffffffffffffffffffffffffff8216820361035957565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595760043577ffffffffffffffffffffffffffffffffffffffffffffffff81168103610359576104149033600052600160205260406000209077ffffffffffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b61041e8154611ef9565b9055005b73ffffffffffffffffffffffffffffffffffffffff81160361035957565b6024359061044d82610422565b565b60c4359061044d82610422565b359061044d82610422565b50346103595760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595760206104fc6004356104a881610422565b73ffffffffffffffffffffffffffffffffffffffff6104c561035e565b91166000526001835260406000209077ffffffffffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b54604051908152f35b507f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60a0810190811067ffffffffffffffff82111761055157604052565b610559610505565b604052565b610100810190811067ffffffffffffffff82111761055157604052565b67ffffffffffffffff811161055157604052565b6060810190811067ffffffffffffffff82111761055157604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761055157604052565b6040519061044d82610535565b6040519060c0820182811067ffffffffffffffff82111761055157604052565b604051906040820182811067ffffffffffffffff82111761055157604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60209267ffffffffffffffff8111610675575b01160190565b61067d610505565b61066f565b92919261068e82610639565b9161069c60405193846105ab565b829481845281830111610359578281602093846000960137010152565b9181601f840112156103595782359167ffffffffffffffff8311610359576020838186019501011161035957565b5034610359576101c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595767ffffffffffffffff60043581811161035957366023820112156103595761074a903690602481600401359101610682565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36016101808112610359576101006040519161078783610535565b12610359576040516107988161055e565b6107a0610440565b815260443560208201526064356040820152608435606082015260a43560808201526107ca61044f565b60a082015260e43560c08201526101043560e082015281526101243560208201526101443560408201526101643560608201526101843560808201526101a4359182116103595761083e9261082661082e9336906004016106b9565b929091613041565b6040519081529081906020820190565b0390f35b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126103595760043567ffffffffffffffff9283821161035957806023830112156103595781600401359384116103595760248460051b830101116103595760240191906024356108b781610422565b90565b5034610359576108c936610842565b6108d4829392612701565b60005b84811061094957506000927fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f9728480a183915b85831061091a57610021858561280e565b90919360019061093f61092e8789876127c0565b610938888661279e565b5190612ac7565b0194019190610909565b61097461096d61095b8385979561279e565b516109678489876127c0565b84613a36565b919061376d565b73ffffffffffffffffffffffffffffffffffffffff92918316610b1f57610ab15761099e9061376d565b9116610a43576109b3576001019290926108d7565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152602160448201527f41413332207061796d61737465722065787069726564206f72206e6f7420647560648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a490fd5b0390fd5b610a3f826040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601460408201527f41413334207369676e6174757265206572726f7200000000000000000000000060608201520190565b610a3f836040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601760408201527f414132322065787069726564206f72206e6f742064756500000000000000000060608201520190565b610a3f846040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601460408201527f41413234207369676e6174757265206572726f7200000000000000000000000060608201520190565b50346103595760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261035957600435610bc981610422565b6024359060009133835282602052604083206dffffffffffffffffffffffffffff81541692838311610cce57848373ffffffffffffffffffffffffffffffffffffffff829593610c718496610c38610c258798610ccb9c6125e5565b6dffffffffffffffffffffffffffff1690565b6dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b6040805173ffffffffffffffffffffffffffffffffffffffff831681526020810185905233917fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb91a2165af1610cc5612550565b506125f2565b80f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f576974686472617720616d6f756e7420746f6f206c61726765000000000000006044820152fd5b50346103595760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610359576020600435610d6a81610422565b73ffffffffffffffffffffffffffffffffffffffff610d8761035e565b911660005260018252610dc28160406000209077ffffffffffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000006040519260401b16178152f35b503461035957610e0036610842565b6000805b838210610fdf57610e159150612701565b7fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972600080a16000805b848110610f4557505060008093815b818110610e8457610021868660007f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d8180a261280e565b610ee8610e9282848a612bb2565b610ebd610ea4610ea460208401612c54565b73ffffffffffffffffffffffffffffffffffffffff1690565b7f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d600080a280612c00565b906000915b808310610f0557505050610f0090611ef9565b610e4d565b90919497610f38610f32610f3e92610f2c8c610938610f258c898b6127c0565b918d61279e565b90611fa4565b99611ef9565b95611ef9565b9190610eed565b610f50818688612bb2565b6020610f68610f5f8380612c00565b92909301612c54565b9173ffffffffffffffffffffffffffffffffffffffff60009316905b828410610f9d5750505050610f9890611ef9565b610e3e565b90919294610f3881610fd285610fcb610fb9610fd7968d61279e565b51610fc58c8b8a6127c0565b85613a36565b908b613725565b611ef9565b929190610f84565b610fea828587612bb2565b90610ff58280612c00565b92611005610ea460208301612c54565b9173ffffffffffffffffffffffffffffffffffffffff831661102a6001821415612c5e565b61104b575b5050506110459161103f91611fa4565b91611ef9565b90610e04565b90959261106460409996939998959897888101906128ff565b92908a3b156103595789938b918a5193849283927fe3563a4f00000000000000000000000000000000000000000000000000000000845260049e8f8501936110ab94612df8565b03815a93600094fa9081611120575b5061110a5786517f86a9f75000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a16818a0190815281906020010390fd5b949750929550909350918161103f61104561102f565b8061112d6111339261057b565b80611303565b386110ba565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595761083e73ffffffffffffffffffffffffffffffffffffffff60043561118d81610422565b60806040928392835161119f81610535565b60009381858093528260208201528287820152826060820152015216815280602052209061122e65ffffffffffff60018351946111db86610535565b80546dffffffffffffffffffffffffffff8082168852607082901c60ff161515602089015260789190911c1685870152015463ffffffff8116606086015260201c16608084019065ffffffffffff169052565b5191829182919091608065ffffffffffff8160a08401956dffffffffffffffffffffffffffff808251168652602082015115156020870152604082015116604086015263ffffffff6060820151166060860152015116910152565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595773ffffffffffffffffffffffffffffffffffffffff6004356112da81610422565b16600052600060205260206dffffffffffffffffffffffffffff60406000205416604051908152f35b600091031261035957565b50346103595760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261035957602060405160018152f35b50346103595760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261035957600467ffffffffffffffff81358181116103595761139a90369084016106b9565b9050602435916113a983610422565b604435908111610359576113c090369085016106b9565b929091159081611512575b506114ab57601482101561141b575b610a3f836040519182917f08c379a0000000000000000000000000000000000000000000000000000000008352820160409060208152600060208201520190565b61142b6114379261143192613310565b9061331e565b60601c90565b3b156114445738806113da565b610a3f906040519182917f08c379a0000000000000000000000000000000000000000000000000000000008352820160609060208152601b60208201527f41413330207061796d6173746572206e6f74206465706c6f796564000000000060408201520190565b610a3f836040519182917f08c379a0000000000000000000000000000000000000000000000000000000008352820160609060208152601960208201527f41413230206163636f756e74206e6f74206465706c6f7965640000000000000060408201520190565b90503b15386113cb565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595760043567ffffffffffffffff81116103595761160a6020611574610a3f9336906004016106b9565b906115b37fbc79d710c27c417daea28cbdc16e638da2309ea2f5542218b102827c395d15d45473ffffffffffffffffffffffffffffffffffffffff1690565b9073ffffffffffffffffffffffffffffffffffffffff808316156116a8575b6000906040518097819682957f570e1a3600000000000000000000000000000000000000000000000000000000845260048401613509565b0393165af190811561169b575b60009161166d575b506040517f6ca7b80600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201529081906024820190565b61168e915060203d8111611694575b61168681836105ab565b8101906134f4565b3861161f565b503d61167c565b6116a3612aba565b611617565b737fc98430eaedbb6070b35b39d79872504908834892506115d2565b90816101609103126103595790565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc820112610359576004359067ffffffffffffffff8211610359576108b7916004016116c4565b5034610359576020611735611730366116d3565b613189565b604051908152f35b5060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595761002160043561177781610422565b611f38565b5034610359576000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126118f7573381528060205260408120600181019063ffffffff825416908115611899576118366117fb61185e936117ed6117e8855460ff9060701c1690565b6123a2565b65ffffffffffff4216612407565b84547fffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffff16602082901b69ffffffffffff000000001617909455565b7fffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff8154169055565b60405165ffffffffffff91909116815233907ffa9b3c14cc825c412c9ed81b3ba365a5b459439403f18829e572ed53a4180f0a90602090a280f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6e6f74207374616b6564000000000000000000000000000000000000000000006044820152fd5b80fd5b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595760043561193681610422565b610ccb73ffffffffffffffffffffffffffffffffffffffff6119783373ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b92611a3061199b610c2586546dffffffffffffffffffffffffffff9060781c1690565b946119a7861515612421565b611a08600182016119e065ffffffffffff6119cc835465ffffffffffff9060201c1690565b166119d8811515612486565b4210156124eb565b80547fffffffffffffffffffffffffffffffffffffffffffff00000000000000000000169055565b7fffffff0000000000000000000000000000ffffffffffffffffffffffffffffff8154169055565b6040805173ffffffffffffffffffffffffffffffffffffffff831681526020810186905233917fb7c918e0e249f999e965cafeb6c664271b3f4317d296461500e71da39f0cbda391a2600080809581948294165af1611a8d612550565b50612580565b50346103595760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595767ffffffffffffffff60043581811161035957611ae49036906004016116c4565b60243591611af183610422565b60443590811161035957611b0c610a3f9136906004016106b9565b611b1461267e565b611b1d85613620565b611b30611b2a828761382e565b90612f23565b94611b4082600092438452612ac7565b96438252819360609573ffffffffffffffffffffffffffffffffffffffff8316611bc7575b505050506080015193611b946040611b86602084015165ffffffffffff1690565b92015165ffffffffffff1690565b906040519687967f8b7ac98000000000000000000000000000000000000000000000000000000000885260048801612ec8565b83955083949650611be16040949293945180948193612eba565b03925af1906080611bf0612550565b929190388080611b65565b503461035957611c0a366116d3565b611c1261267e565b611c1b82613620565b611c25818361382e565b825160a00151919391611c529073ffffffffffffffffffffffffffffffffffffffff1661349f565b61349f565b90611c76611c4d855173ffffffffffffffffffffffffffffffffffffffff90511690565b94611c7f6132d8565b50611cae611c92604095868101906128ff565b90600060148310611e0b575061142b611c4d9261143192613310565b91611cb891612f23565b805173ffffffffffffffffffffffffffffffffffffffff169073ffffffffffffffffffffffffffffffffffffffff821660018114916080880151978781015191886020820151611d0d9065ffffffffffff1690565b91015165ffffffffffff16916060015192611d266105f9565b9a8b5260208b0152841515898b015265ffffffffffff1660608a015265ffffffffffff16608089015260a088015215159081611e02575b50611d975750610a3f92519485947fe0cff05f00000000000000000000000000000000000000000000000000000000865260048601613445565b9190610a3f93611da68461349f565b611dcd611db1610619565b73ffffffffffffffffffffffffffffffffffffffff9096168652565b6020850152519586957ffaecb4e4000000000000000000000000000000000000000000000000000000008752600487016133b3565b90501538611d5d565b91505061349f565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595773ffffffffffffffffffffffffffffffffffffffff600435611e6481610422565b16600052600060205260a0604060002065ffffffffffff60018254920154604051926dffffffffffffffffffffffffffff90818116855260ff8160701c161515602086015260781c16604084015263ffffffff8116606084015260201c166080820152f35b507f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6001907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611f27570190565b611f2f611ec9565b0190565b61044d335b73ffffffffffffffffffffffffffffffffffffffff90611f583482611fb9565b168060005260006020527f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c460206dffffffffffffffffffffffffffff60406000205416604051908152a2565b91908201809211611fb157565b61044d611ec9565b73ffffffffffffffffffffffffffffffffffffffff16600052600060205260406000206dffffffffffffffffffffffffffff8082541692830180931161209d575b80831161203f5761044d92166dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6465706f736974206f766572666c6f77000000000000000000000000000000006044820152fd5b6120a5611ec9565b611ffa565b156120b157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6d757374207370656369667920756e7374616b652064656c61790000000000006044820152fd5b1561211657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f63616e6e6f7420646563726561736520756e7374616b652074696d65000000006044820152fd5b1561217b57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6e6f207374616b652073706563696669656400000000000000000000000000006044820152fd5b156121e057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f7374616b65206f766572666c6f770000000000000000000000000000000000006044820152fd5b9065ffffffffffff6080600161044d9461229e6dffffffffffffffffffffffffffff86511682906dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b602085015115156eff000000000000000000000000000082549160701b16807fffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff83161783557fffffff000000000000000000000000000000ffffffffffffffffffffffffffff7cffffffffffffffffffffffffffff000000000000000000000000000000604089015160781b16921617178155019263ffffffff6060820151167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000008554161784550151167fffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffff69ffffffffffff0000000083549260201b169116179055565b156123a957565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f616c726561647920756e7374616b696e670000000000000000000000000000006044820152fd5b91909165ffffffffffff80809416911601918211611fb157565b1561242857565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4e6f207374616b6520746f2077697468647261770000000000000000000000006044820152fd5b1561248d57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6d7573742063616c6c20756e6c6f636b5374616b6528292066697273740000006044820152fd5b156124f257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f5374616b65207769746864726177616c206973206e6f742064756500000000006044820152fd5b3d1561257b573d9061256182610639565b9161256f60405193846105ab565b82523d6000602084013e565b606090565b1561258757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6661696c656420746f207769746864726177207374616b6500000000000000006044820152fd5b91908203918211611fb157565b156125f957565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6661696c656420746f20776974686472617700000000000000000000000000006044820152fd5b60209067ffffffffffffffff8111612671575b60051b0190565b612679610505565b61266a565b6040519061268b82610535565b604051608083610100830167ffffffffffffffff8111848210176126f4575b60405260009283815283602082015283604082015283606082015283838201528360a08201528360c08201528360e082015281528260208201528260408201528260608201520152565b6126fc610505565b6126aa565b9061270b82612657565b61271860405191826105ab565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06127468294612657565b019060005b82811061275757505050565b60209061276261267e565b8282850101520161274b565b507f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60209181518110156127b3575b60051b010190565b6127bb61276e565b6127ab565b9190811015612801575b60051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea181360301821215610359570190565b61280961276e565b6127ca565b73ffffffffffffffffffffffffffffffffffffffff1680156128a157600080809381935af161283b612550565b501561284357565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41413931206661696c65642073656e6420746f2062656e6566696369617279006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4141393020696e76616c69642062656e656669636961727900000000000000006044820152fd5b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610359570180359067ffffffffffffffff82116103595760200191813603831361035957565b90816020910312610359575190565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b60005b8381106129b15750506000910152565b81810151838201526020016129a1565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f6020936129fd8151809281875287808801910161299e565b0116010190565b90612a1e6080916108b796946101c080865285019161295f565b9360e0815173ffffffffffffffffffffffffffffffffffffffff80825116602087015260208201516040870152604082015160608701526060820151858701528482015160a087015260a08201511660c086015260c081015182860152015161010084015260208101516101208401526040810151610140840152606081015161016084015201516101808201526101a08184039101526129c1565b506040513d6000823e3d90fd5b612b17602091612ae060608501519160608101906128ff565b92909160405195869485947f1d73275600000000000000000000000000000000000000000000000000000000865260048601612a04565b03816000305af160009181612b82575b506108b757612b34612550565b60206000803e805115612b4957805190602001fd5b6040517f462c71b20000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604490fd5b612ba491925060203d8111612bab575b612b9c81836105ab565b810190612950565b9038612b27565b503d612b92565b9190811015612bf3575b60051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa181360301821215610359570190565b612bfb61276e565b612bbc565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610359570180359067ffffffffffffffff821161035957602001918160051b3603831361035957565b356108b781610422565b15612c6557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4141393620696e76616c69642061676772656761746f720000000000000000006044820152fd5b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18236030181121561035957016020813591019167ffffffffffffffff821161035957813603831361035957565b6108b791612d3e81612d248461045c565b73ffffffffffffffffffffffffffffffffffffffff169052565b60208201356020820152612dd9612d8a612d6f612d5e6040860186612cc3565b61016080604088015286019161295f565b612d7c6060860186612cc3565b90858303606087015261295f565b6080840135608084015260a084013560a084015260c084013560c084015260e084013560e08401526101008085013590840152610120612dcc81860186612cc3565b918584039086015261295f565b91612dea6101409182810190612cc3565b92909181850391015261295f565b949391929083604087016040885252606086019360608160051b8801019482600090815b848310612e3b575050505050508460206108b79596850391015261295f565b9091929394977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08b820301855288357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea184360301811215612eb65760019184612ea49201612d13565b98602090810196950193019190612e1c565b8280fd5b908092918237016000815290565b9290936108b796959260c0958552602085015265ffffffffffff8092166040850152166060830152151560808201528160a082015201906129c1565b60405190612f118261058f565b60006040838281528260208201520152565b612f38612f3e91612f32612f04565b50612fd5565b91612fd5565b9073ffffffffffffffffffffffffffffffffffffffff9182825116928315612fca575b65ffffffffffff928391826040816020850151169301511693836040816020840151169201511690808410612fc2575b50808511612fba575b5060405195612fa88761058f565b16855216602084015216604082015290565b935038612f9a565b925038612f91565b815181169350612f61565b612fdd612f04565b5065ffffffffffff808260a01c168015613029575b60405192612fff8461058f565b73ffffffffffffffffffffffffffffffffffffffff8116845260d01c602084015216604082015290565b5080612ff2565b9060206108b79281815201906129c1565b9291925a903033036130ea5782518151613077575b50506108b793613071915a9003608084015101933691610682565b90615193565b516130a29161309e9173ffffffffffffffffffffffffffffffffffffffff16905a91613148565b1590565b6130ad573880613056565b610a3f6130b861315a565b6040519182917f462c71b200000000000000000000000000000000000000000000000000000000835260048301613030565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4141393220696e7465726e616c2063616c6c206f6e6c790000000000000000006044820152fd5b9060009283809360208451940192f190565b3d610800808211613181575b50604051906020818301016040528082526000602083013e90565b905038613166565b61319f61319960408301836128ff565b906132cd565b906131b061319960608301836128ff565b906132666131c56131996101208401846128ff565b60405194859360208501956101008201359260e08301359260c08101359260a08201359260808301359273ffffffffffffffffffffffffffffffffffffffff60208201359135168c9693909a9998959261012098959273ffffffffffffffffffffffffffffffffffffffff6101408a019d168952602089015260408801526060870152608086015260a085015260c084015260e08301526101008201520152565b03916132987fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938481018352826105ab565b519020604080516020810192835230918101919091524660608201526080928301815290916132c790826105ab565b51902090565b816040519182372090565b604051906040820182811067ffffffffffffffff821117613303575b60405260006020838281520152565b61330b610505565b6132f4565b906014116103595790601490565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000903581811693926014811061335357505050565b60140360031b82901b16169150565b9060c060a06108b793805184526020810151602085015260408101511515604085015265ffffffffffff80606083015116606086015260808201511660808501520151918160a082015201906129c1565b929461341461044d956134026101009599986133f06133dc602097610140808c528b0190613362565b9b878a019060208091805184520151910152565b80516060890152602001516080880152565b805160a08701526020015160c0860152565b73ffffffffffffffffffffffffffffffffffffffff81511660e0850152015191019060208091805184520151910152565b61348e61044d9461347c61346760a0959998969960e0865260e0860190613362565b98602085019060208091805184520151910152565b80516060840152602001516080830152565b019060208091805184520151910152565b9073ffffffffffffffffffffffffffffffffffffffff6134bd6132d8565b9216600052600060205263ffffffff600160406000206dffffffffffffffffffffffffffff815460781c1685520154166020830152565b9081602091031261035957516108b781610422565b9160206108b793818152019161295f565b9061354973ffffffffffffffffffffffffffffffffffffffff916108b79795969460608552606085019161295f565b94166020820152604081850391015261295f565b60009060033d1161356a57565b905060046000803e60005160e01c90565b600060443d106108b7576040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc91823d016004833e815167ffffffffffffffff918282113d6024840111176135f7578184019485519384116135ff573d850101602084870101116135f757506108b7929101602001906105ab565b949350505050565b50949350505050565b9060406108b7926000815281602082015201906129c1565b61362d60408201826128ff565b61364561363984612c54565b936101208101906128ff565b9290303b15610359576000936136899160405196879586957f957122ab0000000000000000000000000000000000000000000000000000000087526004870161351a565b0381305afa9081613712575b5061044d5760016136a461355d565b6308c379a0146136bd575b6136b557565b61044d612aba565b6136c561357b565b806136d1575b506136af565b805160009250156136cb57610a3f906040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301613608565b8061112d61371f9261057b565b38613695565b9291906137319061376d565b909273ffffffffffffffffffffffffffffffffffffffff80809516911603610b1f57610ab1576137609061376d565b9116610a43576109b35750565b80156137c05761377c90612fd5565b73ffffffffffffffffffffffffffffffffffffffff65ffffffffffff8060408401511642119081156137b0575b5091511691565b90506020830151164210386137a9565b50600090600090565b156137d057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f41413934206761732076616c756573206f766572666c6f7700000000000000006044820152fd5b916000915a938151906138418282613d11565b61384a81613189565b60208401526138886effffffffffffffffffffffffffffff60808401516060850151176040850151176101008401359060e0850135171711156137c9565b61389182613dd3565b61389c818584613eab565b97906138cd61309e6138c2875173ffffffffffffffffffffffffffffffffffffffff1690565b602088015190613c3c565b6139c9576138da43600052565b73ffffffffffffffffffffffffffffffffffffffff61391260a0606097015173ffffffffffffffffffffffffffffffffffffffff1690565b166139af575b505a810360a0840135106139425760809360c092604087015260608601525a900391013501910152565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601e60408201527f41413430206f76657220766572696669636174696f6e4761734c696d6974000060608201520190565b909350816139c09297508584614c5b565b95909238613918565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601a60408201527f4141323520696e76616c6964206163636f756e74206e6f6e636500000000000060608201520190565b9290916000925a8251613a498184613d11565b613a5283613189565b6020850152613a906effffffffffffffffffffffffffffff60808301516060840151176040840151176101008601359060e0870135171711156137c9565b613a9981613dd3565b613aa58186868b614217565b9890613ad661309e613acb865173ffffffffffffffffffffffffffffffffffffffff1690565b602087015190613c3c565b613bce57613ae343600052565b73ffffffffffffffffffffffffffffffffffffffff613b1b60a0606096015173ffffffffffffffffffffffffffffffffffffffff1690565b16613bb3575b505a840360a086013510613b4d5750604085015260608401526080919060c0905a900391013501910152565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152601e60448201527f41413430206f76657220766572696669636174696f6e4761734c696d697400006064820152608490fd5b90925081613bc5929850868685614eee565b96909138613b21565b610a3f826040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601a60408201527f4141323520696e76616c6964206163636f756e74206e6f6e636500000000000060608201520190565b73ffffffffffffffffffffffffffffffffffffffff16600052600160205267ffffffffffffffff613c988260401c60406000209077ffffffffffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b91825492613ca584611ef9565b9055161490565b15613cb357565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4141393320696e76616c6964207061796d6173746572416e64446174610000006044820152fd5b613d8390613d3b613d2182612c54565b73ffffffffffffffffffffffffffffffffffffffff168452565b602081013560208401526080810135604084015260a0810135606084015260c0810135608084015260e081013560c084015261010081013560e08401526101208101906128ff565b908115613dc857613dad61143161142b8460a094613da8601461044d99981015613cac565b613310565b73ffffffffffffffffffffffffffffffffffffffff16910152565b505060a06000910152565b60a081015173ffffffffffffffffffffffffffffffffffffffff1615613e155760c060035b60ff60408401519116606084015102016080830151019101510290565b60c06001613df8565b613e3660409295949395606083526060830190612d13565b9460208201520152565b9061044d602f60405180947f414132332072657665727465643a2000000000000000000000000000000000006020830152613e84815180926020868601910161299e565b810103600f8101855201836105ab565b6040906108b79392815281602082015201906129c1565b916000926000925a93613f796020835193613eda855173ffffffffffffffffffffffffffffffffffffffff1690565b95613ef2613eeb60408301836128ff565b9084614482565b60a086015173ffffffffffffffffffffffffffffffffffffffff1690613f1743600052565b85809373ffffffffffffffffffffffffffffffffffffffff8094161598896141af575b60600151908601516040517f3a871cdd000000000000000000000000000000000000000000000000000000008152978896879586939060048501613e1e565b03938a1690f182918161418f575b506141865750600190613f9861355d565b6308c379a014614132575b506140c5575b613fb6575b50505a900391565b613fe09073ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b613ffb610c2582546dffffffffffffffffffffffffffff1690565b80831161405857614051926dffffffffffffffffffffffffffff9103166dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b3880613fae565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601760408201527f41413231206469646e2774207061792070726566756e6400000000000000000060608201520190565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601660408201527f4141323320726576657274656420286f72204f4f47290000000000000000000060608201520190565b61413a61357b565b90816141465750613fa3565b610a3f916141549150613e40565b6040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301613608565b9550613fa99050565b6141a891925060203d8111612bab57612b9c81836105ab565b9038613f87565b94506141f5610c256141e18c73ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b546dffffffffffffffffffffffffffff1690565b8b81111561420c5750856060835b96915050613f3a565b606087918d03614203565b90926000936000935a946142606020835193614247855173ffffffffffffffffffffffffffffffffffffffff1690565b95613ef261425860408301836128ff565b90848c6147e5565b03938a1690f1829181614462575b50614459575060019061427f61355d565b6308c379a014614403575b50614395575b61429e575b5050505a900391565b6142c89073ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b916142e4610c2584546dffffffffffffffffffffffffffff1690565b9081831161432f575082547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000169190036dffffffffffffffffffffffffffff16179055388080614295565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152601760448201527f41413231206469646e2774207061792070726566756e640000000000000000006064820152608490fd5b610a3f846040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601660408201527f4141323320726576657274656420286f72204f4f47290000000000000000000060608201520190565b61440b61357b565b9081614417575061428a565b86916144239150613e40565b90610a3f6040519283927f220266b600000000000000000000000000000000000000000000000000000000845260048401613e94565b96506142909050565b61447b91925060203d8111612bab57612b9c81836105ab565b903861426e565b90918061448e57505050565b81515173ffffffffffffffffffffffffffffffffffffffff1692833b6147785760006144ee7fbc79d710c27c417daea28cbdc16e638da2309ea2f5542218b102827c395d15d45473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff908181161561475d575b60209060608751015190604051809581937f570e1a3600000000000000000000000000000000000000000000000000000000835286836145518c8c60048401613509565b03941690f1918215614750575b600092614730575b508082169586156146c35716809503614656573b156145e95761143161142b7fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d936145b093613310565b602083810151935160a001516040805173ffffffffffffffffffffffffffffffffffffffff9485168152939091169183019190915290a3565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152602060408201527f4141313520696e6974436f6465206d757374206372656174652073656e64657260608201520190565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152602060408201527f4141313420696e6974436f6465206d7573742072657475726e2073656e64657260608201520190565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601b60408201527f4141313320696e6974436f6465206661696c6564206f72204f4f47000000000060608201520190565b61474991925060203d81116116945761168681836105ab565b9038614566565b614758612aba565b61455e565b50737fc98430eaedbb6070b35b39d79872504908834861450d565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601f60408201527f414131302073656e64657220616c726561647920636f6e73747275637465640060608201520190565b929091816147f4575b50505050565b82515173ffffffffffffffffffffffffffffffffffffffff1693843b614ae15760006148547fbc79d710c27c417daea28cbdc16e638da2309ea2f5542218b102827c395d15d45473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff9081811615614ac6575b60209060608851015190604051809581937f570e1a3600000000000000000000000000000000000000000000000000000000835286836148b78d8d60048401613509565b03941690f1918215614ab9575b600092614a99575b50808216968715614a2b57168096036149bd573b15614957575061143161142b7fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d9361491793613310565b602083810151935160a001516040805173ffffffffffffffffffffffffffffffffffffffff9485168152939091169183019190915290a3388080806147ee565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152602060448201527f4141313520696e6974436f6465206d757374206372656174652073656e6465726064820152608490fd5b610a3f826040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152602060408201527f4141313420696e6974436f6465206d7573742072657475726e2073656e64657260608201520190565b610a3f846040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601b60408201527f4141313320696e6974436f6465206661696c6564206f72204f4f47000000000060608201520190565b614ab291925060203d81116116945761168681836105ab565b90386148cc565b614ac1612aba565b6148c4565b50737fc98430eaedbb6070b35b39d798725049088348614873565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152601f60448201527f414131302073656e64657220616c726561647920636f6e7374727563746564006064820152608490fd5b15614b4e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4141343120746f6f206c6974746c6520766572696669636174696f6e476173006044820152fd5b919060408382031261035957825167ffffffffffffffff81116103595783019080601f8301121561035957815191614be383610639565b91614bf160405193846105ab565b8383526020848301011161035957602092614c119184808501910161299e565b92015190565b9061044d602f60405180947f414133332072657665727465643a2000000000000000000000000000000000006020830152613e84815180926020868601910161299e565b939192606094600094600093805192614c9a60a08a86015195614c7f888811614b47565b015173ffffffffffffffffffffffffffffffffffffffff1690565b91614cc58373ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b94614ce1610c2587546dffffffffffffffffffffffffffff1690565b96858810614e815773ffffffffffffffffffffffffffffffffffffffff60208a9894614d578a966dffffffffffffffffffffffffffff8b614d909e03166dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b015194604051998a98899788937ff465c77e00000000000000000000000000000000000000000000000000000000855260048501613e1e565b0395169103f1908183918493614e5b575b50614e54575050600190614db361355d565b6308c379a014614e32575b50614dc557565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601660408201527f4141333320726576657274656420286f72204f4f47290000000000000000000060608201520190565b614e3a61357b565b9081614e465750614dbe565b610a3f916141549150614c17565b9450925050565b909250614e7a91503d8085833e614e7281836105ab565b810190614bac565b9138614da1565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601e60408201527f41413331207061796d6173746572206465706f73697420746f6f206c6f77000060608201520190565b919492939093606095600095600093825190614f1560a08b84015193614c7f848611614b47565b93614f408573ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b614f5b610c2582546dffffffffffffffffffffffffffff1690565b8781106150b6579273ffffffffffffffffffffffffffffffffffffffff60208a98969394614d578a966dffffffffffffffffffffffffffff8d614fd59e9c9a03166dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b0395169103f1908183918493615098575b50615090575050600190614ff861355d565b6308c379a014615071575b5061500b5750565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152601660448201527f4141333320726576657274656420286f72204f4f4729000000000000000000006064820152608490fd5b61507961357b565b90816150855750615003565b614423925050614c17565b955093505050565b9092506150af91503d8085833e614e7281836105ab565b9138614fe6565b610a3f8a6040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601e60408201527f41413331207061796d6173746572206465706f73697420746f6f206c6f77000060608201520190565b929190615142604091600086526060602087015260608601906129c1565b930152565b9060a06108b7926000815260606020820152601460608201527f4141353020706f73744f70207265766572746564000000000000000000000000608082015281604082015201906129c1565b9291905a938051906151a48261546d565b9260a08301946151c8865173ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff92818416918261533457505050615208845173ffffffffffffffffffffffffffffffffffffffff1690565b975b5a900301938402966040830192888451106152c7576152506020928a7f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f96510390611fb9565b0151926152c26020615294615279845173ffffffffffffffffffffffffffffffffffffffff1690565b985173ffffffffffffffffffffffffffffffffffffffff1690565b9201519589846040519586951699169784606091949392608082019582526001602083015260408201520152565b0390a4565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152602060408201527f414135312070726566756e642062656c6f772061637475616c476173436f737460608201520190565b99918151615344575b505061520a565b606087015191813b15610359576153929289600080946040518097819682957fa9a234090000000000000000000000000000000000000000000000000000000084528c029060048401615124565b0393f1908161545a575b50615453576153a9612550565b8051156153e657610a3f906040519182917f65c8fd4d00000000000000000000000000000000000000000000000000000000835260048301615147565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601260408201527f4141353020706f73744f7020726576657274000000000000000000000000000060608201520190565b388061533d565b8061112d6154679261057b565b3861539c565b60e060c08201519101518082146154915748018082101561548c575090565b905090565b509056fea2646970667358221220e12e6fb5372ff2fb32710fce9ddbe61b2ddcb627bb43d117a1c09e2001aa8d4864736f6c63430008110033","sourceMap":"1256:33277:16:-:0;;;;;;;;;-1:-1:-1;1256:33277:16;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2684:47:3;;2169:10;2258:80;2160:20;2169:10;1256:33277:16;;2160:8:3;1256:33277:16;2160:8:3;1256:33277:16;;;2160:8:3;1256:33277:16;;;2160:20:3;2198:19;2190:58;2198:19;;;2190:58;:::i;:::-;2266:39;1256:33277:16;2285:20:3;;;1256:33277:16;;;;;;;;;;2266:39:3;-1:-1:-1;2266:39:3;2258:80;:::i;:::-;1256:33277:16;;;;2377:9:3;2532:137;2364:22;2377:9;1256:33277:16;;;;;2364:22:3;:::i;:::-;2404:9;2396:40;2404:9;;;2396:40;:::i;:::-;2446:53;2454:26;;;;2446:53;:::i;:::-;2532:137;1256:33277:16;;;:::i;:::-;;;2532:137:3;1256:33277:16;;;;;;2532:137:3;2285:20;1256:33277:16;2532:137:3;;1256:33277:16;;;;;2532:137:3;;;1256:33277:16;;2532:137:3;1256:33277:16;;;2532:137:3;;;1256:33277:16;;2532:137:3;;;1256:33277:16;2509:20:3;2169:10;1256:33277:16;;2160:8:3;1256:33277:16;2160:8:3;1256:33277:16;;;2160:8:3;1256:33277:16;;;2509:20:3;1256:33277:16;:::i;:::-;2532:137:3;1256:33277:16;;;;;;;;;;;;;2169:10:3;;1256:33277:16;;;;;;;2684:47:3;;;;1256:33277:16;;-1:-1:-1;1256:33277:16;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;848:36:1;868:10;;-1:-1:-1;1256:33277:16;848:19:1;1256:33277:16;;;-1:-1:-1;1256:33277:16;;;;;;;;;;;;;848:36:1;:38;1256:33277:16;;848:38:1;:::i;:::-;1256:33277:16;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;268:74:1;1256:33277:16;;;;;:::i;:::-;;;;:::i;:::-;;;-1:-1:-1;1256:33277:16;268:74:1;1256:33277:16;;;-1:-1:-1;1256:33277:16;;;;;;;;;;;;;268:74:1;1256:33277:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;16387:15;1256:33277;;16387:15;1256:33277;;;;;;;;;;;16387:15;1256:33277;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;1256:33277:16;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;5788:24;;;;;:::i;:::-;5864:1;5867:10;;;;;;6186:21;5864:1;6226:17;;;;;6263:13;6258:120;6278:10;;;;;;6417:9;;;;:::i;6290:3::-;6344:6;;;1256:33277;6344:6;1256:33277;6344:6;;;;;:::i;:::-;6352:10;;;;:::i;:::-;;1256:33277;;:::i;:::-;;6290:3;1256:33277;6263:13;;;;5879:3;25522:34;6010:38;5929:10;;;;;;:::i;:::-;;6033:6;;;;;:::i;:::-;6010:38;;:::i;:::-;25522:34;;;:::i;:::-;1256:33277;;;;;25566:111;;25686:96;;26082:43;;;:::i;:::-;1256:33277;;26135:105;;26249:106;;1256:33277;;5852:13;;;;;26249:106;1256:33277;;;26290:54;;;;;;1256:33277;;;;;;;;;;;;;;;;;;;;;;;;;26290:54;;;;;26135:105;26188:41;1256:33277;;;26188:41;;;;;;;;;1256:33277;;;;;;;;;;;;;;;;;;;;;;25686:96;25727:44;1256:33277;;;25727:44;;;;;;;;;1256:33277;;;;;;;;;;;;;;;;;;;;;;25566:111;25625:41;1256:33277;;;25625:41;;;;;;;;;1256:33277;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;4450:10:3;;1256:33277:16;;;;;;;;;;;;4479:30:3;;;;1256:33277:16;;4572:29:3;;1256:33277:16;4572:29:3;;;4549:53;4572:29;;4564:38;4572:29;;;4757:38;4572:29;;:::i;:::-;1256:33277:16;;;;4564:38:3;1256:33277:16;;;;;;;;;;4549:53:3;1256:33277:16;;;;;;;;;;;;;;4450:10:3;;4617:54;;;1256:33277:16;4699:48:3;;;;:::i;:::-;;4757:38;:::i;:::-;1256:33277:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;-1:-1:-1;1256:33277:16;462:19:1;1256:33277:16;;462:32:1;1256:33277:16;;-1:-1:-1;1256:33277:16;;;;;;;;;;;;;462:32:1;1256:33277:16;;;;;;;;462:55:1;1256:33277:16;;;;;;;;;;;:::i;:::-;6923:1;6939:13;6954:11;;;;;;7705:26;;;;:::i;:::-;7747:17;6923:1;7747:17;;6923:1;7809:13;7824:11;;;;;;8552;;6923:1;8521:21;8578:13;;8593:11;;;;;;9119:9;9045:38;;6923:1;8699:51;9045:38;;;9119:9;:::i;8606:3::-;8795:11;8661:19;;;;;:::i;:::-;8699:51;8726:23;8734:14;7136;8734;;;:::i;:::-;1256:33277;;;;8699:51;;6923:1;8699:51;;8795:11;;:::i;:::-;8867:13;6923:1;8862:159;8882:10;;;;;;8606:3;;;;;;:::i;:::-;8578:13;;8894:3;8954:6;;;;8997:9;8917:62;8894:3;8954:6;8917:62;8954:6;8962:16;8954:6;;;;;:::i;:::-;8962:16;;;:::i;8917:62::-;;;:::i;:::-;8997:9;;:::i;:::-;8894:3;;:::i;:::-;8867:13;;;;7837:3;7892:19;;;;;:::i;:::-;7136:14;8006;7956:11;;;;:::i;:::-;8006:14;;;;;:::i;:::-;8081:13;1256:33277;6923:1;1256:33277;;8076:425;8096:10;;;;;;7837:3;;;;;;;:::i;:::-;7809:13;;8108:3;8158:16;;;;8477:9;8158:16;8422:19;8158:16;8252:44;8158:16;8108:3;8158:16;;;:::i;:::-;;8281:6;;;;;:::i;:::-;8252:44;;:::i;:::-;8422:19;;;:::i;:::-;8477:9;:::i;8108:3::-;8081:13;;;;;6967:3;7022:19;;;;;:::i;:::-;7086:11;;;;;:::i;:::-;7136:14;7237:19;7136:14;;;;;:::i;7237:19::-;1256:33277;;;;7229:69;7268:1;7237:33;;;7229:69;:::i;:::-;7313:305;;6967:3;7632:22;;;6967:3;7632:22;;;;:::i;:::-;6967:3;;:::i;:::-;6939:13;;;7313:305;7470:13;;;;;;;;;;;;;;;;;;:::i;:::-;7435:49;;;;;;;1256:33277;;;;;;7435:49;;;;;1256:33277;7435:49;;1256:33277;7435:49;;;;;;;;:::i;:::-;;;;;6923:1;7435:49;;;;;;7313:305;-1:-1:-1;7431:173:16;;1256:33277;;7539:46;;;1256:33277;;;7539:46;;;1256:33277;;;;;;;26290:54;;;7431:173;;;-1:-1:-1;7431:173:16;;-1:-1:-1;7431:173:16;;-1:-1:-1;7431:173:16;;7632:22;6967:3;7313:305;;7435:49;;;;;;:::i;:::-;;;:::i;:::-;;;;1256:33277;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;-1:-1:-1;1256:33277:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;1256:33277:16;-1:-1:-1;1256:33277:16;;;;;-1:-1:-1;1256:33277:16;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;1947:1;1256:33277;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;20817:20;;;;:47;;;;1256:33277;20813:182;;;21035:2;21008:29;;;21004:308;;1256:33277;21346:10;1256:33277;;;21346:10;;;;;;;;1256:33277;;;;;;;;;;;;;21004:308;21089:22;21073:40;21089:22;21081:31;21089:22;;:::i;:::-;21081:31;;:::i;:::-;1256:33277;;;;21073:40;21131:21;:26;21127:175;;21004:308;;;;21127:175;21250:37;1256:33277;;;21250:37;;;;;;;;1256:33277;;;;;;;;;;;;;;;;;;20813:182;20949:35;1256:33277;;;20949:35;;;;;;;;1256:33277;;;;;;;;;;;;;;;;;;20817:47;20841:18;;;:23;20817:47;;;1256:33277;;;;;;;;;;;;;;;;;;;19965:45;1256:33277;;20028:27;1256:33277;;;;;;:::i;:::-;;;19815:27;1256:33277;;;;;;;;;;;19863:21;19859:79;;1256:33277;-1:-1:-1;1256:33277:16;;;19965:45;;;;;;1256:33277;19965:45;;1256:33277;19965:45;;;:::i;:::-;;1256:33277;;19965:45;;;;;;;1256:33277;-1:-1:-1;19965:45:16;;;1256:33277;-1:-1:-1;1256:33277:16;;20028:27;;;1256:33277;;;;;20028:27;;1256:33277;;;;;;;;;19965:45;;;;1256:33277;19965:45;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;19859:79;19896:42;;-1:-1:-1;19859:79:16;;1256:33277;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;2955:10:3;1256:33277:16;;;;;;;;2984:20:3;;;1256:33277:16;;;;;2984:25:3;;;1256:33277:16;;3163:32:3;3107:46;3205:19;1256:33277:16;3034:41:3;1256:33277:16;;;;;;;;;;;3034:41:3;:::i;:::-;1256:33277:16;3114:15:3;1256:33277:16;3107:46:3;:::i;:::-;1256:33277:16;;;;;;;;;;;;;;;3163:32:3;1256:33277:16;;;;;;;3205:19:3;1256:33277:16;;;;;;;;;2955:10:3;;3239:39;;1256:33277:16;;3239:39:3;1256:33277:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4091:44:3;1256:33277:16;3593:20:3;3602:10;1256:33277:16;;2160:8:3;1256:33277:16;2160:8:3;1256:33277:16;;;2160:8:3;1256:33277:16;;;3593:20:3;1256:33277:16;3935:14:3;3623:26;1256:33277:16;;;;;;;;;;3623:26:3;3667:9;3659:42;3667:9;;;3659:42;:::i;:::-;3904:21;3719:17;;;3784:76;1256:33277:16;;;;;;;;;;;;;3711:63:3;3719:21;;;3711:63;:::i;:::-;3813:15;-1:-1:-1;3792:36:3;3784:76;:::i;:::-;1256:33277:16;;;;;;;3904:21:3;1256:33277:16;;;;;;;3935:14:3;1256:33277:16;;;;;;;;;;;;;;3602:10:3;;3964:50;;;-1:-1:-1;1256:33277:16;;;;;;;;4042:39:3;;;;:::i;:::-;;4091:44;:::i;1256:33277:16:-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;9891:101;1256:33277;;;;;;:::i;:::-;;;:::i;:::-;9383:2;;;:::i;:::-;9529:60;9456:34;;;;:::i;:::-;9529:60;;:::i;:::-;-1:-1:-1;9639:29:16;-1:-1:-1;;34473:52:16;;;;9639:29;:::i;:::-;34473:52;;;;9702:18;9730:25;1256:33277;;;;;9765:110;;1256:33277;9907:15;;;;;;1256:33277;9930:15;1256:33277;;;;9930:15;;1256:33277;;;;;;9947:15;;1256:33277;;;;;;;;;9891:101;;;;;;1256:33277;9891:101;;;:::i;9765:110::-;1256:33277;;;;;;;;;;;;;;;;;;;:::i;:::-;9837:27;;;;;9907:15;9837:27;;:::i;:::-;9805:59;9765:110;;;;;;;1256:33277;;;;;;;;:::i;:::-;;;:::i;:::-;16017:6;;;:::i;:::-;16094:41;;;;:::i;:::-;16192:17;;:27;;1256:33277;16192:17;;;16178:42;;1256:33277;;16178:42;:::i;16192:27::-;16178:42;:::i;:::-;16274:17;16260:39;16274:24;:17;;1256:33277;;;;;;16260:39;1256:33277;;;:::i;:::-;;16531:22;16387:15;;;;;;;;:::i;:::-;16434:69;-1:-1:-1;16453:2:16;16434:21;;16453:2;;16474:14;;16458:32;16474:14;16466:23;16474:14;;:::i;16531:22::-;16603:60;;;;:::i;:::-;1256:33277;;;;;;;;16758:1;16736:24;;16825:18;;;;1256:33277;16857:17;;;;1256:33277;16911:15;;;;;1256:33277;;;;;;;;16940:15;;1256:33277;;;16994:23;;;1256:33277;;;;:::i;:::-;;;;16911:15;16801:227;;1256:33277;;;;16801:227;;;1256:33277;;;16994:23;16801:227;;1256:33277;;;16825:18;16801:227;;1256:33277;16192:27;16801:227;;1256:33277;17043:24;;:52;;;;16434:69;17039:305;;;1256:33277;17360:68;1256:33277;;17360:68;;;;;;1256:33277;17360:68;;;:::i;17039:305::-;17187:25;;17234:99;17187:25;;;;:::i;:::-;17155:58;1256:33277;;:::i;:::-;;;;;;;;17155:58;16911:15;17155:58;;1256:33277;;17234:99;;;;;;1256:33277;17234:99;;;:::i;17043:52::-;17071:24;;;17043:52;;;16434:69;;;;16531:22;:::i;1256:33277::-;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;1256:33277:16;-1:-1:-1;1256:33277:16;;;;-1:-1:-1;1256:33277:16;;506:47:3;1256:33277:16;;506:47:3;;1256:33277:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;:::i;:::-;;;:::o;1216:65:3:-;1263:10;;1649:206;1256:33277:16;1649:206:3;1737:9;;;;:::i;:::-;1256:33277:16;;1784:8:3;1256:33277:16;1784:8:3;1256:33277:16;;1816:32:3;1256:33277:16;;;1784:8:3;1256:33277:16;;;;;;;;1816:32:3;1649:206::o;1256:33277:16:-;;;;;;;;;;:::o;:::-;;;:::i;1287:293:3:-;1256:33277:16;;1393:8:3;1256:33277:16;1393:8:3;1256:33277:16;;;1393:8:3;1256:33277:16;;;;;;;;;;;;;;1287:293:3;1479:30;;;1256:33277:16;;1540:33:3;1256:33277:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;1256:33277:16;;;;:::o;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1256:33277:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;-1:-1:-1;1256:33277:16;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;:::i;:::-;;;2743:278;1256:33277;;2836:25;;1256:33277;;2859:1;2918:35;;;;;;;;;:::i;:::-;;1256:33277;;;2743:278::o;1256:33277::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;1256:33277:16;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;1256:33277:16;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;3249:1997;3537:52;;3249:1997;3556:15;3501:20;;;1256:33277;3556:15;3501:20;3556:15;;;;:::i;:::-;1256:33277;;;;;3537:52;;;;;1256:33277;3537:52;;;;;;:::i;:::-;;:4;1256:33277;3537:4;:52;;1256:33277;;3537:52;;;3249:1997;-1:-1:-1;3533:1707:16;;3675:1565;;:::i;:::-;3537:52;1256:33277;3754:109;;1256:33277;;4583:18;4579:52;;4646:142;;;3537:52;4646:142;;4579:52;1256:33277;;4610:21;;;1256:33277;3537:52;4610:21;;1256:33277;-1:-1:-1;1256:33277:16;;;;;;26290:54;3537:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1256:33277;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;-1:-1:-1;1256:33277:16;;;;;;;;;;;;:::o;1392:927:0:-;1571:36;1658:45;1392:927;1256:33277:16;;:::i;:::-;;1571:36:0;:::i;:::-;1658:45;;:::i;:::-;1256:33277:16;;;;;;;1780:24:0;;;1776:95;;1392:927;1256:33277:16;1900:32:0;;;;1962;1900;;;;1256:33277:16;;1962:32:0;;1256:33277:16;;2026:27:0;;1962:32;2026:27;1900:32;2026:27;;1256:33277:16;;2085:27:0;;1256:33277:16;;2127:25:0;;;;2123:56;;1392:927;2193:25;;;;2189:56;;1392:927;1256:33277:16;1962:32:0;1256:33277:16;;;;;:::i;:::-;;;;;1900:32:0;2262:50;;1256:33277:16;;1962:32:0;2262:50;;1256:33277:16;1392:927:0;:::o;2189:56::-;2220:25;-1:-1:-1;2189:56:0;;;2123;2154:25;-1:-1:-1;2123:56:0;;;1776:95;1256:33277:16;;;;;-1:-1:-1;1776:95:0;;904:439;1256:33277:16;;:::i;:::-;;;;;1115:3:0;1256:33277:16;;1133:15:0;;1129:75;;904:439;1256:33277:16;;;;;;:::i;:::-;;;;;;1259:8:0;1256:33277:16;1286:50:0;;;1256:33277:16;;;1286:50:0;;1256:33277:16;904:439:0;:::o;1129:75::-;1164:29;;1129:75;;1716:4:16;;;;;;;;;;;:::i;10765:3392::-;;;;10949:9;10998:4;;10976:10;:27;1256:33277;;11071:14;;1256:33277;;12106:1745;;10765:3392;13914:9;;14090:50;13914:9;1716:4;13914:9;;1716:4;;13926:15;;;1256:33277;;1716:4;;;;:::i;:::-;14090:50;;:::i;12106:1745::-;1256:33277;12836:8;;12516:49;;1256:33277;;12555:9;;12516:49;;:::i;:::-;12836:8;;1256:33277;12836:8;12832:1009;;12106:1745;;;;12832:1009;13301:25;12886:41;;:::i;:::-;1256:33277;;13301:25;;;;;;;;;;:::i;1256:33277::-;;;;;;;;;;;;;;;;;;;;;;;230:263:11;;11071:14:16;230:263:11;;;;385:102;;;;;;;230:263;:::o;1066:436::-;1163:333;1716:4:16;1163:333:11;;;;;1066:436;1163:333;;;;;;;;;;;;;;;;;;;1066:436;:::o;1163:333::-;;;;;;14365:174:16;2762:31:10;2777:15;;;;;;:::i;:::-;2762:31;;:::i;:::-;2841:15;2826:31;2841:15;;;;;;:::i;2826:31::-;3217:23;3259:237;3202:39;3217:23;;;;;;:::i;3202:39::-;2777:15;1256:33277:16;3259:237:10;;;2717:12;3259:237;;3134:27;;;;1256:33277:16;3074:19:10;;;;1256:33277:16;3016:25:10;;;;1256:33277:16;2950:27:10;;;;1256:33277:16;2890:19:10;;;;1256:33277:16;2717:12:10;1256:33277:16;2717:12:10;;;1256:33277:16;1859:39:10;;1256:33277:16;3259:237:10;1256:33277:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3259:237:10;;;;;;;;;;;;;:::i;:::-;1256:33277:16;3603:23:10;;2777:15;1256:33277:16;;2717:12:10;14476:55:16;;1256:33277;;;14510:4;1256:33277;;;;;;;14517:13;1256:33277;;;;;14476:55;;;;;;;;;1256:33277;14476:55;:::i;:::-;1256:33277;14466:66;;14365:174;:::o;3357:265:0:-;3439:177;;;;;;;3357:265;:::o;1256:33277:16:-;;;;;;;;;;;;;;;;;;;-1:-1:-1;1256:33277:16;;;;;;;:::o;:::-;;;:::i;:::-;;;;;21035:2;1256:33277;;;;21035:2;1256:33277;:::o;:::-;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;1256:33277:16:o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;781:248:3;;1256:33277:16;;;:::i;:::-;;;908:8:3;1256:33277:16;908:8:3;1256:33277:16;;;995:27:3;1256:33277:16;908:8:3;1256:33277:16;;;;;;;;;995:27:3;1256:33277:16;;;972:20:3;;1256:33277:16;781:248:3:o;1256:33277:16:-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1256:33277:16;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;20266:13;1256:33277;;;;;;;;;;:::i;20068:421::-;20249:15;;;;;;:::i;:::-;20281:23;20266:13;;;:::i;:::-;20281:23;;;;;;:::i;:::-;20216:4;;;:89;;;;20266:13;1256:33277;20216:89;1256:33277;20249:15;1256:33277;20216:89;;;;;1256:33277;20216:89;;;;;;:::i;:::-;;:4;;:89;;;;;;20068:421;-1:-1:-1;20212:271:16;;;;;:::i;:::-;;;;;;;;20068:421::o;20212:271::-;;;:::i;:::-;20317:166;;:::i;:::-;;;;20212:271;;;;20317:166;1256:33277;;20266:13;;-1:-1:-1;20371:102:16;20317:166;20371:102;20433:25;1256:33277;20249:15;1256:33277;20433:25;;;;;;20216:89;20433:25;;;:::i;20216:89::-;;;;;;:::i;:::-;;;;25262:1099;;;;25522:34;25262:1099;25522:34;:::i;:::-;1256:33277;;;;;;;;;25570:32;25566:111;;25686:96;;26082:43;;;:::i;:::-;1256:33277;;26135:105;;26249:106;;25262:1099;:::o;26367:500::-;26525:19;;26521:76;;26635:36;;;:::i;:::-;1256:33277;;26770:15;;;;1256:33277;;26752:15;:33;:70;;;;;26367:500;26735:87;1256:33277;;;26367:500;:::o;26752:70::-;26807:15;;;;;1256:33277;;26752:15;26789:33;26752:70;;;26521:76;26560:26;26543:1;26560:26;26543:1;26560:26;:::o;1256:33277::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;27224:2125;;-1:-1:-1;27451:9:16;;27500:17;;;27555:7;;;;;:::i;:::-;27596:21;;;:::i;:::-;27573:20;;;1256:33277;27957:70;1256:33277;27803:26;;;1256:33277;27832:28;;;1256:33277;27803:57;27863:20;;;1256:33277;27803:80;27920:27;;;1256:33277;27898:19;;;;1256:33277;27803:114;:144;27965:33;;27957:70;:::i;:::-;28118:28;;;:::i;:::-;28223:71;;;;;:::i;:::-;28156:138;;28309:55;28310:54;1256:33277;;;;;;;;27573:20;28350:13;;1256:33277;28310:54;;:::i;28309:55::-;28305:140;;;34473:52;;;34425:106;28305:140;1256:33277;;28680:17;27832:28;28680:17;;1256:33277;;;;;;;28676:238;;27224:2125;28974:9;;1716:4;;28680:17;29002:27;;1256:33277;29002:37;28998:134;;27803:26;29145:17;29307:25;29145:17;27863:20;29145:17;;1256:33277;27832:28;29194:23;;1256:33277;29295:9;1716:4;;29307:25;;1256:33277;;29265:18;;1256:33277;27224:2125::o;28998:134::-;27863:20;1256:33277;29066:51;;;;;;;;1256:33277;;-1:-1:-1;1256:33277:16;;;;;;;;;;;;;;;;;;;;28676:238;28764:139;;;;;;;;;;;:::i;:::-;28727:176;;28676:238;;;;28305:140;27863:20;1256:33277;28387:47;;;;;;;;1256:33277;;-1:-1:-1;1256:33277:16;;;;;;;;;;;;;;;;;;;;27224:2125;;;;1256:33277;27451:9;;27500:17;;27555:7;;;;:::i;:::-;27596:21;;;:::i;:::-;27573:20;;;1256:33277;27957:70;1256:33277;27803:26;;;1256:33277;27832:28;;;1256:33277;27803:57;27863:20;;;1256:33277;27803:80;27920:27;;;1256:33277;27898:19;;;;1256:33277;27803:114;:144;27965:33;;27957:70;:::i;:::-;28118:28;;;:::i;:::-;28223:71;;;;;;:::i;:::-;28156:138;;28309:55;28310:54;1256:33277;;;;;;;;27573:20;28350:13;;1256:33277;28310:54;;:::i;28309:55::-;28305:140;;;34473:52;;;34425:106;28305:140;1256:33277;;28680:17;27832:28;28680:17;;1256:33277;;;;;;;28676:238;;27224:2125;28974:9;;1716:4;;28680:17;29002:27;;1256:33277;29002:37;28998:134;;-1:-1:-1;27863:20:16;29145:17;;1256:33277;27832:28;29194:23;;1256:33277;27803:26;;29145:17;29307:25;;29295:9;1716:4;;29307:25;;1256:33277;;29265:18;;1256:33277;27224:2125::o;28998:134::-;27863:20;1256:33277;;29066:51;;;;;;1256:33277;;;;;;;;;;;;;;;;;;;;26290:54;28676:238;28764:139;;;;;;;;;;;;:::i;:::-;28727:176;;28676:238;;;;28305:140;28387:47;1256:33277;27863:20;1256:33277;28387:47;;;;;;;;;1256:33277;;;;;;;;;;;;;;;;;;;;;;1008:234:1;1256:33277:16;;-1:-1:-1;1256:33277:16;1194:19:1;1256:33277:16;;;1194:32:1;1256:33277:16;1138:2:1;1256:33277:16;1138:2:1;-1:-1:-1;1256:33277:16;;;;;;;;;;;;;1194:32:1;1256:33277:16;;;1194:34:1;;;;:::i;:::-;1256:33277:16;;;1194:41:1;1008:234;:::o;1256:33277:16:-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;14634:831;15163:23;14634:831;14747:30;14764:13;;;:::i;:::-;1256:33277;;;;;14747:30;14803:12;;;1256:33277;14803:12;14787:13;;1256:33277;14848:19;;;1256:33277;14825:20;;;1256:33277;14908:27;;;1256:33277;14877:28;;;1256:33277;14974:25;;;1256:33277;14848:19;14945:26;;1256:33277;15032:19;;;1256:33277;14974:25;15009:20;;1256:33277;15092:27;;;1256:33277;15032:19;15061:28;;1256:33277;15163:23;;;;;:::i;:::-;15200:27;;;;;15348:39;15356:30;15364:21;15251:29;14908:27;15251:29;15243:71;15278:2;15328:59;15251:29;;;;15243:71;:::i;:::-;15364:21;:::i;15348:39::-;1256:33277;;15328:17;;1256:33277;;15196:263;15418:17;;14908:27;1256:33277;15418:17;;1256:33277;14634:831::o;17441:579::-;17775:17;;;1256:33277;;;17775:31;:39;;17983:20;17809:1;17775:39;1256:33277;17850:20;;;1256:33277;;;17873:28;;;1256:33277;;;17910:26;;;1256:33277;;17983:20;;1256:33277;;17441:579;:::o;17775:39::-;17983:20;17813:1;17775:39;;1256:33277;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;21569:1772::-;;-1:-1:-1;21800:22:16;-1:-1:-1;21875:9:16;;21928:14;22389:140;22477:17;21928:14;;1256:33277;;;;;;;;;22040:11;;;;;;;;:::i;:::-;;;;:::i;:::-;22086:17;;;1256:33277;;;22066:37;;34473:52;;;34425:106;22066:37;22145:31;;1256:33277;;;;;22194:23;22190:182;;;;21569:1772;22426:28;;1256:33277;22477:17;;;1256:33277;22040:11;1256:33277;;22389:140;;1256:33277;;;;;;;;22389:140;;;;:::i;:::-;;1256:33277;;;22389:140;;;;;;;21569:1772;-1:-1:-1;22385:480:16;;;;;;;:::i;:::-;;;;;;;;;;22878:378;;22385:480;23315:9;;;1716:4;;21569:1772;:::o;22878:378::-;22958:16;;1256:33277;;;;;;;;;;;;22958:16;22992:36;1256:33277;;;;;;;22992:36;23050:25;;;23046:123;;23186:55;1716:4;1256:33277;1716:4;;1256:33277;;;;;;;;;;;23186:55;22878:378;;;;23046:123;22040:11;1256:33277;23106:44;;;;;22389:140;23106:44;;1256:33277;;-1:-1:-1;1256:33277:16;;;;;;;;;;;;;;;;;;;;22385:480;22040:11;1256:33277;22807:43;;;;;22389:140;22807:43;;1256:33277;;-1:-1:-1;1256:33277:16;;;;;;;;;;;;;;;;;;;;22385:480;22630:145;;:::i;:::-;;;;;22385:480;;;22630:145;22695:65;22630:145;22713:46;22630:145;22713:46;;:::i;:::-;22040:11;1256:33277;22695:65;;;;;;22389:140;22695:65;;;:::i;22385:480::-;22582:32;-1:-1:-1;22385:480:16;;-1:-1:-1;22385:480:16;22389:140;;;;;22477:17;22389:140;;;;;;;;;:::i;:::-;;;;;22190:182;1178:17:3;;1171:32;1178:25;:17;;1256:33277:16;;;;;;;;;;;;1178:17:3;1256:33277:16;;;;;1171:32:3;22308:21:16;;;;;;:49;;22426:28;22308:49;;22190:182;;;;;;22308:49;22426:28;1716:4;;;;22308:49;;21569:1772;;;1256:33277;21800:22;1256:33277;21875:9;;21928:14;22389:140;22477:17;21928:14;;1256:33277;;;;;;;;;22040:11;;;;;;;;:::i;:::-;;;;;:::i;22389:140::-;;1256:33277;;;22389:140;;;;;;;21569:1772;-1:-1:-1;22385:480:16;;;;;;;:::i;:::-;;;;;;;;;;22878:378;;22385:480;23315:9;;;;1716:4;;21569:1772;:::o;22878:378::-;22958:16;;1256:33277;;;;;;;;;;;;22958:16;1256:33277;22992:36;1256:33277;;;;;;;22992:36;23050:25;;;;23046:123;;-1:-1:-1;1256:33277:16;;;;1716:4;;;1256:33277;;;;;22878:378;;;;;23046:123;22040:11;1256:33277;;23106:44;;;22389:140;23106:44;;1256:33277;;;;;;;;;;;;;;;;;;;;26290:54;22385:480;22807:43;1256:33277;22040:11;1256:33277;22807:43;;;;;;22389:140;22807:43;;1256:33277;;;;;;;;;;;;;;;;;;;;;;22385:480;22630:145;;:::i;:::-;;;;;22385:480;;;22630:145;;;22713:46;22630:145;22713:46;;:::i;:::-;1256:33277;22695:65;22040:11;1256:33277;22695:65;;;;;;22389:140;22695:65;;;:::i;22385:480::-;22582:32;-1:-1:-1;22385:480:16;;-1:-1:-1;22385:480:16;22389:140;;;;;22477:17;22389:140;;;;;;;;;:::i;:::-;;;;;18073:1182;;;18195:20;18191:1058;;18073:1182;;;:::o;18191:1058::-;18248:14;;1256:33277;;;18287:18;;;18283:88;;-1:-1:-1;1256:33277:16;18534:27;1256:33277;;;;;;;;;;;18586:21;18582:79;;18191:1058;18693:87;18734:14;:35;:14;;:35;1256:33277;;;;18693:87;;;;1256:33277;18693:87;;;;;;;;;;;:::i;:::-;;1256:33277;;18693:87;;;;;;;18191:1058;-1:-1:-1;18693:87:16;;;18191:1058;1256:33277;;;;18799:21;;;18795:82;;1256:33277;18895:17;;;18891:83;;18992:19;:24;18988:90;;19118:23;19126:14;19161:77;19126:14;19110:32;19126:14;;:::i;19110:32::-;18693:87;19177:17;;;1256:33277;19213:14;;:24;;1256:33277;;;;;;;;;;;;;;;;;;;;;;19161:77;18073:1182::o;18988:90::-;1256:33277;;19025:53;;;;;18693:87;19025:53;;1256:33277;;-1:-1:-1;1256:33277:16;;;;;;;;;;;;;;;;;;;;18891:83;1256:33277;;18921:53;;;;;18693:87;18921:53;;1256:33277;;-1:-1:-1;1256:33277:16;;;;;;;;;;;;;;;;;;;;18795:82;1256:33277;;18829:48;;;;;18693:87;18829:48;;1256:33277;;-1:-1:-1;1256:33277:16;;;;;;;;;;;;;;;;;;;;18693:87;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;18582:79;-1:-1:-1;18619:42:16;18582:79;;18283:88;1256:33277;;18319:52;;;;;;;;1256:33277;;-1:-1:-1;1256:33277:16;;;;;;;;;;;;;;;;;;;;18073:1182;;;;18195:20;18191:1058;;18073:1182;;;;;:::o;18191:1058::-;18248:14;;1256:33277;;;18287:18;;;18283:88;;18214:1;1256:33277;18534:27;1256:33277;;;;;;;;;;;18586:21;18582:79;;18191:1058;18693:87;18734:14;:35;:14;;:35;1256:33277;;;;18693:87;;;;1256:33277;18693:87;;;;;;;;;;;:::i;:::-;;1256:33277;;18693:87;;;;;;;18191:1058;18214:1;18693:87;;;18191:1058;1256:33277;;;;18799:21;;;18795:82;;1256:33277;18895:17;;;18891:83;;18992:19;:24;18988:90;;19126:14;19118:23;19126:14;19161:77;19126:14;19110:32;19126:14;;:::i;19110:32::-;18693:87;19177:17;;;1256:33277;19213:14;;:24;;1256:33277;;;;;;;;;;;;;;;;;;;;;;19161:77;18191:1058;;;;;;18988:90;1256:33277;;;19025:53;;;18693:87;19025:53;;1256:33277;;;;;;;;;;;;;;;;;;;;26290:54;18891:83;18921:53;1256:33277;;;18921:53;;;;;;18693:87;18921:53;;1256:33277;;;;;;;;;;;;;;;;;;;;;;18795:82;18829:48;1256:33277;;;18829:48;;;;;;18693:87;18829:48;;1256:33277;;;;;;;;;;;;;;;;;;;;;;18693:87;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;18582:79;-1:-1:-1;18619:42:16;18582:79;;18283:88;1256:33277;;;18319:52;;;;;;1256:33277;;;;;;;;;;;;;;;;;;;;26290:54;1256:33277;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;23599:1555::-;;;;1256:33277;23862:22;-1:-1:-1;23862:22:16;-1:-1:-1;23950:14:16;;;24009:28;1256:33277;24272:17;24009:28;;;1256:33277;24059:57;24051:101;24059:57;;;24051:101;:::i;:::-;24272:17;1256:33277;;;;;;24339:19;;;1256:33277;;;;;;;;;;;;24339:19;1256:33277;24372:39;1256:33277;;;;;;;24372:39;24429:25;;;;24425:122;;1256:33277;24696:17;1716:4;;;24560:58;1716:4;;1256:33277;1716:4;24636:95;1716:4;;1256:33277;;;;;;;;;;;24560:58;24696:17;1256:33277;;;;24636:95;;;;;;;1256:33277;24636:95;;;;;;:::i;:::-;;1256:33277;;1716:4;;24636:95;;;;-1:-1:-1;;24636:95:16;;;23599:1555;-1:-1:-1;24632:506:16;;;;;;;;:::i;:::-;;;;;;;;;23599:1555::o;24632:506::-;1256:33277;;25080:43;;;;;24636:95;25080:43;;1256:33277;;-1:-1:-1;1256:33277:16;;;;;;;;;;;;;;;;;;;;24632:506;24903:145;;:::i;:::-;;;;;24632:506;;;24903:145;24968:65;24903:145;24986:46;24903:145;24986:46;;:::i;24632:506::-;24819:18;-1:-1:-1;24819:18:16;-1:-1:-1;;23599:1555:16:o;24636:95::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;24425:122;1256:33277;;24481:51;;;;;;;;1256:33277;;-1:-1:-1;1256:33277:16;;;;;;;;;;;;;;;;;;;;23599:1555;;;;;;;1256:33277;23862:22;1256:33277;23862:22;1256:33277;23950:14;;;24009:28;1256:33277;24272:17;24009:28;;;1256:33277;24059:57;24051:101;24059:57;;;24051:101;:::i;1256:33277::-;24339:19;;;1256:33277;;;;;;;;;;;;24339:19;24372:39;1256:33277;;;;;;;24372:39;24429:25;;;24425:122;;1716:4;1256:33277;24696:17;1716:4;;;;;24560:58;1716:4;;1256:33277;1716:4;24636:95;1716:4;;;;1256:33277;;;;;;;;;;;24636:95;;1256:33277;;1716:4;;24636:95;;;;1256:33277;;24636:95;;;23599:1555;-1:-1:-1;24632:506:16;;;;;;;;:::i;:::-;;;;;;;;;;23599:1555::o;24632:506::-;1256:33277;;;25080:43;;;24636:95;25080:43;;1256:33277;;;;;;;;;;;;;;;;;;;;26290:54;24632:506;24903:145;;:::i;:::-;;;;;24632:506;;;24903:145;24986:46;24903:145;;24986:46;;:::i;24632:506::-;24819:18;-1:-1:-1;24819:18:16;-1:-1:-1;;;23599:1555:16:o;24636:95::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;24425:122;24481:51;1256:33277;;;24481:51;;;;;;;;;1256:33277;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1256:33277:16;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;11071:14;1256:33277;;;;;;;;;;;;;;;;;;;;;;;;;:::i;29993:3124::-;;;;30241:9;30284:21;30349:14;;30396:26;;;;:::i;:::-;30457:17;;;;1256:33277;;;;;;;;;;;;;;;30492:23;1256:33277;;;;;;;;;;;;;30488:2007;;32530:9;1716:4;;1256:33277;;;;32607:14;;;;1256:33277;;;;32607:30;32603:129;;32839:6;32971:17;1256:33277;;32935:152;1256:33277;;1716:4;32839:6;;:::i;:::-;32971:17;1256:33277;;32935:152;32971:17;1256:33277;;;;;;;;;;;;;;;;33025:13;;1256:33277;;;;32607:14;1256:33277;;;;;;;32935:152;;1256:33277;;;;;;;;;;;32875:41;1256:33277;;;;;;;;;;;32935:152;;;;29993:3124::o;32603:129::-;32607:14;1256:33277;32664:53;;;;;;;;1256:33277;;11071:14;1256:33277;;;;;;;;;;;;;;;;;;;;30488:2007;30604:25;;1256:33277;;30647:1834;;30488:2007;;;;;30647:1834;31232:28;;;1256:33277;31198:147;;;;;;;1256:33277;;11071:14;1256:33277;;;;31198:147;;;;;;1256:33277;31198:147;;1256:33277;;31198:147;;;;;:::i;:::-;;;;;;;;30647:1834;-1:-1:-1;31194:406:16;;31349:251;;:::i;:::-;1256:33277;;31411:18;31407:70;;31514:59;1256:33277;;;31514:59;;;;;;31198:147;31514:59;;;:::i;31407:70::-;1256:33277;;31438:39;;;;;31198:147;31438:39;;1256:33277;;11071:14;1256:33277;;;;;;;;;;;;;;;;;;;;31194:406;30647:1834;;;;31198:147;;;;;;:::i;:::-;;;;33285:517;33495:28;33430:20;;;1256:33277;33495:28;;1256:33277;33541:36;;;33537:173;;33771:13;1256:33277;33892:5;;;;;;:13;33285:517;:::o;33892:13::-;;;33285:517;:::o;33537:173::-;33676:19;;:::o","linkReferences":{}},"methodIdentifiers":{"SIG_VALIDATION_FAILED()":"8f41ec5a","_validateSenderAndPaymaster(bytes,address,bytes)":"957122ab","addStake(uint32)":"0396cb60","balanceOf(address)":"70a08231","depositTo(address)":"b760faf9","deposits(address)":"fc7e286d","getDepositInfo(address)":"5287ce12","getNonce(address,uint192)":"35567e1a","getSenderAddress(bytes)":"9b249f69","getUserOpHash((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))":"a6193531","handleAggregatedOps(((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address,bytes)[],address)":"4b1d7cf5","handleOps((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address)":"1fad948c","incrementNonce(uint192)":"0bd28e3b","innerHandleOp(bytes,((address,uint256,uint256,uint256,uint256,address,uint256,uint256),bytes32,uint256,uint256,uint256),bytes)":"1d732756","nonceSequenceNumber(address,uint192)":"1b2e01b8","simulateHandleOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address,bytes)":"d6383f94","simulateValidation((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))":"ee219423","unlockStake()":"bb9fe6bf","withdrawStake(address)":"c23a5cea","withdrawTo(address,uint256)":"205c2878"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"CallPhaseReverted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"preOpGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"paid\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"validAfter\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"validUntil\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"targetSuccess\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"targetResult\",\"type\":\"bytes\"}],\"name\":\"ExecutionResult\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"opIndex\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"FailedOp\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"opIndex\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"inner\",\"type\":\"bytes\"}],\"name\":\"FailedOpWithRevert\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SenderAddressResult\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"}],\"name\":\"SignatureValidationFailed\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"preOpGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"prefund\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"sigFailed\",\"type\":\"bool\"},{\"internalType\":\"uint48\",\"name\":\"validAfter\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"validUntil\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"paymasterContext\",\"type\":\"bytes\"}],\"internalType\":\"struct IEntryPoint.ReturnInfo\",\"name\":\"returnInfo\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unstakeDelaySec\",\"type\":\"uint256\"}],\"internalType\":\"struct IStakeManager.StakeInfo\",\"name\":\"senderInfo\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unstakeDelaySec\",\"type\":\"uint256\"}],\"internalType\":\"struct IStakeManager.StakeInfo\",\"name\":\"factoryInfo\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unstakeDelaySec\",\"type\":\"uint256\"}],\"internalType\":\"struct IStakeManager.StakeInfo\",\"name\":\"paymasterInfo\",\"type\":\"tuple\"}],\"name\":\"ValidationResult\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"preOpGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"prefund\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"sigFailed\",\"type\":\"bool\"},{\"internalType\":\"uint48\",\"name\":\"validAfter\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"validUntil\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"paymasterContext\",\"type\":\"bytes\"}],\"internalType\":\"struct IEntryPoint.ReturnInfo\",\"name\":\"returnInfo\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unstakeDelaySec\",\"type\":\"uint256\"}],\"internalType\":\"struct IStakeManager.StakeInfo\",\"name\":\"senderInfo\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unstakeDelaySec\",\"type\":\"uint256\"}],\"internalType\":\"struct IStakeManager.StakeInfo\",\"name\":\"factoryInfo\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unstakeDelaySec\",\"type\":\"uint256\"}],\"internalType\":\"struct IStakeManager.StakeInfo\",\"name\":\"paymasterInfo\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unstakeDelaySec\",\"type\":\"uint256\"}],\"internalType\":\"struct IStakeManager.StakeInfo\",\"name\":\"stakeInfo\",\"type\":\"tuple\"}],\"internalType\":\"struct IEntryPoint.AggregatorStakeInfo\",\"name\":\"aggregatorInfo\",\"type\":\"tuple\"}],\"name\":\"ValidationResultWithAggregation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"paymaster\",\"type\":\"address\"}],\"name\":\"AccountDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"BeforeExecution\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalDeposit\",\"type\":\"uint256\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"}],\"name\":\"SignatureAggregatorChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalStaked\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"unstakeDelaySec\",\"type\":\"uint256\"}],\"name\":\"StakeLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawTime\",\"type\":\"uint256\"}],\"name\":\"StakeUnlocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"withdrawAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"StakeWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"paymaster\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"actualGasCost\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"actualGasUsed\",\"type\":\"uint256\"}],\"name\":\"UserOperationEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"revertReason\",\"type\":\"bytes\"}],\"name\":\"UserOperationRevertReason\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"withdrawAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"SIG_VALIDATION_FAILED\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"}],\"name\":\"_validateSenderAndPaymaster\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"unstakeDelaySec\",\"type\":\"uint32\"}],\"name\":\"addStake\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"depositTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"deposits\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"deposit\",\"type\":\"uint112\"},{\"internalType\":\"bool\",\"name\":\"staked\",\"type\":\"bool\"},{\"internalType\":\"uint112\",\"name\":\"stake\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"unstakeDelaySec\",\"type\":\"uint32\"},{\"internalType\":\"uint48\",\"name\":\"withdrawTime\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getDepositInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"uint112\",\"name\":\"deposit\",\"type\":\"uint112\"},{\"internalType\":\"bool\",\"name\":\"staked\",\"type\":\"bool\"},{\"internalType\":\"uint112\",\"name\":\"stake\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"unstakeDelaySec\",\"type\":\"uint32\"},{\"internalType\":\"uint48\",\"name\":\"withdrawTime\",\"type\":\"uint48\"}],\"internalType\":\"struct IStakeManager.DepositInfo\",\"name\":\"info\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint192\",\"name\":\"key\",\"type\":\"uint192\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"}],\"name\":\"getSenderAddress\",\"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\":\"uint256\",\"name\":\"callGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"verificationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPriorityFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct UserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"}],\"name\":\"getUserOpHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"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\":\"uint256\",\"name\":\"callGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"verificationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPriorityFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct UserOperation[]\",\"name\":\"userOps\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IAggregator\",\"name\":\"aggregator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct IEntryPoint.UserOpsPerAggregator[]\",\"name\":\"opsPerAggregator\",\"type\":\"tuple[]\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"name\":\"handleAggregatedOps\",\"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\":\"uint256\",\"name\":\"callGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"verificationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPriorityFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct UserOperation[]\",\"name\":\"ops\",\"type\":\"tuple[]\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"name\":\"handleOps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint192\",\"name\":\"key\",\"type\":\"uint192\"}],\"name\":\"incrementNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"callGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"verificationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"paymaster\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPriorityFeePerGas\",\"type\":\"uint256\"}],\"internalType\":\"struct EntryPointGasEstimationOverride06.MemoryUserOp\",\"name\":\"mUserOp\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"prefund\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"contextOffset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preOpGas\",\"type\":\"uint256\"}],\"internalType\":\"struct EntryPointGasEstimationOverride06.UserOpInfo\",\"name\":\"opInfo\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"context\",\"type\":\"bytes\"}],\"name\":\"innerHandleOp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualGasCost\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint192\",\"name\":\"\",\"type\":\"uint192\"}],\"name\":\"nonceSequenceNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"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\":\"uint256\",\"name\":\"callGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"verificationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPriorityFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct UserOperation\",\"name\":\"op\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"targetCallData\",\"type\":\"bytes\"}],\"name\":\"simulateHandleOp\",\"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\":\"uint256\",\"name\":\"callGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"verificationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPriorityFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct UserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"}],\"name\":\"simulateValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unlockStake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"withdrawAddress\",\"type\":\"address\"}],\"name\":\"withdrawStake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"withdrawAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"withdrawAmount\",\"type\":\"uint256\"}],\"name\":\"withdrawTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"FailedOp(uint256,string)\":[{\"params\":{\"opIndex\":\"- index into the array of ops to the failed one (in simulateValidation, this is always zero)\",\"reason\":\"- revert reason The string starts with a unique code \\\"AAmn\\\", where \\\"m\\\" is \\\"1\\\" for factory, \\\"2\\\" for account and \\\"3\\\" for paymaster issues, so a failure can be attributed to the correct entity. Should be caught in off-chain handleOps simulation and not happen on-chain. Useful for mitigating DoS attempts against batchers or for troubleshooting of factory/account/paymaster reverts.\"}}],\"ValidationResult((uint256,uint256,bool,uint48,uint48,bytes),(uint256,uint256),(uint256,uint256),(uint256,uint256))\":[{\"params\":{\"factoryInfo\":\"stake information about the factory (if any)\",\"paymasterInfo\":\"stake information about the paymaster (if any)\",\"returnInfo\":\"gas and time-range returned values\",\"senderInfo\":\"stake information about the sender\"}}],\"ValidationResultWithAggregation((uint256,uint256,bool,uint48,uint48,bytes),(uint256,uint256),(uint256,uint256),(uint256,uint256),(address,(uint256,uint256)))\":[{\"params\":{\"aggregatorInfo\":\"signature aggregation info (if the account requires signature aggregator) bundler MUST use it to verify the signature, or reject the UserOperation\",\"factoryInfo\":\"stake information about the factory (if any)\",\"paymasterInfo\":\"stake information about the paymaster (if any)\",\"returnInfo\":\"gas and time-range returned values\",\"senderInfo\":\"stake information about the sender\"}}]},\"kind\":\"dev\",\"methods\":{\"addStake(uint32)\":{\"params\":{\"unstakeDelaySec\":\"the new lock duration before the deposit can be withdrawn.\"}},\"getDepositInfo(address)\":{\"returns\":{\"info\":\"- full deposit information of given account\"}},\"getNonce(address,uint192)\":{\"params\":{\"key\":\"the high 192 bit of the nonce\",\"sender\":\"the account address\"},\"returns\":{\"nonce\":\"a full nonce to pass for next UserOp with this sender.\"}},\"getSenderAddress(bytes)\":{\"params\":{\"initCode\":\"the constructor code to be passed into the UserOperation.\"}},\"handleAggregatedOps(((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address,bytes)[],address)\":{\"params\":{\"beneficiary\":\"the address to receive the fees\",\"opsPerAggregator\":\"the operations to execute, grouped by aggregator (or address(0) for no-aggregator accounts)\"}},\"handleOps((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address)\":{\"params\":{\"beneficiary\":\"the address to receive the fees\",\"ops\":\"the operations to execute\"}},\"simulateHandleOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address,bytes)\":{\"params\":{\"op\":\"the UserOperation to simulate\",\"target\":\"if nonzero, a target address to call after userop simulation. If called, the targetSuccess and targetResult are set to the return from that call.\",\"targetCallData\":\"callData to pass to target address\"}},\"simulateValidation((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))\":{\"details\":\"this method always revert. Successful result is ValidationResult error. other errors are failures.The node must also verify it doesn't use banned opcodes, and that it doesn't reference storage outside the account's data.\",\"params\":{\"userOp\":\"the user operation to validate.\"}},\"withdrawStake(address)\":{\"params\":{\"withdrawAddress\":\"the address to send withdrawn value.\"}},\"withdrawTo(address,uint256)\":{\"params\":{\"withdrawAddress\":\"the address to send withdrawn value.\",\"withdrawAmount\":\"the amount to withdraw.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"ExecutionResult(uint256,uint256,uint48,uint48,bool,bytes)\":[{\"notice\":\"return value of simulateHandleOp\"}],\"FailedOp(uint256,string)\":[{\"notice\":\"a custom revert error of handleOps, to identify the offending op. NOTE: if simulateValidation passes successfully, there should be no reason for handleOps to fail on it.\"}],\"SenderAddressResult(address)\":[{\"notice\":\"return value of getSenderAddress\"}],\"SignatureValidationFailed(address)\":[{\"notice\":\"error case when a signature aggregator fails to verify the aggregated signature it had created.\"}],\"ValidationResult((uint256,uint256,bool,uint48,uint48,bytes),(uint256,uint256),(uint256,uint256),(uint256,uint256))\":[{\"notice\":\"Successful result from simulateValidation.\"}],\"ValidationResultWithAggregation((uint256,uint256,bool,uint48,uint48,bytes),(uint256,uint256),(uint256,uint256),(uint256,uint256),(address,(uint256,uint256)))\":[{\"notice\":\"Successful result from simulateValidation, if the account returns a signature aggregator\"}]},\"events\":{\"AccountDeployed(bytes32,address,address,address)\":{\"notice\":\"account \\\"sender\\\" was deployed.\"},\"BeforeExecution()\":{\"notice\":\"an event emitted by handleOps(), before starting the execution loop. any event emitted before this event, is part of the validation.\"},\"SignatureAggregatorChanged(address)\":{\"notice\":\"signature aggregator used by the following UserOperationEvents within this bundle.\"},\"StakeLocked(address,uint256,uint256)\":{\"notice\":\"Emitted when stake or unstake delay are modified\"},\"StakeUnlocked(address,uint256)\":{\"notice\":\"Emitted once a stake is scheduled for withdrawal\"},\"UserOperationRevertReason(bytes32,address,uint256,bytes)\":{\"notice\":\"An event emitted if the UserOperation \\\"callData\\\" reverted with non-zero length\"}},\"kind\":\"user\",\"methods\":{\"SIG_VALIDATION_FAILED()\":{\"notice\":\"for simulation purposes, validateUserOp (and validatePaymasterUserOp) must return this value in case of signature failure, instead of revert.\"},\"_validateSenderAndPaymaster(bytes,address,bytes)\":{\"notice\":\"Called only during simulation. This function always reverts to prevent warm/cold storage differentiation in simulation vs execution.\"},\"addStake(uint32)\":{\"notice\":\"add to the account's stake - amount and delay any pending unstake is first cancelled.\"},\"balanceOf(address)\":{\"notice\":\"return the deposit (for gas payment) of the account\"},\"depositTo(address)\":{\"notice\":\"add to the deposit of the given account\"},\"deposits(address)\":{\"notice\":\"maps paymaster to their deposits and stakes\"},\"getNonce(address,uint192)\":{\"notice\":\"Return the next nonce for this sender. Within a given key, the nonce values are sequenced (starting with zero, and incremented by one on each userop) But UserOp with different keys can come with arbitrary order.\"},\"getSenderAddress(bytes)\":{\"notice\":\"Get counterfactual sender address. Calculate the sender contract address that will be generated by the initCode and salt in the UserOperation. this method always revert, and returns the address in SenderAddressResult error\"},\"getUserOpHash((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))\":{\"notice\":\"generate a request Id - unique identifier for this request. the request ID is a hash over the content of the userOp (except the signature), the entrypoint and the chainid.\"},\"handleAggregatedOps(((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address,bytes)[],address)\":{\"notice\":\"Execute a batch of UserOperation with Aggregators\"},\"handleOps((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address)\":{\"notice\":\"Execute a batch of UserOperations. no signature aggregator is used. if any account requires an aggregator (that is, it returned an aggregator when performing simulateValidation), then handleAggregatedOps() must be used instead.\"},\"incrementNonce(uint192)\":{\"notice\":\"Manually increment the nonce of the sender. This method is exposed just for completeness.. Account does NOT need to call it, neither during validation, nor elsewhere, as the EntryPoint will update the nonce regardless. Possible use-case is call it with various keys to \\\"initialize\\\" their nonces to one, so that future UserOperations will not pay extra for the first transaction with a given key.\"},\"innerHandleOp(bytes,((address,uint256,uint256,uint256,uint256,address,uint256,uint256),bytes32,uint256,uint256,uint256),bytes)\":{\"notice\":\"inner function to handle a UserOperation. Must be declared \\\"external\\\" to open a call context, but it can only be called by handleOps.\"},\"nonceSequenceNumber(address,uint192)\":{\"notice\":\"The next valid sequence number for a given nonce key.\"},\"simulateHandleOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address,bytes)\":{\"notice\":\"simulate full execution of a UserOperation (including both validation and target execution) this method will always revert with \\\"ExecutionResult\\\". it performs full validation of the UserOperation, but ignores signature error. an optional target address is called after the userop succeeds, and its value is returned (before the entire call is reverted) Note that in order to collect the the success/failure of the target call, it must be executed with trace enabled to track the emitted events.\"},\"simulateValidation((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))\":{\"notice\":\"Simulate a call to account.validateUserOp and paymaster.validatePaymasterUserOp.\"},\"unlockStake()\":{\"notice\":\"attempt to unlock the stake. the value can be withdrawn (using withdrawStake) after the unstake delay.\"},\"withdrawStake(address)\":{\"notice\":\"withdraw from the (unlocked) stake. must first call unlockStake and wait for the unstakeDelay to pass\"},\"withdrawTo(address,uint256)\":{\"notice\":\"withdraw from the deposit.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/v06/EntryPointGasEstimationOverride.sol\":\"EntryPointGasEstimationOverride06\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[\":@account-abstraction-v6/=lib/account-abstraction-v6/contracts/\",\":@account-abstraction-v7/=lib/account-abstraction-v7/contracts/\",\":@account-abstraction-v8/=lib/account-abstraction-v8/contracts/\",\":@openzeppelin-v4.8.3/=lib/openzeppelin-contracts-v4.8.3/\",\":@openzeppelin-v5.0.2/=lib/openzeppelin-contracts-v5.0.2/\",\":@openzeppelin-v5.1.0/=lib/openzeppelin-contracts-v5.1.0/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts-v5.0.2/contracts/\",\":@test-aa-utils/=lib/singleton-paymaster/test/utils/account-abstraction/\",\":@test-utils/=lib/singleton-paymaster/test/utils/\",\":account-abstraction-v6/=lib/account-abstraction-v6/contracts/\",\":account-abstraction-v7/=lib/account-abstraction-v7/contracts/\",\":account-abstraction-v8/=lib/account-abstraction-v8/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-v5.0.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-v5.1.0/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-v4.8.3/=lib/openzeppelin-contracts-v4.8.3/\",\":openzeppelin-contracts-v5.0.2/=lib/openzeppelin-contracts-v5.0.2/\",\":openzeppelin-contracts-v5.1.0/=lib/openzeppelin-contracts-v5.1.0/\",\":singleton-paymaster/=lib/singleton-paymaster/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/account-abstraction-v6/contracts/core/Helpers.sol\":{\"keccak256\":\"0x591c87519f7155d1909210276b77925ab2722a99b7b5d5649aecc36ebbdb045a\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://69643e83f68e6a13d5075c7565bfce326673b0bd98c432033c4603ea84835746\",\"dweb:/ipfs/QmSwSzjYyV7qudi5vvsmzHMG2Z4YJZxX51RRXXVCLaNcEU\"]},\"lib/account-abstraction-v6/contracts/core/NonceManager.sol\":{\"keccak256\":\"0xa17a4a6fde70088ab18ffe6df830f3efa31f1cd0e1a7160336c96e3c94984d25\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b38615df9f80c56282b72888e9ba1eb1a9413fa67a0dbf094deda7af9feb38e7\",\"dweb:/ipfs/QmSzcXetEJRH4UHuUmZiSgX6bFgfqHWfmyuxVnh4NosMk1\"]},\"lib/account-abstraction-v6/contracts/core/SenderCreator.sol\":{\"keccak256\":\"0x44b9449fec82d6cdfb01d52fdd5a72f90099c651316123810cf9633f00b018c2\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a9c0487390e72638681d175c45bc92425c802fffdca4bd0ae8457782ee284612\",\"dweb:/ipfs/QmVbzuehCUWJWqEHyMWuc6cRVbxfcMdFsmGL9o4Wz7WY2x\"]},\"lib/account-abstraction-v6/contracts/core/StakeManager.sol\":{\"keccak256\":\"0x21aa0956382bd000b1b8c3b1d19ca6ebcd6c9029eebb19c612fb38ee5dd2430a\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://0a625c8795354d9f429367f9c1d14eb8af7db9c7f2c2a2033e2066ced76a573a\",\"dweb:/ipfs/Qmd1j6UarUg54q1G2HCNCLQz8XGVZR1qxX7eQ6cytHpQPN\"]},\"lib/account-abstraction-v6/contracts/interfaces/IAccount.sol\":{\"keccak256\":\"0x556a0e5980de18e90b115553ed502408155ba35f58642823010d9288047bc418\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a0f420134b79596db8737173c7b933ae0a33059e107b6327c43aa40d4744a9e4\",\"dweb:/ipfs/QmRo8s1AhXmEMV7uPYnbpYwU19e9Bk6jmYBJTiPx3Fo85W\"]},\"lib/account-abstraction-v6/contracts/interfaces/IAggregator.sol\":{\"keccak256\":\"0x060e9ddb0152250c269ba0640dc5753834ac44cf182a2837d508c0c529cae26a\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://20ed837bc5909c89ff1910246bf245a5dad6840aa939382e1694964eb7dbd37b\",\"dweb:/ipfs/QmTMybRq5yyghPDDs1ZCNAVB9sSJ4WHe6Q9mejuKPTAdNP\"]},\"lib/account-abstraction-v6/contracts/interfaces/IEntryPoint.sol\":{\"keccak256\":\"0x3a90bf308819ed125fa4202f880999caff8a8686633b8ddb79a30ca240d5b8f8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d2d21cc92c2fdab2b58d21bc25d4cd0e8c284b922528a186b087b818d54bc6cf\",\"dweb:/ipfs/QmT1qrfuBjsv2rmRCDn8mgPXHp94hARJwzbcDuBLDTbFWd\"]},\"lib/account-abstraction-v6/contracts/interfaces/INonceManager.sol\":{\"keccak256\":\"0x509871e6c63663cdcc3eba19920fe84e991f38b289b1377ac3c3a6d9f22d7e12\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://00fe21b4349b24c50df60e1a705179293982bd9e7a32b78d4bac9620f89e7fe2\",\"dweb:/ipfs/QmSFFYGfUwQbVa6hASjU7YxTvgi2HkfrPr4X5oPHscHg8b\"]},\"lib/account-abstraction-v6/contracts/interfaces/IPaymaster.sol\":{\"keccak256\":\"0x36858ba8685024974f533530420688da3454d29996ebc42e410673a1ed2ec456\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://616cbcf51778b1961b7f20a547bec7efae6d1d565df0f651926241ed8bde9ad8\",\"dweb:/ipfs/QmaVsgffUUmeUJYgStvRr8cNZ1LBbrc3FYNLW4JT1dVLia\"]},\"lib/account-abstraction-v6/contracts/interfaces/IStakeManager.sol\":{\"keccak256\":\"0xd227b02888cd4ac68daebcdfd992ec00f9fff66fa3b3bb16f656cd582fa3480f\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://b389da4714a138be63704a576a482505eab2855e263b38a93706395d8d42e7c3\",\"dweb:/ipfs/QmeeAZpdHwUXxqP8pxA7GNtoCGBmmH4FaqLLwScVKGxtxZ\"]},\"lib/account-abstraction-v6/contracts/interfaces/UserOperation.sol\":{\"keccak256\":\"0x61374003361059087fdcf17967a7bba052badeaf5c7f0ae689166f8aafd3a45c\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://6ff83c59432e733bf6304dda27cd4b0f34401917dd535e2669cc842d2d26568c\",\"dweb:/ipfs/QmPJbHU5TAjHqUTZzAcicEeG2nknmwCN43L4EW9LHbknTN\"]},\"lib/account-abstraction-v6/contracts/utils/Exec.sol\":{\"keccak256\":\"0x5b232117afbc2939f3ffc92745614867e9e1d475a3e1e5443adae13c200174f1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://62e7365379a06ead7b47637945bcaee095d51aab1d3ac00ddec69443e6cbe9fe\",\"dweb:/ipfs/QmctG3aw4U3KMSMeJKoLJ1NJewjMWfppnd1m3kxNTe39Uy\"]},\"lib/openzeppelin-contracts-v4.8.3/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x190dd6f8d592b7e4e930feb7f4313aeb8e1c4ad3154c27ce1cf6a512fc30d8cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ce8dfb62d0c4fa260d6eec8f1cd47f5f2a044e11bde5b31d18072fa6e7d9010\",\"dweb:/ipfs/QmTyFztU3tLEcEDnqqiaW4UJetqsU77LXc6pjc9oTXCK5u\"]},\"lib/openzeppelin-contracts-v4.8.3/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"lib/openzeppelin-contracts-v4.8.3/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"lib/openzeppelin-contracts-v4.8.3/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"src/v06/EntryPointGasEstimationOverride.sol\":{\"keccak256\":\"0x96c89aa516d2e9f071c0f1634a88abced225e742490e3c27bf1a417fdd9a8390\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://6eb5a95767e162068d1d7af3a167129d0f2661536e52b45384c01ae9ddb6ff39\",\"dweb:/ipfs/QmXXEFdaGnsPbaQanfjBcXfg4LHnQCdW3x1JfNS6CeGWb5\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.17+commit.8df45f5f"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes","name":"reason","type":"bytes"}],"type":"error","name":"CallPhaseReverted"},{"inputs":[{"internalType":"uint256","name":"preOpGas","type":"uint256"},{"internalType":"uint256","name":"paid","type":"uint256"},{"internalType":"uint48","name":"validAfter","type":"uint48"},{"internalType":"uint48","name":"validUntil","type":"uint48"},{"internalType":"bool","name":"targetSuccess","type":"bool"},{"internalType":"bytes","name":"targetResult","type":"bytes"}],"type":"error","name":"ExecutionResult"},{"inputs":[{"internalType":"uint256","name":"opIndex","type":"uint256"},{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"FailedOp"},{"inputs":[{"internalType":"uint256","name":"opIndex","type":"uint256"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"inner","type":"bytes"}],"type":"error","name":"FailedOpWithRevert"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"SenderAddressResult"},{"inputs":[{"internalType":"address","name":"aggregator","type":"address"}],"type":"error","name":"SignatureValidationFailed"},{"inputs":[{"internalType":"struct IEntryPoint.ReturnInfo","name":"returnInfo","type":"tuple","components":[{"internalType":"uint256","name":"preOpGas","type":"uint256"},{"internalType":"uint256","name":"prefund","type":"uint256"},{"internalType":"bool","name":"sigFailed","type":"bool"},{"internalType":"uint48","name":"validAfter","type":"uint48"},{"internalType":"uint48","name":"validUntil","type":"uint48"},{"internalType":"bytes","name":"paymasterContext","type":"bytes"}]},{"internalType":"struct IStakeManager.StakeInfo","name":"senderInfo","type":"tuple","components":[{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint256","name":"unstakeDelaySec","type":"uint256"}]},{"internalType":"struct IStakeManager.StakeInfo","name":"factoryInfo","type":"tuple","components":[{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint256","name":"unstakeDelaySec","type":"uint256"}]},{"internalType":"struct IStakeManager.StakeInfo","name":"paymasterInfo","type":"tuple","components":[{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint256","name":"unstakeDelaySec","type":"uint256"}]}],"type":"error","name":"ValidationResult"},{"inputs":[{"internalType":"struct IEntryPoint.ReturnInfo","name":"returnInfo","type":"tuple","components":[{"internalType":"uint256","name":"preOpGas","type":"uint256"},{"internalType":"uint256","name":"prefund","type":"uint256"},{"internalType":"bool","name":"sigFailed","type":"bool"},{"internalType":"uint48","name":"validAfter","type":"uint48"},{"internalType":"uint48","name":"validUntil","type":"uint48"},{"internalType":"bytes","name":"paymasterContext","type":"bytes"}]},{"internalType":"struct IStakeManager.StakeInfo","name":"senderInfo","type":"tuple","components":[{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint256","name":"unstakeDelaySec","type":"uint256"}]},{"internalType":"struct IStakeManager.StakeInfo","name":"factoryInfo","type":"tuple","components":[{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint256","name":"unstakeDelaySec","type":"uint256"}]},{"internalType":"struct IStakeManager.StakeInfo","name":"paymasterInfo","type":"tuple","components":[{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint256","name":"unstakeDelaySec","type":"uint256"}]},{"internalType":"struct IEntryPoint.AggregatorStakeInfo","name":"aggregatorInfo","type":"tuple","components":[{"internalType":"address","name":"aggregator","type":"address"},{"internalType":"struct IStakeManager.StakeInfo","name":"stakeInfo","type":"tuple","components":[{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint256","name":"unstakeDelaySec","type":"uint256"}]}]}],"type":"error","name":"ValidationResultWithAggregation"},{"inputs":[{"internalType":"bytes32","name":"userOpHash","type":"bytes32","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"factory","type":"address","indexed":false},{"internalType":"address","name":"paymaster","type":"address","indexed":false}],"type":"event","name":"AccountDeployed","anonymous":false},{"inputs":[],"type":"event","name":"BeforeExecution","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"totalDeposit","type":"uint256","indexed":false}],"type":"event","name":"Deposited","anonymous":false},{"inputs":[{"internalType":"address","name":"aggregator","type":"address","indexed":true}],"type":"event","name":"SignatureAggregatorChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"totalStaked","type":"uint256","indexed":false},{"internalType":"uint256","name":"unstakeDelaySec","type":"uint256","indexed":false}],"type":"event","name":"StakeLocked","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"withdrawTime","type":"uint256","indexed":false}],"type":"event","name":"StakeUnlocked","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"withdrawAddress","type":"address","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"StakeWithdrawn","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"userOpHash","type":"bytes32","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"paymaster","type":"address","indexed":true},{"internalType":"uint256","name":"nonce","type":"uint256","indexed":false},{"internalType":"bool","name":"success","type":"bool","indexed":false},{"internalType":"uint256","name":"actualGasCost","type":"uint256","indexed":false},{"internalType":"uint256","name":"actualGasUsed","type":"uint256","indexed":false}],"type":"event","name":"UserOperationEvent","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"userOpHash","type":"bytes32","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"uint256","name":"nonce","type":"uint256","indexed":false},{"internalType":"bytes","name":"revertReason","type":"bytes","indexed":false}],"type":"event","name":"UserOperationRevertReason","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"withdrawAddress","type":"address","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Withdrawn","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"SIG_VALIDATION_FAILED","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"paymasterAndData","type":"bytes"}],"stateMutability":"view","type":"function","name":"_validateSenderAndPaymaster"},{"inputs":[{"internalType":"uint32","name":"unstakeDelaySec","type":"uint32"}],"stateMutability":"payable","type":"function","name":"addStake"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"payable","type":"function","name":"depositTo"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"deposits","outputs":[{"internalType":"uint112","name":"deposit","type":"uint112"},{"internalType":"bool","name":"staked","type":"bool"},{"internalType":"uint112","name":"stake","type":"uint112"},{"internalType":"uint32","name":"unstakeDelaySec","type":"uint32"},{"internalType":"uint48","name":"withdrawTime","type":"uint48"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getDepositInfo","outputs":[{"internalType":"struct IStakeManager.DepositInfo","name":"info","type":"tuple","components":[{"internalType":"uint112","name":"deposit","type":"uint112"},{"internalType":"bool","name":"staked","type":"bool"},{"internalType":"uint112","name":"stake","type":"uint112"},{"internalType":"uint32","name":"unstakeDelaySec","type":"uint32"},{"internalType":"uint48","name":"withdrawTime","type":"uint48"}]}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint192","name":"key","type":"uint192"}],"stateMutability":"view","type":"function","name":"getNonce","outputs":[{"internalType":"uint256","name":"nonce","type":"uint256"}]},{"inputs":[{"internalType":"bytes","name":"initCode","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"getSenderAddress"},{"inputs":[{"internalType":"struct UserOperation","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":"uint256","name":"callGasLimit","type":"uint256"},{"internalType":"uint256","name":"verificationGasLimit","type":"uint256"},{"internalType":"uint256","name":"preVerificationGas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"maxPriorityFeePerGas","type":"uint256"},{"internalType":"bytes","name":"paymasterAndData","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"view","type":"function","name":"getUserOpHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"struct IEntryPoint.UserOpsPerAggregator[]","name":"opsPerAggregator","type":"tuple[]","components":[{"internalType":"struct UserOperation[]","name":"userOps","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":"uint256","name":"callGasLimit","type":"uint256"},{"internalType":"uint256","name":"verificationGasLimit","type":"uint256"},{"internalType":"uint256","name":"preVerificationGas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"maxPriorityFeePerGas","type":"uint256"},{"internalType":"bytes","name":"paymasterAndData","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}]},{"internalType":"contract IAggregator","name":"aggregator","type":"address"},{"internalType":"bytes","name":"signature","type":"bytes"}]},{"internalType":"address payable","name":"beneficiary","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"handleAggregatedOps"},{"inputs":[{"internalType":"struct UserOperation[]","name":"ops","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":"uint256","name":"callGasLimit","type":"uint256"},{"internalType":"uint256","name":"verificationGasLimit","type":"uint256"},{"internalType":"uint256","name":"preVerificationGas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"maxPriorityFeePerGas","type":"uint256"},{"internalType":"bytes","name":"paymasterAndData","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}]},{"internalType":"address payable","name":"beneficiary","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"handleOps"},{"inputs":[{"internalType":"uint192","name":"key","type":"uint192"}],"stateMutability":"nonpayable","type":"function","name":"incrementNonce"},{"inputs":[{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"struct EntryPointGasEstimationOverride06.UserOpInfo","name":"opInfo","type":"tuple","components":[{"internalType":"struct EntryPointGasEstimationOverride06.MemoryUserOp","name":"mUserOp","type":"tuple","components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"callGasLimit","type":"uint256"},{"internalType":"uint256","name":"verificationGasLimit","type":"uint256"},{"internalType":"uint256","name":"preVerificationGas","type":"uint256"},{"internalType":"address","name":"paymaster","type":"address"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"maxPriorityFeePerGas","type":"uint256"}]},{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"uint256","name":"prefund","type":"uint256"},{"internalType":"uint256","name":"contextOffset","type":"uint256"},{"internalType":"uint256","name":"preOpGas","type":"uint256"}]},{"internalType":"bytes","name":"context","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"innerHandleOp","outputs":[{"internalType":"uint256","name":"actualGasCost","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint192","name":"","type":"uint192"}],"stateMutability":"view","type":"function","name":"nonceSequenceNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"struct UserOperation","name":"op","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":"uint256","name":"callGasLimit","type":"uint256"},{"internalType":"uint256","name":"verificationGasLimit","type":"uint256"},{"internalType":"uint256","name":"preVerificationGas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"maxPriorityFeePerGas","type":"uint256"},{"internalType":"bytes","name":"paymasterAndData","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}]},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"targetCallData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"simulateHandleOp"},{"inputs":[{"internalType":"struct UserOperation","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":"uint256","name":"callGasLimit","type":"uint256"},{"internalType":"uint256","name":"verificationGasLimit","type":"uint256"},{"internalType":"uint256","name":"preVerificationGas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"maxPriorityFeePerGas","type":"uint256"},{"internalType":"bytes","name":"paymasterAndData","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"simulateValidation"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unlockStake"},{"inputs":[{"internalType":"address payable","name":"withdrawAddress","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"withdrawStake"},{"inputs":[{"internalType":"address payable","name":"withdrawAddress","type":"address"},{"internalType":"uint256","name":"withdrawAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdrawTo"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"addStake(uint32)":{"params":{"unstakeDelaySec":"the new lock duration before the deposit can be withdrawn."}},"getDepositInfo(address)":{"returns":{"info":"- full deposit information of given account"}},"getNonce(address,uint192)":{"params":{"key":"the high 192 bit of the nonce","sender":"the account address"},"returns":{"nonce":"a full nonce to pass for next UserOp with this sender."}},"getSenderAddress(bytes)":{"params":{"initCode":"the constructor code to be passed into the UserOperation."}},"handleAggregatedOps(((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address,bytes)[],address)":{"params":{"beneficiary":"the address to receive the fees","opsPerAggregator":"the operations to execute, grouped by aggregator (or address(0) for no-aggregator accounts)"}},"handleOps((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address)":{"params":{"beneficiary":"the address to receive the fees","ops":"the operations to execute"}},"simulateHandleOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address,bytes)":{"params":{"op":"the UserOperation to simulate","target":"if nonzero, a target address to call after userop simulation. If called, the targetSuccess and targetResult are set to the return from that call.","targetCallData":"callData to pass to target address"}},"simulateValidation((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))":{"details":"this method always revert. Successful result is ValidationResult error. other errors are failures.The node must also verify it doesn't use banned opcodes, and that it doesn't reference storage outside the account's data.","params":{"userOp":"the user operation to validate."}},"withdrawStake(address)":{"params":{"withdrawAddress":"the address to send withdrawn value."}},"withdrawTo(address,uint256)":{"params":{"withdrawAddress":"the address to send withdrawn value.","withdrawAmount":"the amount to withdraw."}}},"version":1},"userdoc":{"kind":"user","methods":{"SIG_VALIDATION_FAILED()":{"notice":"for simulation purposes, validateUserOp (and validatePaymasterUserOp) must return this value in case of signature failure, instead of revert."},"_validateSenderAndPaymaster(bytes,address,bytes)":{"notice":"Called only during simulation. This function always reverts to prevent warm/cold storage differentiation in simulation vs execution."},"addStake(uint32)":{"notice":"add to the account's stake - amount and delay any pending unstake is first cancelled."},"balanceOf(address)":{"notice":"return the deposit (for gas payment) of the account"},"depositTo(address)":{"notice":"add to the deposit of the given account"},"deposits(address)":{"notice":"maps paymaster to their deposits and stakes"},"getNonce(address,uint192)":{"notice":"Return the next nonce for this sender. Within a given key, the nonce values are sequenced (starting with zero, and incremented by one on each userop) But UserOp with different keys can come with arbitrary order."},"getSenderAddress(bytes)":{"notice":"Get counterfactual sender address. Calculate the sender contract address that will be generated by the initCode and salt in the UserOperation. this method always revert, and returns the address in SenderAddressResult error"},"getUserOpHash((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))":{"notice":"generate a request Id - unique identifier for this request. the request ID is a hash over the content of the userOp (except the signature), the entrypoint and the chainid."},"handleAggregatedOps(((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address,bytes)[],address)":{"notice":"Execute a batch of UserOperation with Aggregators"},"handleOps((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address)":{"notice":"Execute a batch of UserOperations. no signature aggregator is used. if any account requires an aggregator (that is, it returned an aggregator when performing simulateValidation), then handleAggregatedOps() must be used instead."},"incrementNonce(uint192)":{"notice":"Manually increment the nonce of the sender. This method is exposed just for completeness.. Account does NOT need to call it, neither during validation, nor elsewhere, as the EntryPoint will update the nonce regardless. Possible use-case is call it with various keys to \"initialize\" their nonces to one, so that future UserOperations will not pay extra for the first transaction with a given key."},"innerHandleOp(bytes,((address,uint256,uint256,uint256,uint256,address,uint256,uint256),bytes32,uint256,uint256,uint256),bytes)":{"notice":"inner function to handle a UserOperation. Must be declared \"external\" to open a call context, but it can only be called by handleOps."},"nonceSequenceNumber(address,uint192)":{"notice":"The next valid sequence number for a given nonce key."},"simulateHandleOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address,bytes)":{"notice":"simulate full execution of a UserOperation (including both validation and target execution) this method will always revert with \"ExecutionResult\". it performs full validation of the UserOperation, but ignores signature error. an optional target address is called after the userop succeeds, and its value is returned (before the entire call is reverted) Note that in order to collect the the success/failure of the target call, it must be executed with trace enabled to track the emitted events."},"simulateValidation((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))":{"notice":"Simulate a call to account.validateUserOp and paymaster.validatePaymasterUserOp."},"unlockStake()":{"notice":"attempt to unlock the stake. the value can be withdrawn (using withdrawStake) after the unstake delay."},"withdrawStake(address)":{"notice":"withdraw from the (unlocked) stake. must first call unlockStake and wait for the unstakeDelay to pass"},"withdrawTo(address,uint256)":{"notice":"withdraw from the deposit."}},"version":1}},"settings":{"remappings":["@account-abstraction-v6/=lib/account-abstraction-v6/contracts/","@account-abstraction-v7/=lib/account-abstraction-v7/contracts/","@account-abstraction-v8/=lib/account-abstraction-v8/contracts/","@openzeppelin-v4.8.3/=lib/openzeppelin-contracts-v4.8.3/","@openzeppelin-v5.0.2/=lib/openzeppelin-contracts-v5.0.2/","@openzeppelin-v5.1.0/=lib/openzeppelin-contracts-v5.1.0/","@openzeppelin/contracts/=lib/openzeppelin-contracts-v5.0.2/contracts/","@test-aa-utils/=lib/singleton-paymaster/test/utils/account-abstraction/","@test-utils/=lib/singleton-paymaster/test/utils/","account-abstraction-v6/=lib/account-abstraction-v6/contracts/","account-abstraction-v7/=lib/account-abstraction-v7/contracts/","account-abstraction-v8/=lib/account-abstraction-v8/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-v5.0.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-v5.1.0/lib/halmos-cheatcodes/src/","openzeppelin-contracts-v4.8.3/=lib/openzeppelin-contracts-v4.8.3/","openzeppelin-contracts-v5.0.2/=lib/openzeppelin-contracts-v5.0.2/","openzeppelin-contracts-v5.1.0/=lib/openzeppelin-contracts-v5.1.0/","singleton-paymaster/=lib/singleton-paymaster/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":1000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/v06/EntryPointGasEstimationOverride.sol":"EntryPointGasEstimationOverride06"},"evmVersion":"london","libraries":{},"viaIR":true},"sources":{"lib/account-abstraction-v6/contracts/core/Helpers.sol":{"keccak256":"0x591c87519f7155d1909210276b77925ab2722a99b7b5d5649aecc36ebbdb045a","urls":["bzz-raw://69643e83f68e6a13d5075c7565bfce326673b0bd98c432033c4603ea84835746","dweb:/ipfs/QmSwSzjYyV7qudi5vvsmzHMG2Z4YJZxX51RRXXVCLaNcEU"],"license":"GPL-3.0"},"lib/account-abstraction-v6/contracts/core/NonceManager.sol":{"keccak256":"0xa17a4a6fde70088ab18ffe6df830f3efa31f1cd0e1a7160336c96e3c94984d25","urls":["bzz-raw://b38615df9f80c56282b72888e9ba1eb1a9413fa67a0dbf094deda7af9feb38e7","dweb:/ipfs/QmSzcXetEJRH4UHuUmZiSgX6bFgfqHWfmyuxVnh4NosMk1"],"license":"GPL-3.0"},"lib/account-abstraction-v6/contracts/core/SenderCreator.sol":{"keccak256":"0x44b9449fec82d6cdfb01d52fdd5a72f90099c651316123810cf9633f00b018c2","urls":["bzz-raw://a9c0487390e72638681d175c45bc92425c802fffdca4bd0ae8457782ee284612","dweb:/ipfs/QmVbzuehCUWJWqEHyMWuc6cRVbxfcMdFsmGL9o4Wz7WY2x"],"license":"GPL-3.0"},"lib/account-abstraction-v6/contracts/core/StakeManager.sol":{"keccak256":"0x21aa0956382bd000b1b8c3b1d19ca6ebcd6c9029eebb19c612fb38ee5dd2430a","urls":["bzz-raw://0a625c8795354d9f429367f9c1d14eb8af7db9c7f2c2a2033e2066ced76a573a","dweb:/ipfs/Qmd1j6UarUg54q1G2HCNCLQz8XGVZR1qxX7eQ6cytHpQPN"],"license":"GPL-3.0-only"},"lib/account-abstraction-v6/contracts/interfaces/IAccount.sol":{"keccak256":"0x556a0e5980de18e90b115553ed502408155ba35f58642823010d9288047bc418","urls":["bzz-raw://a0f420134b79596db8737173c7b933ae0a33059e107b6327c43aa40d4744a9e4","dweb:/ipfs/QmRo8s1AhXmEMV7uPYnbpYwU19e9Bk6jmYBJTiPx3Fo85W"],"license":"GPL-3.0"},"lib/account-abstraction-v6/contracts/interfaces/IAggregator.sol":{"keccak256":"0x060e9ddb0152250c269ba0640dc5753834ac44cf182a2837d508c0c529cae26a","urls":["bzz-raw://20ed837bc5909c89ff1910246bf245a5dad6840aa939382e1694964eb7dbd37b","dweb:/ipfs/QmTMybRq5yyghPDDs1ZCNAVB9sSJ4WHe6Q9mejuKPTAdNP"],"license":"GPL-3.0"},"lib/account-abstraction-v6/contracts/interfaces/IEntryPoint.sol":{"keccak256":"0x3a90bf308819ed125fa4202f880999caff8a8686633b8ddb79a30ca240d5b8f8","urls":["bzz-raw://d2d21cc92c2fdab2b58d21bc25d4cd0e8c284b922528a186b087b818d54bc6cf","dweb:/ipfs/QmT1qrfuBjsv2rmRCDn8mgPXHp94hARJwzbcDuBLDTbFWd"],"license":"GPL-3.0"},"lib/account-abstraction-v6/contracts/interfaces/INonceManager.sol":{"keccak256":"0x509871e6c63663cdcc3eba19920fe84e991f38b289b1377ac3c3a6d9f22d7e12","urls":["bzz-raw://00fe21b4349b24c50df60e1a705179293982bd9e7a32b78d4bac9620f89e7fe2","dweb:/ipfs/QmSFFYGfUwQbVa6hASjU7YxTvgi2HkfrPr4X5oPHscHg8b"],"license":"GPL-3.0"},"lib/account-abstraction-v6/contracts/interfaces/IPaymaster.sol":{"keccak256":"0x36858ba8685024974f533530420688da3454d29996ebc42e410673a1ed2ec456","urls":["bzz-raw://616cbcf51778b1961b7f20a547bec7efae6d1d565df0f651926241ed8bde9ad8","dweb:/ipfs/QmaVsgffUUmeUJYgStvRr8cNZ1LBbrc3FYNLW4JT1dVLia"],"license":"GPL-3.0"},"lib/account-abstraction-v6/contracts/interfaces/IStakeManager.sol":{"keccak256":"0xd227b02888cd4ac68daebcdfd992ec00f9fff66fa3b3bb16f656cd582fa3480f","urls":["bzz-raw://b389da4714a138be63704a576a482505eab2855e263b38a93706395d8d42e7c3","dweb:/ipfs/QmeeAZpdHwUXxqP8pxA7GNtoCGBmmH4FaqLLwScVKGxtxZ"],"license":"GPL-3.0-only"},"lib/account-abstraction-v6/contracts/interfaces/UserOperation.sol":{"keccak256":"0x61374003361059087fdcf17967a7bba052badeaf5c7f0ae689166f8aafd3a45c","urls":["bzz-raw://6ff83c59432e733bf6304dda27cd4b0f34401917dd535e2669cc842d2d26568c","dweb:/ipfs/QmPJbHU5TAjHqUTZzAcicEeG2nknmwCN43L4EW9LHbknTN"],"license":"GPL-3.0"},"lib/account-abstraction-v6/contracts/utils/Exec.sol":{"keccak256":"0x5b232117afbc2939f3ffc92745614867e9e1d475a3e1e5443adae13c200174f1","urls":["bzz-raw://62e7365379a06ead7b47637945bcaee095d51aab1d3ac00ddec69443e6cbe9fe","dweb:/ipfs/QmctG3aw4U3KMSMeJKoLJ1NJewjMWfppnd1m3kxNTe39Uy"],"license":"LGPL-3.0-only"},"lib/openzeppelin-contracts-v4.8.3/contracts/security/ReentrancyGuard.sol":{"keccak256":"0x190dd6f8d592b7e4e930feb7f4313aeb8e1c4ad3154c27ce1cf6a512fc30d8cc","urls":["bzz-raw://4ce8dfb62d0c4fa260d6eec8f1cd47f5f2a044e11bde5b31d18072fa6e7d9010","dweb:/ipfs/QmTyFztU3tLEcEDnqqiaW4UJetqsU77LXc6pjc9oTXCK5u"],"license":"MIT"},"lib/openzeppelin-contracts-v4.8.3/contracts/utils/StorageSlot.sol":{"keccak256":"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d","urls":["bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4","dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B"],"license":"MIT"},"lib/openzeppelin-contracts-v4.8.3/contracts/utils/introspection/ERC165.sol":{"keccak256":"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b","urls":["bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d","dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43"],"license":"MIT"},"lib/openzeppelin-contracts-v4.8.3/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"src/v06/EntryPointGasEstimationOverride.sol":{"keccak256":"0x96c89aa516d2e9f071c0f1634a88abced225e742490e3c27bf1a417fdd9a8390","urls":["bzz-raw://6eb5a95767e162068d1d7af3a167129d0f2661536e52b45384c01ae9ddb6ff39","dweb:/ipfs/QmXXEFdaGnsPbaQanfjBcXfg4LHnQCdW3x1JfNS6CeGWb5"],"license":"GPL-3.0"}},"version":1},"id":16}
1
+ {"abi":[{"type":"receive","stateMutability":"payable"},{"type":"function","name":"SIG_VALIDATION_FAILED","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"_validateSenderAndPaymaster","inputs":[{"name":"initCode","type":"bytes","internalType":"bytes"},{"name":"sender","type":"address","internalType":"address"},{"name":"paymasterAndData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"addStake","inputs":[{"name":"unstakeDelaySec","type":"uint32","internalType":"uint32"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"depositTo","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"deposits","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"deposit","type":"uint112","internalType":"uint112"},{"name":"staked","type":"bool","internalType":"bool"},{"name":"stake","type":"uint112","internalType":"uint112"},{"name":"unstakeDelaySec","type":"uint32","internalType":"uint32"},{"name":"withdrawTime","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"getDepositInfo","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"info","type":"tuple","internalType":"struct IStakeManager.DepositInfo","components":[{"name":"deposit","type":"uint112","internalType":"uint112"},{"name":"staked","type":"bool","internalType":"bool"},{"name":"stake","type":"uint112","internalType":"uint112"},{"name":"unstakeDelaySec","type":"uint32","internalType":"uint32"},{"name":"withdrawTime","type":"uint48","internalType":"uint48"}]}],"stateMutability":"view"},{"type":"function","name":"getNonce","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"uint192","internalType":"uint192"}],"outputs":[{"name":"nonce","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getSenderAddress","inputs":[{"name":"initCode","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getUserOpHash","inputs":[{"name":"userOp","type":"tuple","internalType":"struct UserOperation","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":"callGasLimit","type":"uint256","internalType":"uint256"},{"name":"verificationGasLimit","type":"uint256","internalType":"uint256"},{"name":"preVerificationGas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"maxPriorityFeePerGas","type":"uint256","internalType":"uint256"},{"name":"paymasterAndData","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"handleAggregatedOps","inputs":[{"name":"opsPerAggregator","type":"tuple[]","internalType":"struct IEntryPoint.UserOpsPerAggregator[]","components":[{"name":"userOps","type":"tuple[]","internalType":"struct UserOperation[]","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":"callGasLimit","type":"uint256","internalType":"uint256"},{"name":"verificationGasLimit","type":"uint256","internalType":"uint256"},{"name":"preVerificationGas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"maxPriorityFeePerGas","type":"uint256","internalType":"uint256"},{"name":"paymasterAndData","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"aggregator","type":"address","internalType":"contract IAggregator"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"beneficiary","type":"address","internalType":"address payable"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"handleOps","inputs":[{"name":"ops","type":"tuple[]","internalType":"struct UserOperation[]","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":"callGasLimit","type":"uint256","internalType":"uint256"},{"name":"verificationGasLimit","type":"uint256","internalType":"uint256"},{"name":"preVerificationGas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"maxPriorityFeePerGas","type":"uint256","internalType":"uint256"},{"name":"paymasterAndData","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"beneficiary","type":"address","internalType":"address payable"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"incrementNonce","inputs":[{"name":"key","type":"uint192","internalType":"uint192"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"innerHandleOp","inputs":[{"name":"callData","type":"bytes","internalType":"bytes"},{"name":"opInfo","type":"tuple","internalType":"struct EntryPointGasEstimationOverride06.UserOpInfo","components":[{"name":"mUserOp","type":"tuple","internalType":"struct EntryPointGasEstimationOverride06.MemoryUserOp","components":[{"name":"sender","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"callGasLimit","type":"uint256","internalType":"uint256"},{"name":"verificationGasLimit","type":"uint256","internalType":"uint256"},{"name":"preVerificationGas","type":"uint256","internalType":"uint256"},{"name":"paymaster","type":"address","internalType":"address"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"maxPriorityFeePerGas","type":"uint256","internalType":"uint256"}]},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"prefund","type":"uint256","internalType":"uint256"},{"name":"contextOffset","type":"uint256","internalType":"uint256"},{"name":"preOpGas","type":"uint256","internalType":"uint256"}]},{"name":"context","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"actualGasCost","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"nonceSequenceNumber","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint192","internalType":"uint192"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"simulateHandleOp","inputs":[{"name":"op","type":"tuple","internalType":"struct UserOperation","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":"callGasLimit","type":"uint256","internalType":"uint256"},{"name":"verificationGasLimit","type":"uint256","internalType":"uint256"},{"name":"preVerificationGas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"maxPriorityFeePerGas","type":"uint256","internalType":"uint256"},{"name":"paymasterAndData","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"target","type":"address","internalType":"address"},{"name":"targetCallData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"simulateValidation","inputs":[{"name":"userOp","type":"tuple","internalType":"struct UserOperation","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":"callGasLimit","type":"uint256","internalType":"uint256"},{"name":"verificationGasLimit","type":"uint256","internalType":"uint256"},{"name":"preVerificationGas","type":"uint256","internalType":"uint256"},{"name":"maxFeePerGas","type":"uint256","internalType":"uint256"},{"name":"maxPriorityFeePerGas","type":"uint256","internalType":"uint256"},{"name":"paymasterAndData","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unlockStake","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawStake","inputs":[{"name":"withdrawAddress","type":"address","internalType":"address payable"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawTo","inputs":[{"name":"withdrawAddress","type":"address","internalType":"address payable"},{"name":"withdrawAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AccountDeployed","inputs":[{"name":"userOpHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"factory","type":"address","indexed":false,"internalType":"address"},{"name":"paymaster","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BeforeExecution","inputs":[],"anonymous":false},{"type":"event","name":"Deposited","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"totalDeposit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SignatureAggregatorChanged","inputs":[{"name":"aggregator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StakeLocked","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"totalStaked","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"unstakeDelaySec","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"StakeUnlocked","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"withdrawTime","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"StakeWithdrawn","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"withdrawAddress","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"UserOperationEvent","inputs":[{"name":"userOpHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"paymaster","type":"address","indexed":true,"internalType":"address"},{"name":"nonce","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"success","type":"bool","indexed":false,"internalType":"bool"},{"name":"actualGasCost","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"actualGasUsed","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"UserOperationRevertReason","inputs":[{"name":"userOpHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"nonce","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"revertReason","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"Withdrawn","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"withdrawAddress","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"CallPhaseReverted","inputs":[{"name":"reason","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"ExecutionResult","inputs":[{"name":"preOpGas","type":"uint256","internalType":"uint256"},{"name":"paid","type":"uint256","internalType":"uint256"},{"name":"validAfter","type":"uint48","internalType":"uint48"},{"name":"validUntil","type":"uint48","internalType":"uint48"},{"name":"targetSuccess","type":"bool","internalType":"bool"},{"name":"targetResult","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"FailedOp","inputs":[{"name":"opIndex","type":"uint256","internalType":"uint256"},{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"FailedOpWithRevert","inputs":[{"name":"opIndex","type":"uint256","internalType":"uint256"},{"name":"reason","type":"string","internalType":"string"},{"name":"inner","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"SenderAddressResult","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"SignatureValidationFailed","inputs":[{"name":"aggregator","type":"address","internalType":"address"}]},{"type":"error","name":"ValidationResult","inputs":[{"name":"returnInfo","type":"tuple","internalType":"struct IEntryPoint.ReturnInfo","components":[{"name":"preOpGas","type":"uint256","internalType":"uint256"},{"name":"prefund","type":"uint256","internalType":"uint256"},{"name":"sigFailed","type":"bool","internalType":"bool"},{"name":"validAfter","type":"uint48","internalType":"uint48"},{"name":"validUntil","type":"uint48","internalType":"uint48"},{"name":"paymasterContext","type":"bytes","internalType":"bytes"}]},{"name":"senderInfo","type":"tuple","internalType":"struct IStakeManager.StakeInfo","components":[{"name":"stake","type":"uint256","internalType":"uint256"},{"name":"unstakeDelaySec","type":"uint256","internalType":"uint256"}]},{"name":"factoryInfo","type":"tuple","internalType":"struct IStakeManager.StakeInfo","components":[{"name":"stake","type":"uint256","internalType":"uint256"},{"name":"unstakeDelaySec","type":"uint256","internalType":"uint256"}]},{"name":"paymasterInfo","type":"tuple","internalType":"struct IStakeManager.StakeInfo","components":[{"name":"stake","type":"uint256","internalType":"uint256"},{"name":"unstakeDelaySec","type":"uint256","internalType":"uint256"}]}]},{"type":"error","name":"ValidationResultWithAggregation","inputs":[{"name":"returnInfo","type":"tuple","internalType":"struct IEntryPoint.ReturnInfo","components":[{"name":"preOpGas","type":"uint256","internalType":"uint256"},{"name":"prefund","type":"uint256","internalType":"uint256"},{"name":"sigFailed","type":"bool","internalType":"bool"},{"name":"validAfter","type":"uint48","internalType":"uint48"},{"name":"validUntil","type":"uint48","internalType":"uint48"},{"name":"paymasterContext","type":"bytes","internalType":"bytes"}]},{"name":"senderInfo","type":"tuple","internalType":"struct IStakeManager.StakeInfo","components":[{"name":"stake","type":"uint256","internalType":"uint256"},{"name":"unstakeDelaySec","type":"uint256","internalType":"uint256"}]},{"name":"factoryInfo","type":"tuple","internalType":"struct IStakeManager.StakeInfo","components":[{"name":"stake","type":"uint256","internalType":"uint256"},{"name":"unstakeDelaySec","type":"uint256","internalType":"uint256"}]},{"name":"paymasterInfo","type":"tuple","internalType":"struct IStakeManager.StakeInfo","components":[{"name":"stake","type":"uint256","internalType":"uint256"},{"name":"unstakeDelaySec","type":"uint256","internalType":"uint256"}]},{"name":"aggregatorInfo","type":"tuple","internalType":"struct IEntryPoint.AggregatorStakeInfo","components":[{"name":"aggregator","type":"address","internalType":"address"},{"name":"stakeInfo","type":"tuple","internalType":"struct IStakeManager.StakeInfo","components":[{"name":"stake","type":"uint256","internalType":"uint256"},{"name":"unstakeDelaySec","type":"uint256","internalType":"uint256"}]}]}]}],"bytecode":{"object":"0x6080806040523461001b57600160025561546990816100218239f35b600080fdfe60806040526004361015610023575b361561001957600080fd5b610021611ebc565b005b60003560e01c80630396cb60146101b35780630bd28e3b146101aa5780631b2e01b8146101a15780631d732756146101985780631fad948c1461018f578063205c28781461018657806335567e1a1461017d5780634b1d7cf5146101745780635287ce121461016b57806370a08231146101625780638f41ec5a14610159578063957122ab146101505780639b249f6914610147578063a61935311461013e578063b760faf914610135578063bb9fe6bf1461012c578063c23a5cea14610123578063d6383f941461011a578063ee219423146101115763fc7e286d0361000e5761010c611d9c565b61000e565b5061010c611b84565b5061010c611a1c565b5061010c611883565b5061010c611705565b5061010c6116c6565b5061010c6116a5565b5061010c61151c565b5061010c611349565b5061010c61130e565b5061010c611289565b5061010c611139565b5061010c610df1565b5061010c610d2c565b5061010c610b8d565b5061010c6108ba565b5061010c6106e7565b5061010c610467565b5061010c610385565b5060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595760043563ffffffff8116808203610359576103547fa5ae833d0bb1dcd632d98a8b70973e8516812898e19bf27b70071ebc8dc52c01916102716102413373ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b9161024d811515612033565b61026a610261600185015463ffffffff1690565b63ffffffff1690565b1115612098565b54926103366dffffffffffffffffffffffffffff946102f461029834888460781c16611f2d565b966102a48815156120fd565b6102b081891115612162565b6102d4816102bc6105ec565b941684906dffffffffffffffffffffffffffff169052565b6001602084015287166dffffffffffffffffffffffffffff166040830152565b63ffffffff83166060820152600060808201526103313373ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b6121c7565b6040805194855263ffffffff90911660208501523393918291820190565b0390a2005b600080fd5b6024359077ffffffffffffffffffffffffffffffffffffffffffffffff8216820361035957565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595760043577ffffffffffffffffffffffffffffffffffffffffffffffff81168103610359576104149033600052600160205260406000209077ffffffffffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b61041e8154611e82565b9055005b73ffffffffffffffffffffffffffffffffffffffff81160361035957565b6024359061044d82610422565b565b60c4359061044d82610422565b359061044d82610422565b50346103595760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595760206104fc6004356104a881610422565b73ffffffffffffffffffffffffffffffffffffffff6104c561035e565b91166000526001835260406000209077ffffffffffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b54604051908152f35b507f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60a0810190811067ffffffffffffffff82111761055157604052565b610559610505565b604052565b610100810190811067ffffffffffffffff82111761055157604052565b67ffffffffffffffff811161055157604052565b6060810190811067ffffffffffffffff82111761055157604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761055157604052565b6040519061044d82610535565b6040519060c0820182811067ffffffffffffffff82111761055157604052565b604051906040820182811067ffffffffffffffff82111761055157604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60209267ffffffffffffffff8111610675575b01160190565b61067d610505565b61066f565b92919261068e82610639565b9161069c60405193846105ab565b829481845281830111610359578281602093846000960137010152565b9181601f840112156103595782359167ffffffffffffffff8311610359576020838186019501011161035957565b5034610359576101c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595767ffffffffffffffff60043581811161035957366023820112156103595761074a903690602481600401359101610682565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36016101808112610359576101006040519161078783610535565b12610359576040516107988161055e565b6107a0610440565b815260443560208201526064356040820152608435606082015260a43560808201526107ca61044f565b60a082015260e43560c08201526101043560e082015281526101243560208201526101443560408201526101643560608201526101843560808201526101a4359182116103595761083e9261082661082e9336906004016106b9565b929091612fca565b6040519081529081906020820190565b0390f35b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126103595760043567ffffffffffffffff9283821161035957806023830112156103595781600401359384116103595760248460051b830101116103595760240191906024356108b781610422565b90565b5034610359576108c936610842565b6108d482939261268a565b60005b84811061094957506000927fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f9728480a183915b85831061091a576100218585612797565b90919360019061093f61092e878987612749565b6109388886612727565b5190612a50565b0194019190610909565b61097461096d61095b83859795612727565b51610967848987612749565b84613a5c565b919061374c565b73ffffffffffffffffffffffffffffffffffffffff92918316610b1f57610ab15761099e9061374c565b9116610a43576109b3576001019290926108d7565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152602160448201527f41413332207061796d61737465722065787069726564206f72206e6f7420647560648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a490fd5b0390fd5b610a3f826040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601460408201527f41413334207369676e6174757265206572726f7200000000000000000000000060608201520190565b610a3f836040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601760408201527f414132322065787069726564206f72206e6f742064756500000000000000000060608201520190565b610a3f846040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601460408201527f41413234207369676e6174757265206572726f7200000000000000000000000060608201520190565b50346103595760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261035957600435610bc981610422565b6024359060009133835282602052604083206dffffffffffffffffffffffffffff81541692838311610cce57848373ffffffffffffffffffffffffffffffffffffffff829593610c718496610c38610c258798610ccb9c61256e565b6dffffffffffffffffffffffffffff1690565b6dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b6040805173ffffffffffffffffffffffffffffffffffffffff831681526020810185905233917fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb91a2165af1610cc56124d9565b5061257b565b80f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f576974686472617720616d6f756e7420746f6f206c61726765000000000000006044820152fd5b50346103595760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610359576020600435610d6a81610422565b73ffffffffffffffffffffffffffffffffffffffff610d8761035e565b911660005260018252610dc28160406000209077ffffffffffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000006040519260401b16178152f35b503461035957610e0036610842565b6000805b838210610fdf57610e15915061268a565b7fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972600080a16000805b848110610f4557505060008093815b818110610e8457610021868660007f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d8180a2612797565b610ee8610e9282848a612b3b565b610ebd610ea4610ea460208401612bdd565b73ffffffffffffffffffffffffffffffffffffffff1690565b7f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d600080a280612b89565b906000915b808310610f0557505050610f0090611e82565b610e4d565b90919497610f38610f32610f3e92610f2c8c610938610f258c898b612749565b918d612727565b90611f2d565b99611e82565b95611e82565b9190610eed565b610f50818688612b3b565b6020610f68610f5f8380612b89565b92909301612bdd565b9173ffffffffffffffffffffffffffffffffffffffff60009316905b828410610f9d5750505050610f9890611e82565b610e3e565b90919294610f3881610fd285610fcb610fb9610fd7968d612727565b51610fc58c8b8a612749565b85613a5c565b908b613704565b611e82565b929190610f84565b610fea828587612b3b565b90610ff58280612b89565b92611005610ea460208301612bdd565b9173ffffffffffffffffffffffffffffffffffffffff831661102a6001821415612be7565b61104b575b5050506110459161103f91611f2d565b91611e82565b90610e04565b9095926110646040999693999895989788810190612888565b92908a3b156103595789938b918a5193849283927fe3563a4f00000000000000000000000000000000000000000000000000000000845260049e8f8501936110ab94612d81565b03815a93600094fa9081611120575b5061110a5786517f86a9f75000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a16818a0190815281906020010390fd5b949750929550909350918161103f61104561102f565b8061112d6111339261057b565b80611303565b386110ba565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595761083e73ffffffffffffffffffffffffffffffffffffffff60043561118d81610422565b60806040928392835161119f81610535565b60009381858093528260208201528287820152826060820152015216815280602052209061122e65ffffffffffff60018351946111db86610535565b80546dffffffffffffffffffffffffffff8082168852607082901c60ff161515602089015260789190911c1685870152015463ffffffff8116606086015260201c16608084019065ffffffffffff169052565b5191829182919091608065ffffffffffff8160a08401956dffffffffffffffffffffffffffff808251168652602082015115156020870152604082015116604086015263ffffffff6060820151166060860152015116910152565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595773ffffffffffffffffffffffffffffffffffffffff6004356112da81610422565b16600052600060205260206dffffffffffffffffffffffffffff60406000205416604051908152f35b600091031261035957565b50346103595760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261035957602060405160018152f35b50346103595760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261035957600467ffffffffffffffff81358181116103595761139a90369084016106b9565b9050602435916113a983610422565b604435908111610359576113c090369085016106b9565b929091159081611512575b506114ab57601482101561141b575b610a3f836040519182917f08c379a0000000000000000000000000000000000000000000000000000000008352820160409060208152600060208201520190565b61142b6114379261143192613299565b906132a7565b60601c90565b3b156114445738806113da565b610a3f906040519182917f08c379a0000000000000000000000000000000000000000000000000000000008352820160609060208152601b60208201527f41413330207061796d6173746572206e6f74206465706c6f796564000000000060408201520190565b610a3f836040519182917f08c379a0000000000000000000000000000000000000000000000000000000008352820160609060208152601960208201527f41413230206163636f756e74206e6f74206465706c6f7965640000000000000060408201520190565b90503b15386113cb565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595760043567ffffffffffffffff8111610359576115cc602061157360249336906004016106b9565b73ffffffffffffffffffffffffffffffffffffffff9291836115936134a3565b169060006040518097819582947f570e1a3600000000000000000000000000000000000000000000000000000000845260048401613492565b03925af1918215611640575b600092611610575b50604051917f6ca7b806000000000000000000000000000000000000000000000000000000008352166004820152fd5b61163291925060203d8111611639575b61162a81836105ab565b81019061347d565b90386115e0565b503d611620565b611648612a43565b6115d8565b90816101609103126103595790565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc820112610359576004359067ffffffffffffffff8211610359576108b79160040161164d565b50346103595760206116be6116b93661165c565b613112565b604051908152f35b5060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595761002160043561170081610422565b611ec1565b5034610359576000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112611880573381528060205260408120600181019063ffffffff825416908115611822576117bf6117846117e793611776611771855460ff9060701c1690565b61232b565b65ffffffffffff4216612390565b84547fffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffff16602082901b69ffffffffffff000000001617909455565b7fffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff8154169055565b60405165ffffffffffff91909116815233907ffa9b3c14cc825c412c9ed81b3ba365a5b459439403f18829e572ed53a4180f0a90602090a280f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6e6f74207374616b6564000000000000000000000000000000000000000000006044820152fd5b80fd5b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610359576004356118bf81610422565b610ccb73ffffffffffffffffffffffffffffffffffffffff6119013373ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b926119b9611924610c2586546dffffffffffffffffffffffffffff9060781c1690565b946119308615156123aa565b6119916001820161196965ffffffffffff611955835465ffffffffffff9060201c1690565b1661196181151561240f565b421015612474565b80547fffffffffffffffffffffffffffffffffffffffffffff00000000000000000000169055565b7fffffff0000000000000000000000000000ffffffffffffffffffffffffffffff8154169055565b6040805173ffffffffffffffffffffffffffffffffffffffff831681526020810186905233917fb7c918e0e249f999e965cafeb6c664271b3f4317d296461500e71da39f0cbda391a2600080809581948294165af1611a166124d9565b50612509565b50346103595760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595767ffffffffffffffff60043581811161035957611a6d90369060040161164d565b60243591611a7a83610422565b60443590811161035957611a95610a3f9136906004016106b9565b611a9d612607565b611aa6856135ff565b611ab9611ab38287613854565b90612eac565b94611ac982600092438452612a50565b96438252819360609573ffffffffffffffffffffffffffffffffffffffff8316611b50575b505050506080015193611b1d6040611b0f602084015165ffffffffffff1690565b92015165ffffffffffff1690565b906040519687967f8b7ac98000000000000000000000000000000000000000000000000000000000885260048801612e51565b83955083949650611b6a6040949293945180948193612e43565b03925af1906080611b796124d9565b929190388080611aee565b503461035957611b933661165c565b611b9b612607565b611ba4826135ff565b611bae8183613854565b825160a00151919391611bdb9073ffffffffffffffffffffffffffffffffffffffff16613428565b613428565b90611bff611bd6855173ffffffffffffffffffffffffffffffffffffffff90511690565b94611c08613261565b50611c37611c1b60409586810190612888565b90600060148310611d94575061142b611bd69261143192613299565b91611c4191612eac565b805173ffffffffffffffffffffffffffffffffffffffff169073ffffffffffffffffffffffffffffffffffffffff821660018114916080880151978781015191886020820151611c969065ffffffffffff1690565b91015165ffffffffffff16916060015192611caf6105f9565b9a8b5260208b0152841515898b015265ffffffffffff1660608a015265ffffffffffff16608089015260a088015215159081611d8b575b50611d205750610a3f92519485947fe0cff05f000000000000000000000000000000000000000000000000000000008652600486016133ce565b9190610a3f93611d2f84613428565b611d56611d3a610619565b73ffffffffffffffffffffffffffffffffffffffff9096168652565b6020850152519586957ffaecb4e40000000000000000000000000000000000000000000000000000000087526004870161333c565b90501538611ce6565b915050613428565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595773ffffffffffffffffffffffffffffffffffffffff600435611ded81610422565b16600052600060205260a0604060002065ffffffffffff60018254920154604051926dffffffffffffffffffffffffffff90818116855260ff8160701c161515602086015260781c16604084015263ffffffff8116606084015260201c166080820152f35b507f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6001907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611eb0570190565b611eb8611e52565b0190565b61044d335b73ffffffffffffffffffffffffffffffffffffffff90611ee13482611f42565b168060005260006020527f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c460206dffffffffffffffffffffffffffff60406000205416604051908152a2565b91908201809211611f3a57565b61044d611e52565b73ffffffffffffffffffffffffffffffffffffffff16600052600060205260406000206dffffffffffffffffffffffffffff80825416928301809311612026575b808311611fc85761044d92166dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6465706f736974206f766572666c6f77000000000000000000000000000000006044820152fd5b61202e611e52565b611f83565b1561203a57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6d757374207370656369667920756e7374616b652064656c61790000000000006044820152fd5b1561209f57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f63616e6e6f7420646563726561736520756e7374616b652074696d65000000006044820152fd5b1561210457565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6e6f207374616b652073706563696669656400000000000000000000000000006044820152fd5b1561216957565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f7374616b65206f766572666c6f770000000000000000000000000000000000006044820152fd5b9065ffffffffffff6080600161044d946122276dffffffffffffffffffffffffffff86511682906dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b602085015115156eff000000000000000000000000000082549160701b16807fffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff83161783557fffffff000000000000000000000000000000ffffffffffffffffffffffffffff7cffffffffffffffffffffffffffff000000000000000000000000000000604089015160781b16921617178155019263ffffffff6060820151167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000008554161784550151167fffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffff69ffffffffffff0000000083549260201b169116179055565b1561233257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f616c726561647920756e7374616b696e670000000000000000000000000000006044820152fd5b91909165ffffffffffff80809416911601918211611f3a57565b156123b157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4e6f207374616b6520746f2077697468647261770000000000000000000000006044820152fd5b1561241657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6d7573742063616c6c20756e6c6f636b5374616b6528292066697273740000006044820152fd5b1561247b57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f5374616b65207769746864726177616c206973206e6f742064756500000000006044820152fd5b3d15612504573d906124ea82610639565b916124f860405193846105ab565b82523d6000602084013e565b606090565b1561251057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6661696c656420746f207769746864726177207374616b6500000000000000006044820152fd5b91908203918211611f3a57565b1561258257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6661696c656420746f20776974686472617700000000000000000000000000006044820152fd5b60209067ffffffffffffffff81116125fa575b60051b0190565b612602610505565b6125f3565b6040519061261482610535565b604051608083610100830167ffffffffffffffff81118482101761267d575b60405260009283815283602082015283604082015283606082015283838201528360a08201528360c08201528360e082015281528260208201528260408201528260608201520152565b612685610505565b612633565b90612694826125e0565b6126a160405191826105ab565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06126cf82946125e0565b019060005b8281106126e057505050565b6020906126eb612607565b828285010152016126d4565b507f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602091815181101561273c575b60051b010190565b6127446126f7565b612734565b919081101561278a575b60051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea181360301821215610359570190565b6127926126f7565b612753565b73ffffffffffffffffffffffffffffffffffffffff16801561282a57600080809381935af16127c46124d9565b50156127cc57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41413931206661696c65642073656e6420746f2062656e6566696369617279006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4141393020696e76616c69642062656e656669636961727900000000000000006044820152fd5b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610359570180359067ffffffffffffffff82116103595760200191813603831361035957565b90816020910312610359575190565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b60005b83811061293a5750506000910152565b818101518382015260200161292a565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60209361298681518092818752878088019101612927565b0116010190565b906129a76080916108b796946101c08086528501916128e8565b9360e0815173ffffffffffffffffffffffffffffffffffffffff80825116602087015260208201516040870152604082015160608701526060820151858701528482015160a087015260a08201511660c086015260c081015182860152015161010084015260208101516101208401526040810151610140840152606081015161016084015201516101808201526101a081840391015261294a565b506040513d6000823e3d90fd5b612aa0602091612a696060850151916060810190612888565b92909160405195869485947f1d7327560000000000000000000000000000000000000000000000000000000086526004860161298d565b03816000305af160009181612b0b575b506108b757612abd6124d9565b60206000803e805115612ad257805190602001fd5b6040517f462c71b20000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604490fd5b612b2d91925060203d8111612b34575b612b2581836105ab565b8101906128d9565b9038612ab0565b503d612b1b565b9190811015612b7c575b60051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa181360301821215610359570190565b612b846126f7565b612b45565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610359570180359067ffffffffffffffff821161035957602001918160051b3603831361035957565b356108b781610422565b15612bee57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4141393620696e76616c69642061676772656761746f720000000000000000006044820152fd5b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18236030181121561035957016020813591019167ffffffffffffffff821161035957813603831361035957565b6108b791612cc781612cad8461045c565b73ffffffffffffffffffffffffffffffffffffffff169052565b60208201356020820152612d62612d13612cf8612ce76040860186612c4c565b6101608060408801528601916128e8565b612d056060860186612c4c565b9085830360608701526128e8565b6080840135608084015260a084013560a084015260c084013560c084015260e084013560e08401526101008085013590840152610120612d5581860186612c4c565b91858403908601526128e8565b91612d736101409182810190612c4c565b9290918185039101526128e8565b949391929083604087016040885252606086019360608160051b8801019482600090815b848310612dc4575050505050508460206108b7959685039101526128e8565b9091929394977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08b820301855288357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea184360301811215612e3f5760019184612e2d9201612c9c565b98602090810196950193019190612da5565b8280fd5b908092918237016000815290565b9290936108b796959260c0958552602085015265ffffffffffff8092166040850152166060830152151560808201528160a0820152019061294a565b60405190612e9a8261058f565b60006040838281528260208201520152565b612ec1612ec791612ebb612e8d565b50612f5e565b91612f5e565b9073ffffffffffffffffffffffffffffffffffffffff9182825116928315612f53575b65ffffffffffff928391826040816020850151169301511693836040816020840151169201511690808410612f4b575b50808511612f43575b5060405195612f318761058f565b16855216602084015216604082015290565b935038612f23565b925038612f1a565b815181169350612eea565b612f66612e8d565b5065ffffffffffff808260a01c168015612fb2575b60405192612f888461058f565b73ffffffffffffffffffffffffffffffffffffffff8116845260d01c602084015216604082015290565b5080612f7b565b9060206108b792818152019061294a565b9291925a903033036130735782518151613000575b50506108b793612ffa915a9003608084015101933691610682565b90615101565b5161302b916130279173ffffffffffffffffffffffffffffffffffffffff16905a916130d1565b1590565b613036573880612fdf565b610a3f6130416130e3565b6040519182917f462c71b200000000000000000000000000000000000000000000000000000000835260048301612fb9565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4141393220696e7465726e616c2063616c6c206f6e6c790000000000000000006044820152fd5b9060009283809360208451940192f190565b3d61080080821161310a575b50604051906020818301016040528082526000602083013e90565b9050386130ef565b6131286131226040830183612888565b90613256565b906131396131226060830183612888565b906131ef61314e613122610120840184612888565b60405194859360208501956101008201359260e08301359260c08101359260a08201359260808301359273ffffffffffffffffffffffffffffffffffffffff60208201359135168c9693909a9998959261012098959273ffffffffffffffffffffffffffffffffffffffff6101408a019d168952602089015260408801526060870152608086015260a085015260c084015260e08301526101008201520152565b03916132217fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938481018352826105ab565b5190206040805160208101928352309181019190915246606082015260809283018152909161325090826105ab565b51902090565b816040519182372090565b604051906040820182811067ffffffffffffffff82111761328c575b60405260006020838281520152565b613294610505565b61327d565b906014116103595790601490565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000090358181169392601481106132dc57505050565b60140360031b82901b16169150565b9060c060a06108b793805184526020810151602085015260408101511515604085015265ffffffffffff80606083015116606086015260808201511660808501520151918160a0820152019061294a565b929461339d61044d9561338b610100959998613379613365602097610140808c528b01906132eb565b9b878a019060208091805184520151910152565b80516060890152602001516080880152565b805160a08701526020015160c0860152565b73ffffffffffffffffffffffffffffffffffffffff81511660e0850152015191019060208091805184520151910152565b61341761044d946134056133f060a0959998969960e0865260e08601906132eb565b98602085019060208091805184520151910152565b80516060840152602001516080830152565b019060208091805184520151910152565b9073ffffffffffffffffffffffffffffffffffffffff613446613261565b9216600052600060205263ffffffff600160406000206dffffffffffffffffffffffffffff815460781c1685520154166020830152565b9081602091031261035957516108b781610422565b9160206108b79381815201916128e8565b7fbc79d710c27c417daea28cbdc16e638da2309ea2f5542218b102827c395d15d45473ffffffffffffffffffffffffffffffffffffffff16806108b75750737fc98430eaedbb6070b35b39d79872504908834890565b9061352873ffffffffffffffffffffffffffffffffffffffff916108b7979596946060855260608501916128e8565b9416602082015260408185039101526128e8565b60009060033d1161354957565b905060046000803e60005160e01c90565b600060443d106108b7576040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc91823d016004833e815167ffffffffffffffff918282113d6024840111176135d6578184019485519384116135de573d850101602084870101116135d657506108b7929101602001906105ab565b949350505050565b50949350505050565b9060406108b79260008152816020820152019061294a565b61360c6040820182612888565b61362461361884612bdd565b93610120810190612888565b9290303b15610359576000936136689160405196879586957f957122ab000000000000000000000000000000000000000000000000000000008752600487016134f9565b0381305afa90816136f1575b5061044d57600161368361353c565b6308c379a01461369c575b61369457565b61044d612a43565b6136a461355a565b806136b0575b5061368e565b805160009250156136aa57610a3f906040519182917f220266b6000000000000000000000000000000000000000000000000000000008352600483016135e7565b8061112d6136fe9261057b565b38613674565b9291906137109061374c565b909273ffffffffffffffffffffffffffffffffffffffff80809516911603610b1f57610ab15761373f9061374c565b9116610a43576109b35750565b80156137e65761375b90612f5e565b7f182d361d27e8fee91541f8630840b9272bdb770c7bb6239b09cd74563c40534154806137cb575073ffffffffffffffffffffffffffffffffffffffff425b65ffffffffffff908160408501511681119182156137bb575b505091511691565b60208501511611905038806137b3565b73ffffffffffffffffffffffffffffffffffffffff9061379a565b50600090600090565b156137f657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f41413934206761732076616c756573206f766572666c6f7700000000000000006044820152fd5b916000915a938151906138678282613d37565b61387081613112565b60208401526138ae6effffffffffffffffffffffffffffff60808401516060850151176040850151176101008401359060e0850135171711156137ef565b6138b782613df9565b6138c2818584613ed1565b97906138f36130276138e8875173ffffffffffffffffffffffffffffffffffffffff1690565b602088015190613c62565b6139ef5761390043600052565b73ffffffffffffffffffffffffffffffffffffffff61393860a0606097015173ffffffffffffffffffffffffffffffffffffffff1690565b166139d5575b505a810360a0840135106139685760809360c092604087015260608601525a900391013501910152565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601e60408201527f41413430206f76657220766572696669636174696f6e4761734c696d6974000060608201520190565b909350816139e69297508584614bc9565b9590923861393e565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601a60408201527f4141323520696e76616c6964206163636f756e74206e6f6e636500000000000060608201520190565b9290916000925a8251613a6f8184613d37565b613a7883613112565b6020850152613ab66effffffffffffffffffffffffffffff60808301516060840151176040840151176101008601359060e0870135171711156137ef565b613abf81613df9565b613acb8186868b61423d565b9890613afc613027613af1865173ffffffffffffffffffffffffffffffffffffffff1690565b602087015190613c62565b613bf457613b0943600052565b73ffffffffffffffffffffffffffffffffffffffff613b4160a0606096015173ffffffffffffffffffffffffffffffffffffffff1690565b16613bd9575b505a840360a086013510613b735750604085015260608401526080919060c0905a900391013501910152565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152601e60448201527f41413430206f76657220766572696669636174696f6e4761734c696d697400006064820152608490fd5b90925081613beb929850868685614e5c565b96909138613b47565b610a3f826040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601a60408201527f4141323520696e76616c6964206163636f756e74206e6f6e636500000000000060608201520190565b73ffffffffffffffffffffffffffffffffffffffff16600052600160205267ffffffffffffffff613cbe8260401c60406000209077ffffffffffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b91825492613ccb84611e82565b9055161490565b15613cd957565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4141393320696e76616c6964207061796d6173746572416e64446174610000006044820152fd5b613da990613d61613d4782612bdd565b73ffffffffffffffffffffffffffffffffffffffff168452565b602081013560208401526080810135604084015260a0810135606084015260c0810135608084015260e081013560c084015261010081013560e0840152610120810190612888565b908115613dee57613dd361143161142b8460a094613dce601461044d99981015613cd2565b613299565b73ffffffffffffffffffffffffffffffffffffffff16910152565b505060a06000910152565b60a081015173ffffffffffffffffffffffffffffffffffffffff1615613e3b5760c060035b60ff60408401519116606084015102016080830151019101510290565b60c06001613e1e565b613e5c60409295949395606083526060830190612c9c565b9460208201520152565b9061044d602f60405180947f414132332072657665727465643a2000000000000000000000000000000000006020830152613eaa8151809260208686019101612927565b810103600f8101855201836105ab565b6040906108b793928152816020820152019061294a565b916000926000925a93613f9f6020835193613f00855173ffffffffffffffffffffffffffffffffffffffff1690565b95613f18613f116040830183612888565b90846144a8565b60a086015173ffffffffffffffffffffffffffffffffffffffff1690613f3d43600052565b85809373ffffffffffffffffffffffffffffffffffffffff8094161598896141d5575b60600151908601516040517f3a871cdd000000000000000000000000000000000000000000000000000000008152978896879586939060048501613e44565b03938a1690f18291816141b5575b506141ac5750600190613fbe61353c565b6308c379a014614158575b506140eb575b613fdc575b50505a900391565b6140069073ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b614021610c2582546dffffffffffffffffffffffffffff1690565b80831161407e57614077926dffffffffffffffffffffffffffff9103166dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b3880613fd4565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601760408201527f41413231206469646e2774207061792070726566756e6400000000000000000060608201520190565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601660408201527f4141323320726576657274656420286f72204f4f47290000000000000000000060608201520190565b61416061355a565b908161416c5750613fc9565b610a3f9161417a9150613e66565b6040519182917f220266b6000000000000000000000000000000000000000000000000000000008352600483016135e7565b9550613fcf9050565b6141ce91925060203d8111612b3457612b2581836105ab565b9038613fad565b945061421b610c256142078c73ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b546dffffffffffffffffffffffffffff1690565b8b8111156142325750856060835b96915050613f60565b606087918d03614229565b90926000936000935a94614286602083519361426d855173ffffffffffffffffffffffffffffffffffffffff1690565b95613f1861427e6040830183612888565b90848c6147af565b03938a1690f1829181614488575b5061447f57506001906142a561353c565b6308c379a014614429575b506143bb575b6142c4575b5050505a900391565b6142ee9073ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b9161430a610c2584546dffffffffffffffffffffffffffff1690565b90818311614355575082547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000169190036dffffffffffffffffffffffffffff161790553880806142bb565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152601760448201527f41413231206469646e2774207061792070726566756e640000000000000000006064820152608490fd5b610a3f846040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601660408201527f4141323320726576657274656420286f72204f4f47290000000000000000000060608201520190565b61443161355a565b908161443d57506142b0565b86916144499150613e66565b90610a3f6040519283927f220266b600000000000000000000000000000000000000000000000000000000845260048401613eba565b96506142b69050565b6144a191925060203d8111612b3457612b2581836105ab565b9038614294565b9091806144b457505050565b81515173ffffffffffffffffffffffffffffffffffffffff1692833b61474257600060206144e6610ea4610ea46134a3565b606086510151604051809481937f570e1a36000000000000000000000000000000000000000000000000000000008352826145258a8a60048401613492565b0393f1908115614735575b600091614717575b5073ffffffffffffffffffffffffffffffffffffffff8082169586156146aa571680950361463d573b156145d05761143161142b7fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d9361459793613299565b602083810151935160a001516040805173ffffffffffffffffffffffffffffffffffffffff9485168152939091169183019190915290a3565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152602060408201527f4141313520696e6974436f6465206d757374206372656174652073656e64657260608201520190565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152602060408201527f4141313420696e6974436f6465206d7573742072657475726e2073656e64657260608201520190565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601b60408201527f4141313320696e6974436f6465206661696c6564206f72204f4f47000000000060608201520190565b61472f915060203d81116116395761162a81836105ab565b38614538565b61473d612a43565b614530565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601f60408201527f414131302073656e64657220616c726561647920636f6e73747275637465640060608201520190565b929091816147be575b50505050565b82515173ffffffffffffffffffffffffffffffffffffffff1693843b614a4f57600060206147f0610ea4610ea46134a3565b606087510151604051809481937f570e1a360000000000000000000000000000000000000000000000000000000083528261482f8b8b60048401613492565b0393f1908115614a42575b600091614a24575b5073ffffffffffffffffffffffffffffffffffffffff8082169687156149b65716809603614948573b156148e2575061143161142b7fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d936148a293613299565b602083810151935160a001516040805173ffffffffffffffffffffffffffffffffffffffff9485168152939091169183019190915290a3388080806147b8565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152602060448201527f4141313520696e6974436f6465206d757374206372656174652073656e6465726064820152608490fd5b610a3f826040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152602060408201527f4141313420696e6974436f6465206d7573742072657475726e2073656e64657260608201520190565b610a3f846040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601b60408201527f4141313320696e6974436f6465206661696c6564206f72204f4f47000000000060608201520190565b614a3c915060203d81116116395761162a81836105ab565b38614842565b614a4a612a43565b61483a565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152601f60448201527f414131302073656e64657220616c726561647920636f6e7374727563746564006064820152608490fd5b15614abc57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4141343120746f6f206c6974746c6520766572696669636174696f6e476173006044820152fd5b919060408382031261035957825167ffffffffffffffff81116103595783019080601f8301121561035957815191614b5183610639565b91614b5f60405193846105ab565b8383526020848301011161035957602092614b7f91848085019101612927565b92015190565b9061044d602f60405180947f414133332072657665727465643a2000000000000000000000000000000000006020830152613eaa8151809260208686019101612927565b939192606094600094600093805192614c0860a08a86015195614bed888811614ab5565b015173ffffffffffffffffffffffffffffffffffffffff1690565b91614c338373ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b94614c4f610c2587546dffffffffffffffffffffffffffff1690565b96858810614def5773ffffffffffffffffffffffffffffffffffffffff60208a9894614cc58a966dffffffffffffffffffffffffffff8b614cfe9e03166dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b015194604051998a98899788937ff465c77e00000000000000000000000000000000000000000000000000000000855260048501613e44565b0395169103f1908183918493614dc9575b50614dc2575050600190614d2161353c565b6308c379a014614da0575b50614d3357565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601660408201527f4141333320726576657274656420286f72204f4f47290000000000000000000060608201520190565b614da861355a565b9081614db45750614d2c565b610a3f9161417a9150614b85565b9450925050565b909250614de891503d8085833e614de081836105ab565b810190614b1a565b9138614d0f565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601e60408201527f41413331207061796d6173746572206465706f73697420746f6f206c6f77000060608201520190565b919492939093606095600095600093825190614e8360a08b84015193614bed848611614ab5565b93614eae8573ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b614ec9610c2582546dffffffffffffffffffffffffffff1690565b878110615024579273ffffffffffffffffffffffffffffffffffffffff60208a98969394614cc58a966dffffffffffffffffffffffffffff8d614f439e9c9a03166dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b0395169103f1908183918493615006575b50614ffe575050600190614f6661353c565b6308c379a014614fdf575b50614f795750565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152601660448201527f4141333320726576657274656420286f72204f4f4729000000000000000000006064820152608490fd5b614fe761355a565b9081614ff35750614f71565b614449925050614b85565b955093505050565b90925061501d91503d8085833e614de081836105ab565b9138614f54565b610a3f8a6040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601e60408201527f41413331207061796d6173746572206465706f73697420746f6f206c6f77000060608201520190565b9291906150b06040916000865260606020870152606086019061294a565b930152565b9060a06108b7926000815260606020820152601460608201527f4141353020706f73744f702072657665727465640000000000000000000000006080820152816040820152019061294a565b9291905a93805190615112826153db565b9260a0830194615136865173ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff9281841691826152a257505050615176845173ffffffffffffffffffffffffffffffffffffffff1690565b975b5a90030193840296604083019288845110615235576151be6020928a7f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f96510390611f42565b01519261523060206152026151e7845173ffffffffffffffffffffffffffffffffffffffff1690565b985173ffffffffffffffffffffffffffffffffffffffff1690565b9201519589846040519586951699169784606091949392608082019582526001602083015260408201520152565b0390a4565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152602060408201527f414135312070726566756e642062656c6f772061637475616c476173436f737460608201520190565b999181516152b2575b5050615178565b606087015191813b15610359576153009289600080946040518097819682957fa9a234090000000000000000000000000000000000000000000000000000000084528c029060048401615092565b0393f190816153c8575b506153c1576153176124d9565b80511561535457610a3f906040519182917f65c8fd4d000000000000000000000000000000000000000000000000000000008352600483016150b5565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601260408201527f4141353020706f73744f7020726576657274000000000000000000000000000060608201520190565b38806152ab565b8061112d6153d59261057b565b3861530a565b60e060c082015191015180821461542f577f59e3bb5c9eacf8e7a9c3802366751badc68d4d97d3e35b1744045784c52f20dd5480615429575048905b0180821015615424575090565b905090565b90615417565b509056fea2646970667358221220684f3682aa746ce7e00b461215a0d96e4353263a4da4aa7cd01807f962b9636764736f6c63430008110033","sourceMap":"1235:33115:17:-:0;;;;;;;1716:1:12;1821:22;1716:1;1235:33115:17;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610023575b361561001957600080fd5b610021611ebc565b005b60003560e01c80630396cb60146101b35780630bd28e3b146101aa5780631b2e01b8146101a15780631d732756146101985780631fad948c1461018f578063205c28781461018657806335567e1a1461017d5780634b1d7cf5146101745780635287ce121461016b57806370a08231146101625780638f41ec5a14610159578063957122ab146101505780639b249f6914610147578063a61935311461013e578063b760faf914610135578063bb9fe6bf1461012c578063c23a5cea14610123578063d6383f941461011a578063ee219423146101115763fc7e286d0361000e5761010c611d9c565b61000e565b5061010c611b84565b5061010c611a1c565b5061010c611883565b5061010c611705565b5061010c6116c6565b5061010c6116a5565b5061010c61151c565b5061010c611349565b5061010c61130e565b5061010c611289565b5061010c611139565b5061010c610df1565b5061010c610d2c565b5061010c610b8d565b5061010c6108ba565b5061010c6106e7565b5061010c610467565b5061010c610385565b5060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595760043563ffffffff8116808203610359576103547fa5ae833d0bb1dcd632d98a8b70973e8516812898e19bf27b70071ebc8dc52c01916102716102413373ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b9161024d811515612033565b61026a610261600185015463ffffffff1690565b63ffffffff1690565b1115612098565b54926103366dffffffffffffffffffffffffffff946102f461029834888460781c16611f2d565b966102a48815156120fd565b6102b081891115612162565b6102d4816102bc6105ec565b941684906dffffffffffffffffffffffffffff169052565b6001602084015287166dffffffffffffffffffffffffffff166040830152565b63ffffffff83166060820152600060808201526103313373ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b6121c7565b6040805194855263ffffffff90911660208501523393918291820190565b0390a2005b600080fd5b6024359077ffffffffffffffffffffffffffffffffffffffffffffffff8216820361035957565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595760043577ffffffffffffffffffffffffffffffffffffffffffffffff81168103610359576104149033600052600160205260406000209077ffffffffffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b61041e8154611e82565b9055005b73ffffffffffffffffffffffffffffffffffffffff81160361035957565b6024359061044d82610422565b565b60c4359061044d82610422565b359061044d82610422565b50346103595760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595760206104fc6004356104a881610422565b73ffffffffffffffffffffffffffffffffffffffff6104c561035e565b91166000526001835260406000209077ffffffffffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b54604051908152f35b507f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60a0810190811067ffffffffffffffff82111761055157604052565b610559610505565b604052565b610100810190811067ffffffffffffffff82111761055157604052565b67ffffffffffffffff811161055157604052565b6060810190811067ffffffffffffffff82111761055157604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761055157604052565b6040519061044d82610535565b6040519060c0820182811067ffffffffffffffff82111761055157604052565b604051906040820182811067ffffffffffffffff82111761055157604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60209267ffffffffffffffff8111610675575b01160190565b61067d610505565b61066f565b92919261068e82610639565b9161069c60405193846105ab565b829481845281830111610359578281602093846000960137010152565b9181601f840112156103595782359167ffffffffffffffff8311610359576020838186019501011161035957565b5034610359576101c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595767ffffffffffffffff60043581811161035957366023820112156103595761074a903690602481600401359101610682565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36016101808112610359576101006040519161078783610535565b12610359576040516107988161055e565b6107a0610440565b815260443560208201526064356040820152608435606082015260a43560808201526107ca61044f565b60a082015260e43560c08201526101043560e082015281526101243560208201526101443560408201526101643560608201526101843560808201526101a4359182116103595761083e9261082661082e9336906004016106b9565b929091612fca565b6040519081529081906020820190565b0390f35b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126103595760043567ffffffffffffffff9283821161035957806023830112156103595781600401359384116103595760248460051b830101116103595760240191906024356108b781610422565b90565b5034610359576108c936610842565b6108d482939261268a565b60005b84811061094957506000927fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f9728480a183915b85831061091a576100218585612797565b90919360019061093f61092e878987612749565b6109388886612727565b5190612a50565b0194019190610909565b61097461096d61095b83859795612727565b51610967848987612749565b84613a5c565b919061374c565b73ffffffffffffffffffffffffffffffffffffffff92918316610b1f57610ab15761099e9061374c565b9116610a43576109b3576001019290926108d7565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152602160448201527f41413332207061796d61737465722065787069726564206f72206e6f7420647560648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a490fd5b0390fd5b610a3f826040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601460408201527f41413334207369676e6174757265206572726f7200000000000000000000000060608201520190565b610a3f836040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601760408201527f414132322065787069726564206f72206e6f742064756500000000000000000060608201520190565b610a3f846040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601460408201527f41413234207369676e6174757265206572726f7200000000000000000000000060608201520190565b50346103595760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261035957600435610bc981610422565b6024359060009133835282602052604083206dffffffffffffffffffffffffffff81541692838311610cce57848373ffffffffffffffffffffffffffffffffffffffff829593610c718496610c38610c258798610ccb9c61256e565b6dffffffffffffffffffffffffffff1690565b6dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b6040805173ffffffffffffffffffffffffffffffffffffffff831681526020810185905233917fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb91a2165af1610cc56124d9565b5061257b565b80f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f576974686472617720616d6f756e7420746f6f206c61726765000000000000006044820152fd5b50346103595760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610359576020600435610d6a81610422565b73ffffffffffffffffffffffffffffffffffffffff610d8761035e565b911660005260018252610dc28160406000209077ffffffffffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000006040519260401b16178152f35b503461035957610e0036610842565b6000805b838210610fdf57610e15915061268a565b7fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972600080a16000805b848110610f4557505060008093815b818110610e8457610021868660007f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d8180a2612797565b610ee8610e9282848a612b3b565b610ebd610ea4610ea460208401612bdd565b73ffffffffffffffffffffffffffffffffffffffff1690565b7f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d600080a280612b89565b906000915b808310610f0557505050610f0090611e82565b610e4d565b90919497610f38610f32610f3e92610f2c8c610938610f258c898b612749565b918d612727565b90611f2d565b99611e82565b95611e82565b9190610eed565b610f50818688612b3b565b6020610f68610f5f8380612b89565b92909301612bdd565b9173ffffffffffffffffffffffffffffffffffffffff60009316905b828410610f9d5750505050610f9890611e82565b610e3e565b90919294610f3881610fd285610fcb610fb9610fd7968d612727565b51610fc58c8b8a612749565b85613a5c565b908b613704565b611e82565b929190610f84565b610fea828587612b3b565b90610ff58280612b89565b92611005610ea460208301612bdd565b9173ffffffffffffffffffffffffffffffffffffffff831661102a6001821415612be7565b61104b575b5050506110459161103f91611f2d565b91611e82565b90610e04565b9095926110646040999693999895989788810190612888565b92908a3b156103595789938b918a5193849283927fe3563a4f00000000000000000000000000000000000000000000000000000000845260049e8f8501936110ab94612d81565b03815a93600094fa9081611120575b5061110a5786517f86a9f75000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a16818a0190815281906020010390fd5b949750929550909350918161103f61104561102f565b8061112d6111339261057b565b80611303565b386110ba565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595761083e73ffffffffffffffffffffffffffffffffffffffff60043561118d81610422565b60806040928392835161119f81610535565b60009381858093528260208201528287820152826060820152015216815280602052209061122e65ffffffffffff60018351946111db86610535565b80546dffffffffffffffffffffffffffff8082168852607082901c60ff161515602089015260789190911c1685870152015463ffffffff8116606086015260201c16608084019065ffffffffffff169052565b5191829182919091608065ffffffffffff8160a08401956dffffffffffffffffffffffffffff808251168652602082015115156020870152604082015116604086015263ffffffff6060820151166060860152015116910152565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595773ffffffffffffffffffffffffffffffffffffffff6004356112da81610422565b16600052600060205260206dffffffffffffffffffffffffffff60406000205416604051908152f35b600091031261035957565b50346103595760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261035957602060405160018152f35b50346103595760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261035957600467ffffffffffffffff81358181116103595761139a90369084016106b9565b9050602435916113a983610422565b604435908111610359576113c090369085016106b9565b929091159081611512575b506114ab57601482101561141b575b610a3f836040519182917f08c379a0000000000000000000000000000000000000000000000000000000008352820160409060208152600060208201520190565b61142b6114379261143192613299565b906132a7565b60601c90565b3b156114445738806113da565b610a3f906040519182917f08c379a0000000000000000000000000000000000000000000000000000000008352820160609060208152601b60208201527f41413330207061796d6173746572206e6f74206465706c6f796564000000000060408201520190565b610a3f836040519182917f08c379a0000000000000000000000000000000000000000000000000000000008352820160609060208152601960208201527f41413230206163636f756e74206e6f74206465706c6f7965640000000000000060408201520190565b90503b15386113cb565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595760043567ffffffffffffffff8111610359576115cc602061157360249336906004016106b9565b73ffffffffffffffffffffffffffffffffffffffff9291836115936134a3565b169060006040518097819582947f570e1a3600000000000000000000000000000000000000000000000000000000845260048401613492565b03925af1918215611640575b600092611610575b50604051917f6ca7b806000000000000000000000000000000000000000000000000000000008352166004820152fd5b61163291925060203d8111611639575b61162a81836105ab565b81019061347d565b90386115e0565b503d611620565b611648612a43565b6115d8565b90816101609103126103595790565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc820112610359576004359067ffffffffffffffff8211610359576108b79160040161164d565b50346103595760206116be6116b93661165c565b613112565b604051908152f35b5060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595761002160043561170081610422565b611ec1565b5034610359576000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112611880573381528060205260408120600181019063ffffffff825416908115611822576117bf6117846117e793611776611771855460ff9060701c1690565b61232b565b65ffffffffffff4216612390565b84547fffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffff16602082901b69ffffffffffff000000001617909455565b7fffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff8154169055565b60405165ffffffffffff91909116815233907ffa9b3c14cc825c412c9ed81b3ba365a5b459439403f18829e572ed53a4180f0a90602090a280f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6e6f74207374616b6564000000000000000000000000000000000000000000006044820152fd5b80fd5b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610359576004356118bf81610422565b610ccb73ffffffffffffffffffffffffffffffffffffffff6119013373ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b926119b9611924610c2586546dffffffffffffffffffffffffffff9060781c1690565b946119308615156123aa565b6119916001820161196965ffffffffffff611955835465ffffffffffff9060201c1690565b1661196181151561240f565b421015612474565b80547fffffffffffffffffffffffffffffffffffffffffffff00000000000000000000169055565b7fffffff0000000000000000000000000000ffffffffffffffffffffffffffffff8154169055565b6040805173ffffffffffffffffffffffffffffffffffffffff831681526020810186905233917fb7c918e0e249f999e965cafeb6c664271b3f4317d296461500e71da39f0cbda391a2600080809581948294165af1611a166124d9565b50612509565b50346103595760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595767ffffffffffffffff60043581811161035957611a6d90369060040161164d565b60243591611a7a83610422565b60443590811161035957611a95610a3f9136906004016106b9565b611a9d612607565b611aa6856135ff565b611ab9611ab38287613854565b90612eac565b94611ac982600092438452612a50565b96438252819360609573ffffffffffffffffffffffffffffffffffffffff8316611b50575b505050506080015193611b1d6040611b0f602084015165ffffffffffff1690565b92015165ffffffffffff1690565b906040519687967f8b7ac98000000000000000000000000000000000000000000000000000000000885260048801612e51565b83955083949650611b6a6040949293945180948193612e43565b03925af1906080611b796124d9565b929190388080611aee565b503461035957611b933661165c565b611b9b612607565b611ba4826135ff565b611bae8183613854565b825160a00151919391611bdb9073ffffffffffffffffffffffffffffffffffffffff16613428565b613428565b90611bff611bd6855173ffffffffffffffffffffffffffffffffffffffff90511690565b94611c08613261565b50611c37611c1b60409586810190612888565b90600060148310611d94575061142b611bd69261143192613299565b91611c4191612eac565b805173ffffffffffffffffffffffffffffffffffffffff169073ffffffffffffffffffffffffffffffffffffffff821660018114916080880151978781015191886020820151611c969065ffffffffffff1690565b91015165ffffffffffff16916060015192611caf6105f9565b9a8b5260208b0152841515898b015265ffffffffffff1660608a015265ffffffffffff16608089015260a088015215159081611d8b575b50611d205750610a3f92519485947fe0cff05f000000000000000000000000000000000000000000000000000000008652600486016133ce565b9190610a3f93611d2f84613428565b611d56611d3a610619565b73ffffffffffffffffffffffffffffffffffffffff9096168652565b6020850152519586957ffaecb4e40000000000000000000000000000000000000000000000000000000087526004870161333c565b90501538611ce6565b915050613428565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595773ffffffffffffffffffffffffffffffffffffffff600435611ded81610422565b16600052600060205260a0604060002065ffffffffffff60018254920154604051926dffffffffffffffffffffffffffff90818116855260ff8160701c161515602086015260781c16604084015263ffffffff8116606084015260201c166080820152f35b507f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6001907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611eb0570190565b611eb8611e52565b0190565b61044d335b73ffffffffffffffffffffffffffffffffffffffff90611ee13482611f42565b168060005260006020527f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c460206dffffffffffffffffffffffffffff60406000205416604051908152a2565b91908201809211611f3a57565b61044d611e52565b73ffffffffffffffffffffffffffffffffffffffff16600052600060205260406000206dffffffffffffffffffffffffffff80825416928301809311612026575b808311611fc85761044d92166dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6465706f736974206f766572666c6f77000000000000000000000000000000006044820152fd5b61202e611e52565b611f83565b1561203a57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6d757374207370656369667920756e7374616b652064656c61790000000000006044820152fd5b1561209f57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f63616e6e6f7420646563726561736520756e7374616b652074696d65000000006044820152fd5b1561210457565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6e6f207374616b652073706563696669656400000000000000000000000000006044820152fd5b1561216957565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f7374616b65206f766572666c6f770000000000000000000000000000000000006044820152fd5b9065ffffffffffff6080600161044d946122276dffffffffffffffffffffffffffff86511682906dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b602085015115156eff000000000000000000000000000082549160701b16807fffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff83161783557fffffff000000000000000000000000000000ffffffffffffffffffffffffffff7cffffffffffffffffffffffffffff000000000000000000000000000000604089015160781b16921617178155019263ffffffff6060820151167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000008554161784550151167fffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffff69ffffffffffff0000000083549260201b169116179055565b1561233257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f616c726561647920756e7374616b696e670000000000000000000000000000006044820152fd5b91909165ffffffffffff80809416911601918211611f3a57565b156123b157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4e6f207374616b6520746f2077697468647261770000000000000000000000006044820152fd5b1561241657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6d7573742063616c6c20756e6c6f636b5374616b6528292066697273740000006044820152fd5b1561247b57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f5374616b65207769746864726177616c206973206e6f742064756500000000006044820152fd5b3d15612504573d906124ea82610639565b916124f860405193846105ab565b82523d6000602084013e565b606090565b1561251057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6661696c656420746f207769746864726177207374616b6500000000000000006044820152fd5b91908203918211611f3a57565b1561258257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6661696c656420746f20776974686472617700000000000000000000000000006044820152fd5b60209067ffffffffffffffff81116125fa575b60051b0190565b612602610505565b6125f3565b6040519061261482610535565b604051608083610100830167ffffffffffffffff81118482101761267d575b60405260009283815283602082015283604082015283606082015283838201528360a08201528360c08201528360e082015281528260208201528260408201528260608201520152565b612685610505565b612633565b90612694826125e0565b6126a160405191826105ab565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06126cf82946125e0565b019060005b8281106126e057505050565b6020906126eb612607565b828285010152016126d4565b507f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602091815181101561273c575b60051b010190565b6127446126f7565b612734565b919081101561278a575b60051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea181360301821215610359570190565b6127926126f7565b612753565b73ffffffffffffffffffffffffffffffffffffffff16801561282a57600080809381935af16127c46124d9565b50156127cc57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41413931206661696c65642073656e6420746f2062656e6566696369617279006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4141393020696e76616c69642062656e656669636961727900000000000000006044820152fd5b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610359570180359067ffffffffffffffff82116103595760200191813603831361035957565b90816020910312610359575190565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b60005b83811061293a5750506000910152565b818101518382015260200161292a565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60209361298681518092818752878088019101612927565b0116010190565b906129a76080916108b796946101c08086528501916128e8565b9360e0815173ffffffffffffffffffffffffffffffffffffffff80825116602087015260208201516040870152604082015160608701526060820151858701528482015160a087015260a08201511660c086015260c081015182860152015161010084015260208101516101208401526040810151610140840152606081015161016084015201516101808201526101a081840391015261294a565b506040513d6000823e3d90fd5b612aa0602091612a696060850151916060810190612888565b92909160405195869485947f1d7327560000000000000000000000000000000000000000000000000000000086526004860161298d565b03816000305af160009181612b0b575b506108b757612abd6124d9565b60206000803e805115612ad257805190602001fd5b6040517f462c71b20000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604490fd5b612b2d91925060203d8111612b34575b612b2581836105ab565b8101906128d9565b9038612ab0565b503d612b1b565b9190811015612b7c575b60051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa181360301821215610359570190565b612b846126f7565b612b45565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610359570180359067ffffffffffffffff821161035957602001918160051b3603831361035957565b356108b781610422565b15612bee57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4141393620696e76616c69642061676772656761746f720000000000000000006044820152fd5b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18236030181121561035957016020813591019167ffffffffffffffff821161035957813603831361035957565b6108b791612cc781612cad8461045c565b73ffffffffffffffffffffffffffffffffffffffff169052565b60208201356020820152612d62612d13612cf8612ce76040860186612c4c565b6101608060408801528601916128e8565b612d056060860186612c4c565b9085830360608701526128e8565b6080840135608084015260a084013560a084015260c084013560c084015260e084013560e08401526101008085013590840152610120612d5581860186612c4c565b91858403908601526128e8565b91612d736101409182810190612c4c565b9290918185039101526128e8565b949391929083604087016040885252606086019360608160051b8801019482600090815b848310612dc4575050505050508460206108b7959685039101526128e8565b9091929394977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08b820301855288357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea184360301811215612e3f5760019184612e2d9201612c9c565b98602090810196950193019190612da5565b8280fd5b908092918237016000815290565b9290936108b796959260c0958552602085015265ffffffffffff8092166040850152166060830152151560808201528160a0820152019061294a565b60405190612e9a8261058f565b60006040838281528260208201520152565b612ec1612ec791612ebb612e8d565b50612f5e565b91612f5e565b9073ffffffffffffffffffffffffffffffffffffffff9182825116928315612f53575b65ffffffffffff928391826040816020850151169301511693836040816020840151169201511690808410612f4b575b50808511612f43575b5060405195612f318761058f565b16855216602084015216604082015290565b935038612f23565b925038612f1a565b815181169350612eea565b612f66612e8d565b5065ffffffffffff808260a01c168015612fb2575b60405192612f888461058f565b73ffffffffffffffffffffffffffffffffffffffff8116845260d01c602084015216604082015290565b5080612f7b565b9060206108b792818152019061294a565b9291925a903033036130735782518151613000575b50506108b793612ffa915a9003608084015101933691610682565b90615101565b5161302b916130279173ffffffffffffffffffffffffffffffffffffffff16905a916130d1565b1590565b613036573880612fdf565b610a3f6130416130e3565b6040519182917f462c71b200000000000000000000000000000000000000000000000000000000835260048301612fb9565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4141393220696e7465726e616c2063616c6c206f6e6c790000000000000000006044820152fd5b9060009283809360208451940192f190565b3d61080080821161310a575b50604051906020818301016040528082526000602083013e90565b9050386130ef565b6131286131226040830183612888565b90613256565b906131396131226060830183612888565b906131ef61314e613122610120840184612888565b60405194859360208501956101008201359260e08301359260c08101359260a08201359260808301359273ffffffffffffffffffffffffffffffffffffffff60208201359135168c9693909a9998959261012098959273ffffffffffffffffffffffffffffffffffffffff6101408a019d168952602089015260408801526060870152608086015260a085015260c084015260e08301526101008201520152565b03916132217fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938481018352826105ab565b5190206040805160208101928352309181019190915246606082015260809283018152909161325090826105ab565b51902090565b816040519182372090565b604051906040820182811067ffffffffffffffff82111761328c575b60405260006020838281520152565b613294610505565b61327d565b906014116103595790601490565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000090358181169392601481106132dc57505050565b60140360031b82901b16169150565b9060c060a06108b793805184526020810151602085015260408101511515604085015265ffffffffffff80606083015116606086015260808201511660808501520151918160a0820152019061294a565b929461339d61044d9561338b610100959998613379613365602097610140808c528b01906132eb565b9b878a019060208091805184520151910152565b80516060890152602001516080880152565b805160a08701526020015160c0860152565b73ffffffffffffffffffffffffffffffffffffffff81511660e0850152015191019060208091805184520151910152565b61341761044d946134056133f060a0959998969960e0865260e08601906132eb565b98602085019060208091805184520151910152565b80516060840152602001516080830152565b019060208091805184520151910152565b9073ffffffffffffffffffffffffffffffffffffffff613446613261565b9216600052600060205263ffffffff600160406000206dffffffffffffffffffffffffffff815460781c1685520154166020830152565b9081602091031261035957516108b781610422565b9160206108b79381815201916128e8565b7fbc79d710c27c417daea28cbdc16e638da2309ea2f5542218b102827c395d15d45473ffffffffffffffffffffffffffffffffffffffff16806108b75750737fc98430eaedbb6070b35b39d79872504908834890565b9061352873ffffffffffffffffffffffffffffffffffffffff916108b7979596946060855260608501916128e8565b9416602082015260408185039101526128e8565b60009060033d1161354957565b905060046000803e60005160e01c90565b600060443d106108b7576040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc91823d016004833e815167ffffffffffffffff918282113d6024840111176135d6578184019485519384116135de573d850101602084870101116135d657506108b7929101602001906105ab565b949350505050565b50949350505050565b9060406108b79260008152816020820152019061294a565b61360c6040820182612888565b61362461361884612bdd565b93610120810190612888565b9290303b15610359576000936136689160405196879586957f957122ab000000000000000000000000000000000000000000000000000000008752600487016134f9565b0381305afa90816136f1575b5061044d57600161368361353c565b6308c379a01461369c575b61369457565b61044d612a43565b6136a461355a565b806136b0575b5061368e565b805160009250156136aa57610a3f906040519182917f220266b6000000000000000000000000000000000000000000000000000000008352600483016135e7565b8061112d6136fe9261057b565b38613674565b9291906137109061374c565b909273ffffffffffffffffffffffffffffffffffffffff80809516911603610b1f57610ab15761373f9061374c565b9116610a43576109b35750565b80156137e65761375b90612f5e565b7f182d361d27e8fee91541f8630840b9272bdb770c7bb6239b09cd74563c40534154806137cb575073ffffffffffffffffffffffffffffffffffffffff425b65ffffffffffff908160408501511681119182156137bb575b505091511691565b60208501511611905038806137b3565b73ffffffffffffffffffffffffffffffffffffffff9061379a565b50600090600090565b156137f657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f41413934206761732076616c756573206f766572666c6f7700000000000000006044820152fd5b916000915a938151906138678282613d37565b61387081613112565b60208401526138ae6effffffffffffffffffffffffffffff60808401516060850151176040850151176101008401359060e0850135171711156137ef565b6138b782613df9565b6138c2818584613ed1565b97906138f36130276138e8875173ffffffffffffffffffffffffffffffffffffffff1690565b602088015190613c62565b6139ef5761390043600052565b73ffffffffffffffffffffffffffffffffffffffff61393860a0606097015173ffffffffffffffffffffffffffffffffffffffff1690565b166139d5575b505a810360a0840135106139685760809360c092604087015260608601525a900391013501910152565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601e60408201527f41413430206f76657220766572696669636174696f6e4761734c696d6974000060608201520190565b909350816139e69297508584614bc9565b9590923861393e565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601a60408201527f4141323520696e76616c6964206163636f756e74206e6f6e636500000000000060608201520190565b9290916000925a8251613a6f8184613d37565b613a7883613112565b6020850152613ab66effffffffffffffffffffffffffffff60808301516060840151176040840151176101008601359060e0870135171711156137ef565b613abf81613df9565b613acb8186868b61423d565b9890613afc613027613af1865173ffffffffffffffffffffffffffffffffffffffff1690565b602087015190613c62565b613bf457613b0943600052565b73ffffffffffffffffffffffffffffffffffffffff613b4160a0606096015173ffffffffffffffffffffffffffffffffffffffff1690565b16613bd9575b505a840360a086013510613b735750604085015260608401526080919060c0905a900391013501910152565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152601e60448201527f41413430206f76657220766572696669636174696f6e4761734c696d697400006064820152608490fd5b90925081613beb929850868685614e5c565b96909138613b47565b610a3f826040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601a60408201527f4141323520696e76616c6964206163636f756e74206e6f6e636500000000000060608201520190565b73ffffffffffffffffffffffffffffffffffffffff16600052600160205267ffffffffffffffff613cbe8260401c60406000209077ffffffffffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b91825492613ccb84611e82565b9055161490565b15613cd957565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4141393320696e76616c6964207061796d6173746572416e64446174610000006044820152fd5b613da990613d61613d4782612bdd565b73ffffffffffffffffffffffffffffffffffffffff168452565b602081013560208401526080810135604084015260a0810135606084015260c0810135608084015260e081013560c084015261010081013560e0840152610120810190612888565b908115613dee57613dd361143161142b8460a094613dce601461044d99981015613cd2565b613299565b73ffffffffffffffffffffffffffffffffffffffff16910152565b505060a06000910152565b60a081015173ffffffffffffffffffffffffffffffffffffffff1615613e3b5760c060035b60ff60408401519116606084015102016080830151019101510290565b60c06001613e1e565b613e5c60409295949395606083526060830190612c9c565b9460208201520152565b9061044d602f60405180947f414132332072657665727465643a2000000000000000000000000000000000006020830152613eaa8151809260208686019101612927565b810103600f8101855201836105ab565b6040906108b793928152816020820152019061294a565b916000926000925a93613f9f6020835193613f00855173ffffffffffffffffffffffffffffffffffffffff1690565b95613f18613f116040830183612888565b90846144a8565b60a086015173ffffffffffffffffffffffffffffffffffffffff1690613f3d43600052565b85809373ffffffffffffffffffffffffffffffffffffffff8094161598896141d5575b60600151908601516040517f3a871cdd000000000000000000000000000000000000000000000000000000008152978896879586939060048501613e44565b03938a1690f18291816141b5575b506141ac5750600190613fbe61353c565b6308c379a014614158575b506140eb575b613fdc575b50505a900391565b6140069073ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b614021610c2582546dffffffffffffffffffffffffffff1690565b80831161407e57614077926dffffffffffffffffffffffffffff9103166dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b3880613fd4565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601760408201527f41413231206469646e2774207061792070726566756e6400000000000000000060608201520190565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601660408201527f4141323320726576657274656420286f72204f4f47290000000000000000000060608201520190565b61416061355a565b908161416c5750613fc9565b610a3f9161417a9150613e66565b6040519182917f220266b6000000000000000000000000000000000000000000000000000000008352600483016135e7565b9550613fcf9050565b6141ce91925060203d8111612b3457612b2581836105ab565b9038613fad565b945061421b610c256142078c73ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b546dffffffffffffffffffffffffffff1690565b8b8111156142325750856060835b96915050613f60565b606087918d03614229565b90926000936000935a94614286602083519361426d855173ffffffffffffffffffffffffffffffffffffffff1690565b95613f1861427e6040830183612888565b90848c6147af565b03938a1690f1829181614488575b5061447f57506001906142a561353c565b6308c379a014614429575b506143bb575b6142c4575b5050505a900391565b6142ee9073ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b9161430a610c2584546dffffffffffffffffffffffffffff1690565b90818311614355575082547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000169190036dffffffffffffffffffffffffffff161790553880806142bb565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152601760448201527f41413231206469646e2774207061792070726566756e640000000000000000006064820152608490fd5b610a3f846040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601660408201527f4141323320726576657274656420286f72204f4f47290000000000000000000060608201520190565b61443161355a565b908161443d57506142b0565b86916144499150613e66565b90610a3f6040519283927f220266b600000000000000000000000000000000000000000000000000000000845260048401613eba565b96506142b69050565b6144a191925060203d8111612b3457612b2581836105ab565b9038614294565b9091806144b457505050565b81515173ffffffffffffffffffffffffffffffffffffffff1692833b61474257600060206144e6610ea4610ea46134a3565b606086510151604051809481937f570e1a36000000000000000000000000000000000000000000000000000000008352826145258a8a60048401613492565b0393f1908115614735575b600091614717575b5073ffffffffffffffffffffffffffffffffffffffff8082169586156146aa571680950361463d573b156145d05761143161142b7fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d9361459793613299565b602083810151935160a001516040805173ffffffffffffffffffffffffffffffffffffffff9485168152939091169183019190915290a3565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152602060408201527f4141313520696e6974436f6465206d757374206372656174652073656e64657260608201520190565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152602060408201527f4141313420696e6974436f6465206d7573742072657475726e2073656e64657260608201520190565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601b60408201527f4141313320696e6974436f6465206661696c6564206f72204f4f47000000000060608201520190565b61472f915060203d81116116395761162a81836105ab565b38614538565b61473d612a43565b614530565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601f60408201527f414131302073656e64657220616c726561647920636f6e73747275637465640060608201520190565b929091816147be575b50505050565b82515173ffffffffffffffffffffffffffffffffffffffff1693843b614a4f57600060206147f0610ea4610ea46134a3565b606087510151604051809481937f570e1a360000000000000000000000000000000000000000000000000000000083528261482f8b8b60048401613492565b0393f1908115614a42575b600091614a24575b5073ffffffffffffffffffffffffffffffffffffffff8082169687156149b65716809603614948573b156148e2575061143161142b7fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d936148a293613299565b602083810151935160a001516040805173ffffffffffffffffffffffffffffffffffffffff9485168152939091169183019190915290a3388080806147b8565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152602060448201527f4141313520696e6974436f6465206d757374206372656174652073656e6465726064820152608490fd5b610a3f826040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152602060408201527f4141313420696e6974436f6465206d7573742072657475726e2073656e64657260608201520190565b610a3f846040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601b60408201527f4141313320696e6974436f6465206661696c6564206f72204f4f47000000000060608201520190565b614a3c915060203d81116116395761162a81836105ab565b38614842565b614a4a612a43565b61483a565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152601f60448201527f414131302073656e64657220616c726561647920636f6e7374727563746564006064820152608490fd5b15614abc57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4141343120746f6f206c6974746c6520766572696669636174696f6e476173006044820152fd5b919060408382031261035957825167ffffffffffffffff81116103595783019080601f8301121561035957815191614b5183610639565b91614b5f60405193846105ab565b8383526020848301011161035957602092614b7f91848085019101612927565b92015190565b9061044d602f60405180947f414133332072657665727465643a2000000000000000000000000000000000006020830152613eaa8151809260208686019101612927565b939192606094600094600093805192614c0860a08a86015195614bed888811614ab5565b015173ffffffffffffffffffffffffffffffffffffffff1690565b91614c338373ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b94614c4f610c2587546dffffffffffffffffffffffffffff1690565b96858810614def5773ffffffffffffffffffffffffffffffffffffffff60208a9894614cc58a966dffffffffffffffffffffffffffff8b614cfe9e03166dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b015194604051998a98899788937ff465c77e00000000000000000000000000000000000000000000000000000000855260048501613e44565b0395169103f1908183918493614dc9575b50614dc2575050600190614d2161353c565b6308c379a014614da0575b50614d3357565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601660408201527f4141333320726576657274656420286f72204f4f47290000000000000000000060608201520190565b614da861355a565b9081614db45750614d2c565b610a3f9161417a9150614b85565b9450925050565b909250614de891503d8085833e614de081836105ab565b810190614b1a565b9138614d0f565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601e60408201527f41413331207061796d6173746572206465706f73697420746f6f206c6f77000060608201520190565b919492939093606095600095600093825190614e8360a08b84015193614bed848611614ab5565b93614eae8573ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b614ec9610c2582546dffffffffffffffffffffffffffff1690565b878110615024579273ffffffffffffffffffffffffffffffffffffffff60208a98969394614cc58a966dffffffffffffffffffffffffffff8d614f439e9c9a03166dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b0395169103f1908183918493615006575b50614ffe575050600190614f6661353c565b6308c379a014614fdf575b50614f795750565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152601660448201527f4141333320726576657274656420286f72204f4f4729000000000000000000006064820152608490fd5b614fe761355a565b9081614ff35750614f71565b614449925050614b85565b955093505050565b90925061501d91503d8085833e614de081836105ab565b9138614f54565b610a3f8a6040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601e60408201527f41413331207061796d6173746572206465706f73697420746f6f206c6f77000060608201520190565b9291906150b06040916000865260606020870152606086019061294a565b930152565b9060a06108b7926000815260606020820152601460608201527f4141353020706f73744f702072657665727465640000000000000000000000006080820152816040820152019061294a565b9291905a93805190615112826153db565b9260a0830194615136865173ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff9281841691826152a257505050615176845173ffffffffffffffffffffffffffffffffffffffff1690565b975b5a90030193840296604083019288845110615235576151be6020928a7f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f96510390611f42565b01519261523060206152026151e7845173ffffffffffffffffffffffffffffffffffffffff1690565b985173ffffffffffffffffffffffffffffffffffffffff1690565b9201519589846040519586951699169784606091949392608082019582526001602083015260408201520152565b0390a4565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152602060408201527f414135312070726566756e642062656c6f772061637475616c476173436f737460608201520190565b999181516152b2575b5050615178565b606087015191813b15610359576153009289600080946040518097819682957fa9a234090000000000000000000000000000000000000000000000000000000084528c029060048401615092565b0393f190816153c8575b506153c1576153176124d9565b80511561535457610a3f906040519182917f65c8fd4d000000000000000000000000000000000000000000000000000000008352600483016150b5565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601260408201527f4141353020706f73744f7020726576657274000000000000000000000000000060608201520190565b38806152ab565b8061112d6153d59261057b565b3861530a565b60e060c082015191015180821461542f577f59e3bb5c9eacf8e7a9c3802366751badc68d4d97d3e35b1744045784c52f20dd5480615429575048905b0180821015615424575090565b905090565b90615417565b509056fea2646970667358221220684f3682aa746ce7e00b461215a0d96e4353263a4da4aa7cd01807f962b9636764736f6c63430008110033","sourceMap":"1235:33115:17:-:0;;;;;;;;;-1:-1:-1;1235:33115:17;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2684:47:3;;2169:10;2258:80;2160:20;2169:10;1235:33115:17;;2160:8:3;1235:33115:17;2160:8:3;1235:33115:17;;;2160:8:3;1235:33115:17;;;2160:20:3;2198:19;2190:58;2198:19;;;2190:58;:::i;:::-;2266:39;1235:33115:17;2285:20:3;;;1235:33115:17;;;;;;;;;;2266:39:3;-1:-1:-1;2266:39:3;2258:80;:::i;:::-;1235:33115:17;;;;2377:9:3;2532:137;2364:22;2377:9;1235:33115:17;;;;;2364:22:3;:::i;:::-;2404:9;2396:40;2404:9;;;2396:40;:::i;:::-;2446:53;2454:26;;;;2446:53;:::i;:::-;2532:137;1235:33115:17;;;:::i;:::-;;;2532:137:3;1235:33115:17;;;;;;2532:137:3;2285:20;1235:33115:17;2532:137:3;;1235:33115:17;;;;;2532:137:3;;;1235:33115:17;;2532:137:3;1235:33115:17;;;2532:137:3;;;1235:33115:17;;2532:137:3;;;1235:33115:17;2509:20:3;2169:10;1235:33115:17;;2160:8:3;1235:33115:17;2160:8:3;1235:33115:17;;;2160:8:3;1235:33115:17;;;2509:20:3;1235:33115:17;:::i;:::-;2532:137:3;1235:33115:17;;;;;;;;;;;;;2169:10:3;;1235:33115:17;;;;;;;2684:47:3;;;;1235:33115:17;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;848:36:1;868:10;;-1:-1:-1;1235:33115:17;848:19:1;1235:33115:17;;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;848:36:1;:38;1235:33115:17;;848:38:1;:::i;:::-;1235:33115:17;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;268:74:1;1235:33115:17;;;;;:::i;:::-;;;;:::i;:::-;;;-1:-1:-1;1235:33115:17;268:74:1;1235:33115:17;;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;268:74:1;1235:33115:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;16366:15;1235:33115;;16366:15;1235:33115;;;;;;;;;;;16366:15;1235:33115;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;1235:33115:17;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;5767:24;;;;;:::i;:::-;5843:1;5846:10;;;;;;6165:21;5843:1;6205:17;;;;;6242:13;6237:120;6257:10;;;;;;6396:9;;;;:::i;6269:3::-;6323:6;;;1235:33115;6323:6;1235:33115;6323:6;;;;;:::i;:::-;6331:10;;;;:::i;:::-;;1235:33115;;:::i;:::-;;6269:3;1235:33115;6242:13;;;;5858:3;25287:34;5989:38;5908:10;;;;;;:::i;:::-;;6012:6;;;;;:::i;:::-;5989:38;;:::i;:::-;25287:34;;;:::i;:::-;1235:33115;;;;;25331:111;;25451:96;;25847:43;;;:::i;:::-;1235:33115;;25900:105;;26014:106;;1235:33115;;5831:13;;;;;26014:106;1235:33115;;;26055:54;;;;;;1235:33115;;;;;;;;;;;;;;;;;;;;;;;;;26055:54;;;;;25900:105;25953:41;1235:33115;;;25953:41;;;;;;;;;1235:33115;;;;;;;;;;;;;;;;;;;;;;25451:96;25492:44;1235:33115;;;25492:44;;;;;;;;;1235:33115;;;;;;;;;;;;;;;;;;;;;;25331:111;25390:41;1235:33115;;;25390:41;;;;;;;;;1235:33115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;4450:10:3;;1235:33115:17;;;;;;;;;;;;4479:30:3;;;;1235:33115:17;;4572:29:3;;1235:33115:17;4572:29:3;;;4549:53;4572:29;;4564:38;4572:29;;;4757:38;4572:29;;:::i;:::-;1235:33115:17;;;;4564:38:3;1235:33115:17;;;;;;;;;;4549:53:3;1235:33115:17;;;;;;;;;;;;;;4450:10:3;;4617:54;;;1235:33115:17;4699:48:3;;;;:::i;:::-;;4757:38;:::i;:::-;1235:33115:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;-1:-1:-1;1235:33115:17;462:19:1;1235:33115:17;;462:32:1;1235:33115:17;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;462:32:1;1235:33115:17;;;;;;;;462:55:1;1235:33115:17;;;;;;;;;;;:::i;:::-;6902:1;6918:13;6933:11;;;;;;7684:26;;;;:::i;:::-;7726:17;6902:1;7726:17;;6902:1;7788:13;7803:11;;;;;;8531;;6902:1;8500:21;8557:13;;8572:11;;;;;;9098:9;9024:38;;6902:1;8678:51;9024:38;;;9098:9;:::i;8585:3::-;8774:11;8640:19;;;;;:::i;:::-;8678:51;8705:23;8713:14;7115;8713;;;:::i;:::-;1235:33115;;;;8678:51;;6902:1;8678:51;;8774:11;;:::i;:::-;8846:13;6902:1;8841:159;8861:10;;;;;;8585:3;;;;;;:::i;:::-;8557:13;;8873:3;8933:6;;;;8976:9;8896:62;8873:3;8933:6;8896:62;8933:6;8941:16;8933:6;;;;;:::i;:::-;8941:16;;;:::i;8896:62::-;;;:::i;:::-;8976:9;;:::i;:::-;8873:3;;:::i;:::-;8846:13;;;;7816:3;7871:19;;;;;:::i;:::-;7115:14;7985;7935:11;;;;:::i;:::-;7985:14;;;;;:::i;:::-;8060:13;1235:33115;6902:1;1235:33115;;8055:425;8075:10;;;;;;7816:3;;;;;;;:::i;:::-;7788:13;;8087:3;8137:16;;;;8456:9;8137:16;8401:19;8137:16;8231:44;8137:16;8087:3;8137:16;;;:::i;:::-;;8260:6;;;;;:::i;:::-;8231:44;;:::i;:::-;8401:19;;;:::i;:::-;8456:9;:::i;8087:3::-;8060:13;;;;;6946:3;7001:19;;;;;:::i;:::-;7065:11;;;;;:::i;:::-;7115:14;7216:19;7115:14;;;;;:::i;7216:19::-;1235:33115;;;;7208:69;7247:1;7216:33;;;7208:69;:::i;:::-;7292:305;;6946:3;7611:22;;;6946:3;7611:22;;;;:::i;:::-;6946:3;;:::i;:::-;6918:13;;;7292:305;7449:13;;;;;;;;;;;;;;;;;;:::i;:::-;7414:49;;;;;;;1235:33115;;;;;;7414:49;;;;;1235:33115;7414:49;;1235:33115;7414:49;;;;;;;;:::i;:::-;;;;;6902:1;7414:49;;;;;;7292:305;-1:-1:-1;7410:173:17;;1235:33115;;7518:46;;;1235:33115;;;7518:46;;;1235:33115;;;;;;;26055:54;;;7410:173;;;-1:-1:-1;7410:173:17;;-1:-1:-1;7410:173:17;;-1:-1:-1;7410:173:17;;7611:22;6946:3;7292:305;;7414:49;;;;;;:::i;:::-;;;:::i;:::-;;;;1235:33115;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;1235:33115:17;-1:-1:-1;1235:33115:17;;;;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;1926:1;1235:33115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;20582:20;;;;:47;;;;1235:33115;20578:182;;;20800:2;20773:29;;;20769:308;;1235:33115;21111:10;1235:33115;;;21111:10;;;;;;;;1235:33115;;;;;;;;;;;;;20769:308;20854:22;20838:40;20854:22;20846:31;20854:22;;:::i;:::-;20846:31;;:::i;:::-;1235:33115;;;;20838:40;20896:21;:26;20892:175;;20769:308;;;;20892:175;21015:37;1235:33115;;;21015:37;;;;;;;;1235:33115;;;;;;;;;;;;;;;;;;20578:182;20714:35;1235:33115;;;20714:35;;;;;;;;1235:33115;;;;;;;;;;;;;;;;;;20582:47;20606:18;;;:23;20582:47;;;1235:33115;;;;;;;;;;;;;;;;;;;19730:45;1235:33115;;;;;;;;;:::i;:::-;;;;19658:45;;;:::i;:::-;1235:33115;;-1:-1:-1;1235:33115:17;;19730:45;;;;;;1235:33115;19730:45;;1235:33115;19730:45;;;:::i;:::-;;;;;;;;;;1235:33115;-1:-1:-1;19730:45:17;;;1235:33115;;;;19793:27;;;;1235:33115;;19793:27;;1235:33115;19793:27;19730:45;;;;;1235:33115;19730:45;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;1235:33115;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;2955:10:3;1235:33115:17;;;;;;;;2984:20:3;;;1235:33115:17;;;;;2984:25:3;;;1235:33115:17;;3163:32:3;3107:46;3205:19;1235:33115:17;3034:41:3;1235:33115:17;;;;;;;;;;;3034:41:3;:::i;:::-;1235:33115:17;3114:15:3;1235:33115:17;3107:46:3;:::i;:::-;1235:33115:17;;;;;;;;;;;;;;;3163:32:3;1235:33115:17;;;;;;;3205:19:3;1235:33115:17;;;;;;;;;2955:10:3;;3239:39;;1235:33115:17;;3239:39:3;1235:33115:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4091:44:3;1235:33115:17;3593:20:3;3602:10;1235:33115:17;;2160:8:3;1235:33115:17;2160:8:3;1235:33115:17;;;2160:8:3;1235:33115:17;;;3593:20:3;1235:33115:17;3935:14:3;3623:26;1235:33115:17;;;;;;;;;;3623:26:3;3667:9;3659:42;3667:9;;;3659:42;:::i;:::-;3904:21;3719:17;;;3784:76;1235:33115:17;;;;;;;;;;;;;3711:63:3;3719:21;;;3711:63;:::i;:::-;3813:15;-1:-1:-1;3792:36:3;3784:76;:::i;:::-;1235:33115:17;;;;;;;3904:21:3;1235:33115:17;;;;;;;3935:14:3;1235:33115:17;;;;;;;;;;;;;;3602:10:3;;3964:50;;;-1:-1:-1;1235:33115:17;;;;;;;;4042:39:3;;;;:::i;:::-;;4091:44;:::i;1235:33115:17:-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;9870:101;1235:33115;;;;;;:::i;:::-;;;:::i;:::-;9362:2;;;:::i;:::-;9508:60;9435:34;;;;:::i;:::-;9508:60;;:::i;:::-;-1:-1:-1;9618:29:17;-1:-1:-1;;34290:52:17;;;;9618:29;:::i;:::-;34290:52;;;;9681:18;9709:25;1235:33115;;;;;9744:110;;1235:33115;9886:15;;;;;;1235:33115;9909:15;1235:33115;;;;9909:15;;1235:33115;;;;;;9926:15;;1235:33115;;;;;;;;;9870:101;;;;;;1235:33115;9870:101;;;:::i;9744:110::-;1235:33115;;;;;;;;;;;;;;;;;;;:::i;:::-;9816:27;;;;;9886:15;9816:27;;:::i;:::-;9784:59;9744:110;;;;;;;1235:33115;;;;;;;;:::i;:::-;;;:::i;:::-;15996:6;;;:::i;:::-;16073:41;;;;:::i;:::-;16171:17;;:27;;1235:33115;16171:17;;;16157:42;;1235:33115;;16157:42;:::i;16171:27::-;16157:42;:::i;:::-;16253:17;16239:39;16253:24;:17;;1235:33115;;;;;;16239:39;1235:33115;;;:::i;:::-;;16510:22;16366:15;;;;;;;;:::i;:::-;16413:69;-1:-1:-1;16432:2:17;16413:21;;16432:2;;16453:14;;16437:32;16453:14;16445:23;16453:14;;:::i;16510:22::-;16582:60;;;;:::i;:::-;1235:33115;;;;;;;;16737:1;16715:24;;16804:18;;;;1235:33115;16836:17;;;;1235:33115;16890:15;;;;;1235:33115;;;;;;;;16919:15;;1235:33115;;;16973:23;;;1235:33115;;;;:::i;:::-;;;;16890:15;16780:227;;1235:33115;;;;16780:227;;;1235:33115;;;16973:23;16780:227;;1235:33115;;;16804:18;16780:227;;1235:33115;16171:27;16780:227;;1235:33115;17022:24;;:52;;;;16413:69;17018:305;;;1235:33115;17339:68;1235:33115;;17339:68;;;;;;1235:33115;17339:68;;;:::i;17018:305::-;17166:25;;17213:99;17166:25;;;;:::i;:::-;17134:58;1235:33115;;:::i;:::-;;;;;;;;17134:58;16890:15;17134:58;;1235:33115;;17213:99;;;;;;1235:33115;17213:99;;;:::i;17022:52::-;17050:24;;;17022:52;;;16413:69;;;;16510:22;:::i;1235:33115::-;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;1235:33115:17;-1:-1:-1;1235:33115:17;;;;-1:-1:-1;1235:33115:17;;506:47:3;1235:33115:17;;506:47:3;;1235:33115:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;:::i;:::-;;;:::o;1216:65:3:-;1263:10;;1649:206;1235:33115:17;1649:206:3;1737:9;;;;:::i;:::-;1235:33115:17;;1784:8:3;1235:33115:17;1784:8:3;1235:33115:17;;1816:32:3;1235:33115:17;;;1784:8:3;1235:33115:17;;;;;;;;1816:32:3;1649:206::o;1235:33115:17:-;;;;;;;;;;:::o;:::-;;;:::i;1287:293:3:-;1235:33115:17;;1393:8:3;1235:33115:17;1393:8:3;1235:33115:17;;;1393:8:3;1235:33115:17;;;;;;;;;;;;;;1287:293:3;1479:30;;;1235:33115:17;;1540:33:3;1235:33115:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;1235:33115:17;;;;:::o;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;-1:-1:-1;1235:33115:17;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;:::i;:::-;;;2722:278;1235:33115;;2815:25;;1235:33115;;2838:1;2897:35;;;;;;;;;:::i;:::-;;1235:33115;;;2722:278::o;1235:33115::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;1235:33115:17;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;1235:33115:17;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;3228:1997;3516:52;;3228:1997;3535:15;3480:20;;;1235:33115;3535:15;3480:20;3535:15;;;;:::i;:::-;1235:33115;;;;;3516:52;;;;;1235:33115;3516:52;;;;;;:::i;:::-;;:4;1235:33115;3516:4;:52;;1235:33115;;3516:52;;;3228:1997;-1:-1:-1;3512:1707:17;;3654:1565;;:::i;:::-;3516:52;1235:33115;3733:109;;1235:33115;;4562:18;4558:52;;4625:142;;;3516:52;4625:142;;4558:52;1235:33115;;4589:21;;;1235:33115;3516:52;4589:21;;1235:33115;-1:-1:-1;1235:33115:17;;;;;;26055:54;3516:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1235:33115;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;-1:-1:-1;1235:33115:17;;;;;;;;;;;;:::o;1392:927:0:-;1571:36;1658:45;1392:927;1235:33115:17;;:::i;:::-;;1571:36:0;:::i;:::-;1658:45;;:::i;:::-;1235:33115:17;;;;;;;1780:24:0;;;1776:95;;1392:927;1235:33115:17;1900:32:0;;;;1962;1900;;;;1235:33115:17;;1962:32:0;;1235:33115:17;;2026:27:0;;1962:32;2026:27;1900:32;2026:27;;1235:33115:17;;2085:27:0;;1235:33115:17;;2127:25:0;;;;2123:56;;1392:927;2193:25;;;;2189:56;;1392:927;1235:33115:17;1962:32:0;1235:33115:17;;;;;:::i;:::-;;;;;1900:32:0;2262:50;;1235:33115:17;;1962:32:0;2262:50;;1235:33115:17;1392:927:0;:::o;2189:56::-;2220:25;-1:-1:-1;2189:56:0;;;2123;2154:25;-1:-1:-1;2123:56:0;;;1776:95;1235:33115:17;;;;;-1:-1:-1;1776:95:0;;904:439;1235:33115:17;;:::i;:::-;;;;;1115:3:0;1235:33115:17;;1133:15:0;;1129:75;;904:439;1235:33115:17;;;;;;:::i;:::-;;;;;;1259:8:0;1235:33115:17;1286:50:0;;;1235:33115:17;;;1286:50:0;;1235:33115:17;904:439:0;:::o;1129:75::-;1164:29;;1129:75;;1695:4:17;;;;;;;;;;;:::i;10744:3392::-;;;;10928:9;10977:4;;10955:10;:27;1235:33115;;11050:14;;1235:33115;;12085:1745;;10744:3392;13893:9;;14069:50;13893:9;1695:4;13893:9;;1695:4;;13905:15;;;1235:33115;;1695:4;;;;:::i;:::-;14069:50;;:::i;12085:1745::-;1235:33115;12815:8;;12495:49;;1235:33115;;12534:9;;12495:49;;:::i;:::-;12815:8;;1235:33115;12815:8;12811:1009;;12085:1745;;;;12811:1009;13280:25;12865:41;;:::i;:::-;1235:33115;;13280:25;;;;;;;;;;:::i;1235:33115::-;;;;;;;;;;;;;;;;;;;;;;;230:263:11;;11050:14:17;230:263:11;;;;385:102;;;;;;;230:263;:::o;1066:436::-;1163:333;1695:4:17;1163:333:11;;;;;1066:436;1163:333;;;;;;;;;;;;;;;;;;;1066:436;:::o;1163:333::-;;;;;;14344:174:17;2762:31:10;2777:15;;;;;;:::i;:::-;2762:31;;:::i;:::-;2841:15;2826:31;2841:15;;;;;;:::i;2826:31::-;3217:23;3259:237;3202:39;3217:23;;;;;;:::i;3202:39::-;2777:15;1235:33115:17;3259:237:10;;;2717:12;3259:237;;3134:27;;;;1235:33115:17;3074:19:10;;;;1235:33115:17;3016:25:10;;;;1235:33115:17;2950:27:10;;;;1235:33115:17;2890:19:10;;;;1235:33115:17;2717:12:10;1235:33115:17;2717:12:10;;;1235:33115:17;1859:39:10;;1235:33115:17;3259:237:10;1235:33115:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3259:237:10;;;;;;;;;;;;;:::i;:::-;1235:33115:17;3603:23:10;;2777:15;1235:33115:17;;2717:12:10;14455:55:17;;1235:33115;;;14489:4;1235:33115;;;;;;;14496:13;1235:33115;;;;;14455:55;;;;;;;;;1235:33115;14455:55;:::i;:::-;1235:33115;14445:66;;14344:174;:::o;3357:265:0:-;3439:177;;;;;;;3357:265;:::o;1235:33115:17:-;;;;;;;;;;;;;;;;;;;-1:-1:-1;1235:33115:17;;;;;;;:::o;:::-;;;:::i;:::-;;;;;20800:2;1235:33115;;;;20800:2;1235:33115;:::o;:::-;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;1235:33115:17:o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;781:248:3;;1235:33115:17;;;:::i;:::-;;;908:8:3;1235:33115:17;908:8:3;1235:33115:17;;;995:27:3;1235:33115:17;908:8:3;1235:33115:17;;;;;;;;;995:27:3;1235:33115:17;;;972:20:3;;1235:33115:17;781:248:3:o;1235:33115:17:-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;1003:226:16:-;317:27;;1235:33115:17;;1163:21:16;1235:33115:17;;1163:59:16;695:42;1003:226;:::o;1235:33115:17:-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1235:33115:17;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;20031:13;1235:33115;;;;;;;;;;:::i;19833:421::-;20014:15;;;;;;:::i;:::-;20046:23;20031:13;;;:::i;:::-;20046:23;;;;;;:::i;:::-;19981:4;;;:89;;;;20031:13;1235:33115;19981:89;1235:33115;20014:15;1235:33115;19981:89;;;;;1235:33115;19981:89;;;;;;:::i;:::-;;:4;;:89;;;;;;19833:421;-1:-1:-1;19977:271:17;;;;;:::i;:::-;;;;;;;;19833:421::o;19977:271::-;;;:::i;:::-;20082:166;;:::i;:::-;;;;19977:271;;;;20082:166;1235:33115;;20031:13;;-1:-1:-1;20136:102:17;20082:166;20136:102;20198:25;1235:33115;20014:15;1235:33115;20198:25;;;;;;19981:89;20198:25;;;:::i;19981:89::-;;;;;;:::i;:::-;;;;25027:1099;;;;25287:34;25027:1099;25287:34;:::i;:::-;1235:33115;;;;;;;;;25335:32;25331:111;;25451:96;;25847:43;;;:::i;:::-;1235:33115;;25900:105;;26014:106;;25027:1099;:::o;26132:523::-;26290:19;;26286:76;;26400:36;;;:::i;:::-;494:28:16;1235:33115:17;2434:14:16;;;2451:15;1235:33115:17;2451:15:16;2434:44;1235:33115:17;26559:15;;;;;1235:33115;;26542:32;;:68;;;;;2434:44:16;26525:85:17;;1235:33115;;;26132:523;:::o;26542:68::-;26595:15;;;1235:33115;;-1:-1:-1;;;26542:68:17;;;;2434:44:16;1235:33115:17;2434:44:16;;;26286:76:17;26325:26;26308:1;26325:26;26308:1;26325:26;:::o;1235:33115::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;27012:2125;;-1:-1:-1;27239:9:17;;27288:17;;;27343:7;;;;;:::i;:::-;27384:21;;;:::i;:::-;27361:20;;;1235:33115;27745:70;1235:33115;27591:26;;;1235:33115;27620:28;;;1235:33115;27591:57;27651:20;;;1235:33115;27591:80;27708:27;;;1235:33115;27686:19;;;;1235:33115;27591:114;:144;27753:33;;27745:70;:::i;:::-;27906:28;;;:::i;:::-;28011:71;;;;;:::i;:::-;27944:138;;28097:55;28098:54;1235:33115;;;;;;;;27361:20;28138:13;;1235:33115;28098:54;;:::i;28097:55::-;28093:140;;;34290:52;;;34242:106;28093:140;1235:33115;;28468:17;27620:28;28468:17;;1235:33115;;;;;;;28464:238;;27012:2125;28762:9;;1695:4;;28468:17;28790:27;;1235:33115;28790:37;28786:134;;27591:26;28933:17;29095:25;28933:17;27651:20;28933:17;;1235:33115;27620:28;28982:23;;1235:33115;29083:9;1695:4;;29095:25;;1235:33115;;29053:18;;1235:33115;27012:2125::o;28786:134::-;27651:20;1235:33115;28854:51;;;;;;;;1235:33115;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;;;;;28464:238;28552:139;;;;;;;;;;;:::i;:::-;28515:176;;28464:238;;;;28093:140;27651:20;1235:33115;28175:47;;;;;;;;1235:33115;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;;;;;27012:2125;;;;1235:33115;27239:9;;27288:17;;27343:7;;;;:::i;:::-;27384:21;;;:::i;:::-;27361:20;;;1235:33115;27745:70;1235:33115;27591:26;;;1235:33115;27620:28;;;1235:33115;27591:57;27651:20;;;1235:33115;27591:80;27708:27;;;1235:33115;27686:19;;;;1235:33115;27591:114;:144;27753:33;;27745:70;:::i;:::-;27906:28;;;:::i;:::-;28011:71;;;;;;:::i;:::-;27944:138;;28097:55;28098:54;1235:33115;;;;;;;;27361:20;28138:13;;1235:33115;28098:54;;:::i;28097:55::-;28093:140;;;34290:52;;;34242:106;28093:140;1235:33115;;28468:17;27620:28;28468:17;;1235:33115;;;;;;;28464:238;;27012:2125;28762:9;;1695:4;;28468:17;28790:27;;1235:33115;28790:37;28786:134;;-1:-1:-1;27651:20:17;28933:17;;1235:33115;27620:28;28982:23;;1235:33115;27591:26;;28933:17;29095:25;;29083:9;1695:4;;29095:25;;1235:33115;;29053:18;;1235:33115;27012:2125::o;28786:134::-;27651:20;1235:33115;;28854:51;;;;;;1235:33115;;;;;;;;;;;;;;;;;;;;26055:54;28464:238;28552:139;;;;;;;;;;;;:::i;:::-;28515:176;;28464:238;;;;28093:140;28175:47;1235:33115;27651:20;1235:33115;28175:47;;;;;;;;;1235:33115;;;;;;;;;;;;;;;;;;;;;;1008:234:1;1235:33115:17;;-1:-1:-1;1235:33115:17;1194:19:1;1235:33115:17;;;1194:32:1;1235:33115:17;1138:2:1;1235:33115:17;1138:2:1;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;1194:32:1;1235:33115:17;;;1194:34:1;;;;:::i;:::-;1235:33115:17;;;1194:41:1;1008:234;:::o;1235:33115:17:-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;14613:831;15142:23;14613:831;14726:30;14743:13;;;:::i;:::-;1235:33115;;;;;14726:30;14782:12;;;1235:33115;14782:12;14766:13;;1235:33115;14827:19;;;1235:33115;14804:20;;;1235:33115;14887:27;;;1235:33115;14856:28;;;1235:33115;14953:25;;;1235:33115;14827:19;14924:26;;1235:33115;15011:19;;;1235:33115;14953:25;14988:20;;1235:33115;15071:27;;;1235:33115;15011:19;15040:28;;1235:33115;15142:23;;;;;:::i;:::-;15179:27;;;;;15327:39;15335:30;15343:21;15230:29;14887:27;15230:29;15222:71;15257:2;15307:59;15230:29;;;;15222:71;:::i;:::-;15343:21;:::i;15327:39::-;1235:33115;;15307:17;;1235:33115;;15175:263;15397:17;;14887:27;1235:33115;15397:17;;1235:33115;14613:831::o;17420:579::-;17754:17;;;1235:33115;;;17754:31;:39;;17962:20;17788:1;17754:39;1235:33115;17829:20;;;1235:33115;;;17852:28;;;1235:33115;;;17889:26;;;1235:33115;;17962:20;;1235:33115;;17420:579;:::o;17754:39::-;17962:20;17792:1;17754:39;;1235:33115;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;21334:1772::-;;-1:-1:-1;21565:22:17;-1:-1:-1;21640:9:17;;21693:14;22154:140;22242:17;21693:14;;1235:33115;;;;;;;;;21805:11;;;;;;;;:::i;:::-;;;;:::i;:::-;21851:17;;;1235:33115;;;21831:37;;34290:52;;;34242:106;21831:37;21910:31;;1235:33115;;;;;21959:23;21955:182;;;;21334:1772;22191:28;;1235:33115;22242:17;;;1235:33115;21805:11;1235:33115;;22154:140;;1235:33115;;;;;;;;22154:140;;;;:::i;:::-;;1235:33115;;;22154:140;;;;;;;21334:1772;-1:-1:-1;22150:480:17;;;;;;;:::i;:::-;;;;;;;;;;22643:378;;22150:480;23080:9;;;1695:4;;21334:1772;:::o;22643:378::-;22723:16;;1235:33115;;;;;;;;;;;;22723:16;22757:36;1235:33115;;;;;;;22757:36;22815:25;;;22811:123;;22951:55;1695:4;1235:33115;1695:4;;1235:33115;;;;;;;;;;;22951:55;22643:378;;;;22811:123;21805:11;1235:33115;22871:44;;;;;22154:140;22871:44;;1235:33115;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;;;;;22150:480;21805:11;1235:33115;22572:43;;;;;22154:140;22572:43;;1235:33115;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;;;;;22150:480;22395:145;;:::i;:::-;;;;;22150:480;;;22395:145;22460:65;22395:145;22478:46;22395:145;22478:46;;:::i;:::-;21805:11;1235:33115;22460:65;;;;;;22154:140;22460:65;;;:::i;22150:480::-;22347:32;-1:-1:-1;22150:480:17;;-1:-1:-1;22150:480:17;22154:140;;;;;22242:17;22154:140;;;;;;;;;:::i;:::-;;;;;21955:182;1178:17:3;;1171:32;1178:25;:17;;1235:33115:17;;;;;;;;;;;;1178:17:3;1235:33115:17;;;;;1171:32:3;22073:21:17;;;;;;:49;;22191:28;22073:49;;21955:182;;;;;;22073:49;22191:28;1695:4;;;;22073:49;;21334:1772;;;1235:33115;21565:22;1235:33115;21640:9;;21693:14;22154:140;22242:17;21693:14;;1235:33115;;;;;;;;;21805:11;;;;;;;;:::i;:::-;;;;;:::i;22154:140::-;;1235:33115;;;22154:140;;;;;;;21334:1772;-1:-1:-1;22150:480:17;;;;;;;:::i;:::-;;;;;;;;;;22643:378;;22150:480;23080:9;;;;1695:4;;21334:1772;:::o;22643:378::-;22723:16;;1235:33115;;;;;;;;;;;;22723:16;1235:33115;22757:36;1235:33115;;;;;;;22757:36;22815:25;;;;22811:123;;-1:-1:-1;1235:33115:17;;;;1695:4;;;1235:33115;;;;;22643:378;;;;;22811:123;21805:11;1235:33115;;22871:44;;;22154:140;22871:44;;1235:33115;;;;;;;;;;;;;;;;;;;;26055:54;22150:480;22572:43;1235:33115;21805:11;1235:33115;22572:43;;;;;;22154:140;22572:43;;1235:33115;;;;;;;;;;;;;;;;;;;;;;22150:480;22395:145;;:::i;:::-;;;;;22150:480;;;22395:145;;;22478:46;22395:145;22478:46;;:::i;:::-;1235:33115;22460:65;21805:11;1235:33115;22460:65;;;;;;22154:140;22460:65;;;:::i;22150:480::-;22347:32;-1:-1:-1;22150:480:17;;-1:-1:-1;22150:480:17;22154:140;;;;;22242:17;22154:140;;;;;;;;;:::i;:::-;;;;;18052:1073;;;18174:20;18170:949;;18052:1073;;;:::o;18170:949::-;18227:14;;1235:33115;;;18266:18;;;18262:88;;-1:-1:-1;18563:87:17;:35;:22;18486:45;;:::i;18563:35::-;18604;:14;;:35;1235:33115;;;18563:87;;;;1235:33115;18563:87;;;;;;;;;;:::i;:::-;;;;;;;;;18170:949;-1:-1:-1;18563:87:17;;;18170:949;1235:33115;;;;;18669:21;;;18665:82;;1235:33115;18765:17;;;18761:83;;18862:19;:24;18858:90;;18988:23;18996:14;19031:77;18996:14;18980:32;18996:14;;:::i;18980:32::-;18563:87;19047:17;;;1235:33115;19083:14;;:24;;1235:33115;;;;;;;;;;;;;;;;;;;;;;19031:77;18052:1073::o;18858:90::-;1235:33115;;18895:53;;;;;18563:87;18895:53;;1235:33115;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;;;;;18761:83;1235:33115;;18791:53;;;;;18563:87;18791:53;;1235:33115;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;;;;;18665:82;1235:33115;;18699:48;;;;;18563:87;18699:48;;1235:33115;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;;;;;18563:87;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;18262:88;1235:33115;;18298:52;;;;;;;;1235:33115;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;;;;;18052:1073;;;;18174:20;18170:949;;18052:1073;;;;;:::o;18170:949::-;18227:14;;1235:33115;;;18266:18;;;18262:88;;18193:1;18563:87;:35;:22;18486:45;;:::i;18563:35::-;18604;:14;;:35;1235:33115;;;18563:87;;;;1235:33115;18563:87;;;;;;;;;;:::i;:::-;;;;;;;;;18170:949;18193:1;18563:87;;;18170:949;1235:33115;;;;;18669:21;;;18665:82;;1235:33115;18765:17;;;18761:83;;18862:19;:24;18858:90;;18996:14;18988:23;18996:14;19031:77;18996:14;18980:32;18996:14;;:::i;18980:32::-;18563:87;19047:17;;;1235:33115;19083:14;;:24;;1235:33115;;;;;;;;;;;;;;;;;;;;;;19031:77;18170:949;;;;;;18858:90;1235:33115;;;18895:53;;;18563:87;18895:53;;1235:33115;;;;;;;;;;;;;;;;;;;;26055:54;18761:83;18791:53;1235:33115;;;18791:53;;;;;;18563:87;18791:53;;1235:33115;;;;;;;;;;;;;;;;;;;;;;18665:82;18699:48;1235:33115;;;18699:48;;;;;;18563:87;18699:48;;1235:33115;;;;;;;;;;;;;;;;;;;;;;18563:87;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;18262:88;1235:33115;;;18298:52;;;;;;1235:33115;;;;;;;;;;;;;;;;;;;;26055:54;1235:33115;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;23364:1555::-;;;;1235:33115;23627:22;-1:-1:-1;23627:22:17;-1:-1:-1;23715:14:17;;;23774:28;1235:33115;24037:17;23774:28;;;1235:33115;23824:57;23816:101;23824:57;;;23816:101;:::i;:::-;24037:17;1235:33115;;;;;;24104:19;;;1235:33115;;;;;;;;;;;;24104:19;1235:33115;24137:39;1235:33115;;;;;;;24137:39;24194:25;;;;24190:122;;1235:33115;24461:17;1695:4;;;24325:58;1695:4;;1235:33115;1695:4;24401:95;1695:4;;1235:33115;;;;;;;;;;;24325:58;24461:17;1235:33115;;;;24401:95;;;;;;;1235:33115;24401:95;;;;;;:::i;:::-;;1235:33115;;1695:4;;24401:95;;;;-1:-1:-1;;24401:95:17;;;23364:1555;-1:-1:-1;24397:506:17;;;;;;;;:::i;:::-;;;;;;;;;23364:1555::o;24397:506::-;1235:33115;;24845:43;;;;;24401:95;24845:43;;1235:33115;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;;;;;24397:506;24668:145;;:::i;:::-;;;;;24397:506;;;24668:145;24733:65;24668:145;24751:46;24668:145;24751:46;;:::i;24397:506::-;24584:18;-1:-1:-1;24584:18:17;-1:-1:-1;;23364:1555:17:o;24401:95::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;24190:122;1235:33115;;24246:51;;;;;;;;1235:33115;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;;;;;23364:1555;;;;;;;1235:33115;23627:22;1235:33115;23627:22;1235:33115;23715:14;;;23774:28;1235:33115;24037:17;23774:28;;;1235:33115;23824:57;23816:101;23824:57;;;23816:101;:::i;1235:33115::-;24104:19;;;1235:33115;;;;;;;;;;;;24104:19;24137:39;1235:33115;;;;;;;24137:39;24194:25;;;24190:122;;1695:4;1235:33115;24461:17;1695:4;;;;;24325:58;1695:4;;1235:33115;1695:4;24401:95;1695:4;;;;1235:33115;;;;;;;;;;;24401:95;;1235:33115;;1695:4;;24401:95;;;;1235:33115;;24401:95;;;23364:1555;-1:-1:-1;24397:506:17;;;;;;;;:::i;:::-;;;;;;;;;;23364:1555::o;24397:506::-;1235:33115;;;24845:43;;;24401:95;24845:43;;1235:33115;;;;;;;;;;;;;;;;;;;;26055:54;24397:506;24668:145;;:::i;:::-;;;;;24397:506;;;24668:145;24751:46;24668:145;;24751:46;;:::i;24397:506::-;24584:18;-1:-1:-1;24584:18:17;-1:-1:-1;;;23364:1555:17:o;24401:95::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;24190:122;24246:51;1235:33115;;;24246:51;;;;;;;;;1235:33115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;11050:14;1235:33115;;;;;;;;;;;;;;;;;;;;;;;;;:::i;29781:3124::-;;;;30029:9;30072:21;30137:14;;30184:26;;;;:::i;:::-;30245:17;;;;1235:33115;;;;;;;;;;;;;;;30280:23;1235:33115;;;;;;;;;;;;;30276:2007;;32318:9;1695:4;;1235:33115;;;;32395:14;;;;1235:33115;;;;32395:30;32391:129;;32627:6;32759:17;1235:33115;;32723:152;1235:33115;;1695:4;32627:6;;:::i;:::-;32759:17;1235:33115;;32723:152;32759:17;1235:33115;;;;;;;;;;;;;;;;32813:13;;1235:33115;;;;32395:14;1235:33115;;;;;;;32723:152;;1235:33115;;;;;;;;;;;32663:41;1235:33115;;;;;;;;;;;32723:152;;;;29781:3124::o;32391:129::-;32395:14;1235:33115;32452:53;;;;;;;;1235:33115;;11050:14;1235:33115;;;;;;;;;;;;;;;;;;;;30276:2007;30392:25;;1235:33115;;30435:1834;;30276:2007;;;;;30435:1834;31020:28;;;1235:33115;30986:147;;;;;;;1235:33115;;11050:14;1235:33115;;;;30986:147;;;;;;1235:33115;30986:147;;1235:33115;;30986:147;;;;;:::i;:::-;;;;;;;;30435:1834;-1:-1:-1;30982:406:17;;31137:251;;:::i;:::-;1235:33115;;31199:18;31195:70;;31302:59;1235:33115;;;31302:59;;;;;;30986:147;31302:59;;;:::i;31195:70::-;1235:33115;;31226:39;;;;;30986:147;31226:39;;1235:33115;;11050:14;1235:33115;;;;;;;;;;;;;;;;;;;;30982:406;30435:1834;;;;30986:147;;;;;;:::i;:::-;;;;33073:546;33283:28;33218:20;;;1235:33115;33283:28;;1235:33115;33329:36;;;33325:173;;405:35:16;1235:33115:17;2102:12:16;;;2117:13;;2102:38;;1235:33115:17;33709:5;;;;;;:13;33073:546;:::o;33709:13::-;;;33073:546;:::o;2102:38:16:-;;;;33325:173:17;33464:19;;:::o","linkReferences":{}},"methodIdentifiers":{"SIG_VALIDATION_FAILED()":"8f41ec5a","_validateSenderAndPaymaster(bytes,address,bytes)":"957122ab","addStake(uint32)":"0396cb60","balanceOf(address)":"70a08231","depositTo(address)":"b760faf9","deposits(address)":"fc7e286d","getDepositInfo(address)":"5287ce12","getNonce(address,uint192)":"35567e1a","getSenderAddress(bytes)":"9b249f69","getUserOpHash((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))":"a6193531","handleAggregatedOps(((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address,bytes)[],address)":"4b1d7cf5","handleOps((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address)":"1fad948c","incrementNonce(uint192)":"0bd28e3b","innerHandleOp(bytes,((address,uint256,uint256,uint256,uint256,address,uint256,uint256),bytes32,uint256,uint256,uint256),bytes)":"1d732756","nonceSequenceNumber(address,uint192)":"1b2e01b8","simulateHandleOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address,bytes)":"d6383f94","simulateValidation((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))":"ee219423","unlockStake()":"bb9fe6bf","withdrawStake(address)":"c23a5cea","withdrawTo(address,uint256)":"205c2878"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"CallPhaseReverted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"preOpGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"paid\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"validAfter\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"validUntil\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"targetSuccess\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"targetResult\",\"type\":\"bytes\"}],\"name\":\"ExecutionResult\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"opIndex\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"FailedOp\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"opIndex\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"inner\",\"type\":\"bytes\"}],\"name\":\"FailedOpWithRevert\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SenderAddressResult\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"}],\"name\":\"SignatureValidationFailed\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"preOpGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"prefund\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"sigFailed\",\"type\":\"bool\"},{\"internalType\":\"uint48\",\"name\":\"validAfter\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"validUntil\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"paymasterContext\",\"type\":\"bytes\"}],\"internalType\":\"struct IEntryPoint.ReturnInfo\",\"name\":\"returnInfo\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unstakeDelaySec\",\"type\":\"uint256\"}],\"internalType\":\"struct IStakeManager.StakeInfo\",\"name\":\"senderInfo\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unstakeDelaySec\",\"type\":\"uint256\"}],\"internalType\":\"struct IStakeManager.StakeInfo\",\"name\":\"factoryInfo\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unstakeDelaySec\",\"type\":\"uint256\"}],\"internalType\":\"struct IStakeManager.StakeInfo\",\"name\":\"paymasterInfo\",\"type\":\"tuple\"}],\"name\":\"ValidationResult\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"preOpGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"prefund\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"sigFailed\",\"type\":\"bool\"},{\"internalType\":\"uint48\",\"name\":\"validAfter\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"validUntil\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"paymasterContext\",\"type\":\"bytes\"}],\"internalType\":\"struct IEntryPoint.ReturnInfo\",\"name\":\"returnInfo\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unstakeDelaySec\",\"type\":\"uint256\"}],\"internalType\":\"struct IStakeManager.StakeInfo\",\"name\":\"senderInfo\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unstakeDelaySec\",\"type\":\"uint256\"}],\"internalType\":\"struct IStakeManager.StakeInfo\",\"name\":\"factoryInfo\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unstakeDelaySec\",\"type\":\"uint256\"}],\"internalType\":\"struct IStakeManager.StakeInfo\",\"name\":\"paymasterInfo\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unstakeDelaySec\",\"type\":\"uint256\"}],\"internalType\":\"struct IStakeManager.StakeInfo\",\"name\":\"stakeInfo\",\"type\":\"tuple\"}],\"internalType\":\"struct IEntryPoint.AggregatorStakeInfo\",\"name\":\"aggregatorInfo\",\"type\":\"tuple\"}],\"name\":\"ValidationResultWithAggregation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"paymaster\",\"type\":\"address\"}],\"name\":\"AccountDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"BeforeExecution\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalDeposit\",\"type\":\"uint256\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"}],\"name\":\"SignatureAggregatorChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalStaked\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"unstakeDelaySec\",\"type\":\"uint256\"}],\"name\":\"StakeLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawTime\",\"type\":\"uint256\"}],\"name\":\"StakeUnlocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"withdrawAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"StakeWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"paymaster\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"actualGasCost\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"actualGasUsed\",\"type\":\"uint256\"}],\"name\":\"UserOperationEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"revertReason\",\"type\":\"bytes\"}],\"name\":\"UserOperationRevertReason\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"withdrawAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"SIG_VALIDATION_FAILED\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"}],\"name\":\"_validateSenderAndPaymaster\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"unstakeDelaySec\",\"type\":\"uint32\"}],\"name\":\"addStake\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"depositTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"deposits\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"deposit\",\"type\":\"uint112\"},{\"internalType\":\"bool\",\"name\":\"staked\",\"type\":\"bool\"},{\"internalType\":\"uint112\",\"name\":\"stake\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"unstakeDelaySec\",\"type\":\"uint32\"},{\"internalType\":\"uint48\",\"name\":\"withdrawTime\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getDepositInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"uint112\",\"name\":\"deposit\",\"type\":\"uint112\"},{\"internalType\":\"bool\",\"name\":\"staked\",\"type\":\"bool\"},{\"internalType\":\"uint112\",\"name\":\"stake\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"unstakeDelaySec\",\"type\":\"uint32\"},{\"internalType\":\"uint48\",\"name\":\"withdrawTime\",\"type\":\"uint48\"}],\"internalType\":\"struct IStakeManager.DepositInfo\",\"name\":\"info\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint192\",\"name\":\"key\",\"type\":\"uint192\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"}],\"name\":\"getSenderAddress\",\"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\":\"uint256\",\"name\":\"callGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"verificationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPriorityFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct UserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"}],\"name\":\"getUserOpHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"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\":\"uint256\",\"name\":\"callGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"verificationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPriorityFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct UserOperation[]\",\"name\":\"userOps\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IAggregator\",\"name\":\"aggregator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct IEntryPoint.UserOpsPerAggregator[]\",\"name\":\"opsPerAggregator\",\"type\":\"tuple[]\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"name\":\"handleAggregatedOps\",\"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\":\"uint256\",\"name\":\"callGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"verificationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPriorityFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct UserOperation[]\",\"name\":\"ops\",\"type\":\"tuple[]\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"name\":\"handleOps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint192\",\"name\":\"key\",\"type\":\"uint192\"}],\"name\":\"incrementNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"callGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"verificationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"paymaster\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPriorityFeePerGas\",\"type\":\"uint256\"}],\"internalType\":\"struct EntryPointGasEstimationOverride06.MemoryUserOp\",\"name\":\"mUserOp\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"prefund\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"contextOffset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preOpGas\",\"type\":\"uint256\"}],\"internalType\":\"struct EntryPointGasEstimationOverride06.UserOpInfo\",\"name\":\"opInfo\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"context\",\"type\":\"bytes\"}],\"name\":\"innerHandleOp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualGasCost\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint192\",\"name\":\"\",\"type\":\"uint192\"}],\"name\":\"nonceSequenceNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"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\":\"uint256\",\"name\":\"callGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"verificationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPriorityFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct UserOperation\",\"name\":\"op\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"targetCallData\",\"type\":\"bytes\"}],\"name\":\"simulateHandleOp\",\"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\":\"uint256\",\"name\":\"callGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"verificationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPriorityFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct UserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"}],\"name\":\"simulateValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unlockStake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"withdrawAddress\",\"type\":\"address\"}],\"name\":\"withdrawStake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"withdrawAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"withdrawAmount\",\"type\":\"uint256\"}],\"name\":\"withdrawTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"FailedOp(uint256,string)\":[{\"params\":{\"opIndex\":\"- index into the array of ops to the failed one (in simulateValidation, this is always zero)\",\"reason\":\"- revert reason The string starts with a unique code \\\"AAmn\\\", where \\\"m\\\" is \\\"1\\\" for factory, \\\"2\\\" for account and \\\"3\\\" for paymaster issues, so a failure can be attributed to the correct entity. Should be caught in off-chain handleOps simulation and not happen on-chain. Useful for mitigating DoS attempts against batchers or for troubleshooting of factory/account/paymaster reverts.\"}}],\"ValidationResult((uint256,uint256,bool,uint48,uint48,bytes),(uint256,uint256),(uint256,uint256),(uint256,uint256))\":[{\"params\":{\"factoryInfo\":\"stake information about the factory (if any)\",\"paymasterInfo\":\"stake information about the paymaster (if any)\",\"returnInfo\":\"gas and time-range returned values\",\"senderInfo\":\"stake information about the sender\"}}],\"ValidationResultWithAggregation((uint256,uint256,bool,uint48,uint48,bytes),(uint256,uint256),(uint256,uint256),(uint256,uint256),(address,(uint256,uint256)))\":[{\"params\":{\"aggregatorInfo\":\"signature aggregation info (if the account requires signature aggregator) bundler MUST use it to verify the signature, or reject the UserOperation\",\"factoryInfo\":\"stake information about the factory (if any)\",\"paymasterInfo\":\"stake information about the paymaster (if any)\",\"returnInfo\":\"gas and time-range returned values\",\"senderInfo\":\"stake information about the sender\"}}]},\"kind\":\"dev\",\"methods\":{\"addStake(uint32)\":{\"params\":{\"unstakeDelaySec\":\"the new lock duration before the deposit can be withdrawn.\"}},\"getDepositInfo(address)\":{\"returns\":{\"info\":\"- full deposit information of given account\"}},\"getNonce(address,uint192)\":{\"params\":{\"key\":\"the high 192 bit of the nonce\",\"sender\":\"the account address\"},\"returns\":{\"nonce\":\"a full nonce to pass for next UserOp with this sender.\"}},\"getSenderAddress(bytes)\":{\"params\":{\"initCode\":\"the constructor code to be passed into the UserOperation.\"}},\"handleAggregatedOps(((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address,bytes)[],address)\":{\"params\":{\"beneficiary\":\"the address to receive the fees\",\"opsPerAggregator\":\"the operations to execute, grouped by aggregator (or address(0) for no-aggregator accounts)\"}},\"handleOps((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address)\":{\"params\":{\"beneficiary\":\"the address to receive the fees\",\"ops\":\"the operations to execute\"}},\"simulateHandleOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address,bytes)\":{\"params\":{\"op\":\"the UserOperation to simulate\",\"target\":\"if nonzero, a target address to call after userop simulation. If called, the targetSuccess and targetResult are set to the return from that call.\",\"targetCallData\":\"callData to pass to target address\"}},\"simulateValidation((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))\":{\"details\":\"this method always revert. Successful result is ValidationResult error. other errors are failures.The node must also verify it doesn't use banned opcodes, and that it doesn't reference storage outside the account's data.\",\"params\":{\"userOp\":\"the user operation to validate.\"}},\"withdrawStake(address)\":{\"params\":{\"withdrawAddress\":\"the address to send withdrawn value.\"}},\"withdrawTo(address,uint256)\":{\"params\":{\"withdrawAddress\":\"the address to send withdrawn value.\",\"withdrawAmount\":\"the amount to withdraw.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"ExecutionResult(uint256,uint256,uint48,uint48,bool,bytes)\":[{\"notice\":\"return value of simulateHandleOp\"}],\"FailedOp(uint256,string)\":[{\"notice\":\"a custom revert error of handleOps, to identify the offending op. NOTE: if simulateValidation passes successfully, there should be no reason for handleOps to fail on it.\"}],\"SenderAddressResult(address)\":[{\"notice\":\"return value of getSenderAddress\"}],\"SignatureValidationFailed(address)\":[{\"notice\":\"error case when a signature aggregator fails to verify the aggregated signature it had created.\"}],\"ValidationResult((uint256,uint256,bool,uint48,uint48,bytes),(uint256,uint256),(uint256,uint256),(uint256,uint256))\":[{\"notice\":\"Successful result from simulateValidation.\"}],\"ValidationResultWithAggregation((uint256,uint256,bool,uint48,uint48,bytes),(uint256,uint256),(uint256,uint256),(uint256,uint256),(address,(uint256,uint256)))\":[{\"notice\":\"Successful result from simulateValidation, if the account returns a signature aggregator\"}]},\"events\":{\"AccountDeployed(bytes32,address,address,address)\":{\"notice\":\"account \\\"sender\\\" was deployed.\"},\"BeforeExecution()\":{\"notice\":\"an event emitted by handleOps(), before starting the execution loop. any event emitted before this event, is part of the validation.\"},\"SignatureAggregatorChanged(address)\":{\"notice\":\"signature aggregator used by the following UserOperationEvents within this bundle.\"},\"StakeLocked(address,uint256,uint256)\":{\"notice\":\"Emitted when stake or unstake delay are modified\"},\"StakeUnlocked(address,uint256)\":{\"notice\":\"Emitted once a stake is scheduled for withdrawal\"},\"UserOperationRevertReason(bytes32,address,uint256,bytes)\":{\"notice\":\"An event emitted if the UserOperation \\\"callData\\\" reverted with non-zero length\"}},\"kind\":\"user\",\"methods\":{\"SIG_VALIDATION_FAILED()\":{\"notice\":\"for simulation purposes, validateUserOp (and validatePaymasterUserOp) must return this value in case of signature failure, instead of revert.\"},\"_validateSenderAndPaymaster(bytes,address,bytes)\":{\"notice\":\"Called only during simulation. This function always reverts to prevent warm/cold storage differentiation in simulation vs execution.\"},\"addStake(uint32)\":{\"notice\":\"add to the account's stake - amount and delay any pending unstake is first cancelled.\"},\"balanceOf(address)\":{\"notice\":\"return the deposit (for gas payment) of the account\"},\"depositTo(address)\":{\"notice\":\"add to the deposit of the given account\"},\"deposits(address)\":{\"notice\":\"maps paymaster to their deposits and stakes\"},\"getNonce(address,uint192)\":{\"notice\":\"Return the next nonce for this sender. Within a given key, the nonce values are sequenced (starting with zero, and incremented by one on each userop) But UserOp with different keys can come with arbitrary order.\"},\"getSenderAddress(bytes)\":{\"notice\":\"Get counterfactual sender address. Calculate the sender contract address that will be generated by the initCode and salt in the UserOperation. this method always revert, and returns the address in SenderAddressResult error\"},\"getUserOpHash((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))\":{\"notice\":\"generate a request Id - unique identifier for this request. the request ID is a hash over the content of the userOp (except the signature), the entrypoint and the chainid.\"},\"handleAggregatedOps(((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address,bytes)[],address)\":{\"notice\":\"Execute a batch of UserOperation with Aggregators\"},\"handleOps((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address)\":{\"notice\":\"Execute a batch of UserOperations. no signature aggregator is used. if any account requires an aggregator (that is, it returned an aggregator when performing simulateValidation), then handleAggregatedOps() must be used instead.\"},\"incrementNonce(uint192)\":{\"notice\":\"Manually increment the nonce of the sender. This method is exposed just for completeness.. Account does NOT need to call it, neither during validation, nor elsewhere, as the EntryPoint will update the nonce regardless. Possible use-case is call it with various keys to \\\"initialize\\\" their nonces to one, so that future UserOperations will not pay extra for the first transaction with a given key.\"},\"innerHandleOp(bytes,((address,uint256,uint256,uint256,uint256,address,uint256,uint256),bytes32,uint256,uint256,uint256),bytes)\":{\"notice\":\"inner function to handle a UserOperation. Must be declared \\\"external\\\" to open a call context, but it can only be called by handleOps.\"},\"nonceSequenceNumber(address,uint192)\":{\"notice\":\"The next valid sequence number for a given nonce key.\"},\"simulateHandleOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address,bytes)\":{\"notice\":\"simulate full execution of a UserOperation (including both validation and target execution) this method will always revert with \\\"ExecutionResult\\\". it performs full validation of the UserOperation, but ignores signature error. an optional target address is called after the userop succeeds, and its value is returned (before the entire call is reverted) Note that in order to collect the the success/failure of the target call, it must be executed with trace enabled to track the emitted events.\"},\"simulateValidation((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))\":{\"notice\":\"Simulate a call to account.validateUserOp and paymaster.validatePaymasterUserOp.\"},\"unlockStake()\":{\"notice\":\"attempt to unlock the stake. the value can be withdrawn (using withdrawStake) after the unstake delay.\"},\"withdrawStake(address)\":{\"notice\":\"withdraw from the (unlocked) stake. must first call unlockStake and wait for the unstakeDelay to pass\"},\"withdrawTo(address,uint256)\":{\"notice\":\"withdraw from the deposit.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/v06/EntryPointGasEstimationOverride.sol\":\"EntryPointGasEstimationOverride06\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[\":@account-abstraction-v6/=lib/account-abstraction-v6/contracts/\",\":@account-abstraction-v7/=lib/account-abstraction-v7/contracts/\",\":@account-abstraction-v8/=lib/account-abstraction-v8/contracts/\",\":@openzeppelin-v4.8.3/=lib/openzeppelin-contracts-v4.8.3/\",\":@openzeppelin-v5.0.2/=lib/openzeppelin-contracts-v5.0.2/\",\":@openzeppelin-v5.1.0/=lib/openzeppelin-contracts-v5.1.0/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts-v5.0.2/contracts/\",\":@test-aa-utils/=lib/singleton-paymaster/test/utils/account-abstraction/\",\":@test-utils/=lib/singleton-paymaster/test/utils/\",\":account-abstraction-v6/=lib/account-abstraction-v6/contracts/\",\":account-abstraction-v7/=lib/account-abstraction-v7/contracts/\",\":account-abstraction-v8/=lib/account-abstraction-v8/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-v5.0.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-v5.1.0/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-v4.8.3/=lib/openzeppelin-contracts-v4.8.3/\",\":openzeppelin-contracts-v5.0.2/=lib/openzeppelin-contracts-v5.0.2/\",\":openzeppelin-contracts-v5.1.0/=lib/openzeppelin-contracts-v5.1.0/\",\":singleton-paymaster/=lib/singleton-paymaster/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/account-abstraction-v6/contracts/core/Helpers.sol\":{\"keccak256\":\"0x591c87519f7155d1909210276b77925ab2722a99b7b5d5649aecc36ebbdb045a\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://69643e83f68e6a13d5075c7565bfce326673b0bd98c432033c4603ea84835746\",\"dweb:/ipfs/QmSwSzjYyV7qudi5vvsmzHMG2Z4YJZxX51RRXXVCLaNcEU\"]},\"lib/account-abstraction-v6/contracts/core/NonceManager.sol\":{\"keccak256\":\"0xa17a4a6fde70088ab18ffe6df830f3efa31f1cd0e1a7160336c96e3c94984d25\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b38615df9f80c56282b72888e9ba1eb1a9413fa67a0dbf094deda7af9feb38e7\",\"dweb:/ipfs/QmSzcXetEJRH4UHuUmZiSgX6bFgfqHWfmyuxVnh4NosMk1\"]},\"lib/account-abstraction-v6/contracts/core/SenderCreator.sol\":{\"keccak256\":\"0x44b9449fec82d6cdfb01d52fdd5a72f90099c651316123810cf9633f00b018c2\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a9c0487390e72638681d175c45bc92425c802fffdca4bd0ae8457782ee284612\",\"dweb:/ipfs/QmVbzuehCUWJWqEHyMWuc6cRVbxfcMdFsmGL9o4Wz7WY2x\"]},\"lib/account-abstraction-v6/contracts/core/StakeManager.sol\":{\"keccak256\":\"0x21aa0956382bd000b1b8c3b1d19ca6ebcd6c9029eebb19c612fb38ee5dd2430a\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://0a625c8795354d9f429367f9c1d14eb8af7db9c7f2c2a2033e2066ced76a573a\",\"dweb:/ipfs/Qmd1j6UarUg54q1G2HCNCLQz8XGVZR1qxX7eQ6cytHpQPN\"]},\"lib/account-abstraction-v6/contracts/interfaces/IAccount.sol\":{\"keccak256\":\"0x556a0e5980de18e90b115553ed502408155ba35f58642823010d9288047bc418\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a0f420134b79596db8737173c7b933ae0a33059e107b6327c43aa40d4744a9e4\",\"dweb:/ipfs/QmRo8s1AhXmEMV7uPYnbpYwU19e9Bk6jmYBJTiPx3Fo85W\"]},\"lib/account-abstraction-v6/contracts/interfaces/IAggregator.sol\":{\"keccak256\":\"0x060e9ddb0152250c269ba0640dc5753834ac44cf182a2837d508c0c529cae26a\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://20ed837bc5909c89ff1910246bf245a5dad6840aa939382e1694964eb7dbd37b\",\"dweb:/ipfs/QmTMybRq5yyghPDDs1ZCNAVB9sSJ4WHe6Q9mejuKPTAdNP\"]},\"lib/account-abstraction-v6/contracts/interfaces/IEntryPoint.sol\":{\"keccak256\":\"0x3a90bf308819ed125fa4202f880999caff8a8686633b8ddb79a30ca240d5b8f8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d2d21cc92c2fdab2b58d21bc25d4cd0e8c284b922528a186b087b818d54bc6cf\",\"dweb:/ipfs/QmT1qrfuBjsv2rmRCDn8mgPXHp94hARJwzbcDuBLDTbFWd\"]},\"lib/account-abstraction-v6/contracts/interfaces/INonceManager.sol\":{\"keccak256\":\"0x509871e6c63663cdcc3eba19920fe84e991f38b289b1377ac3c3a6d9f22d7e12\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://00fe21b4349b24c50df60e1a705179293982bd9e7a32b78d4bac9620f89e7fe2\",\"dweb:/ipfs/QmSFFYGfUwQbVa6hASjU7YxTvgi2HkfrPr4X5oPHscHg8b\"]},\"lib/account-abstraction-v6/contracts/interfaces/IPaymaster.sol\":{\"keccak256\":\"0x36858ba8685024974f533530420688da3454d29996ebc42e410673a1ed2ec456\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://616cbcf51778b1961b7f20a547bec7efae6d1d565df0f651926241ed8bde9ad8\",\"dweb:/ipfs/QmaVsgffUUmeUJYgStvRr8cNZ1LBbrc3FYNLW4JT1dVLia\"]},\"lib/account-abstraction-v6/contracts/interfaces/IStakeManager.sol\":{\"keccak256\":\"0xd227b02888cd4ac68daebcdfd992ec00f9fff66fa3b3bb16f656cd582fa3480f\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://b389da4714a138be63704a576a482505eab2855e263b38a93706395d8d42e7c3\",\"dweb:/ipfs/QmeeAZpdHwUXxqP8pxA7GNtoCGBmmH4FaqLLwScVKGxtxZ\"]},\"lib/account-abstraction-v6/contracts/interfaces/UserOperation.sol\":{\"keccak256\":\"0x61374003361059087fdcf17967a7bba052badeaf5c7f0ae689166f8aafd3a45c\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://6ff83c59432e733bf6304dda27cd4b0f34401917dd535e2669cc842d2d26568c\",\"dweb:/ipfs/QmPJbHU5TAjHqUTZzAcicEeG2nknmwCN43L4EW9LHbknTN\"]},\"lib/account-abstraction-v6/contracts/utils/Exec.sol\":{\"keccak256\":\"0x5b232117afbc2939f3ffc92745614867e9e1d475a3e1e5443adae13c200174f1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://62e7365379a06ead7b47637945bcaee095d51aab1d3ac00ddec69443e6cbe9fe\",\"dweb:/ipfs/QmctG3aw4U3KMSMeJKoLJ1NJewjMWfppnd1m3kxNTe39Uy\"]},\"lib/openzeppelin-contracts-v4.8.3/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x190dd6f8d592b7e4e930feb7f4313aeb8e1c4ad3154c27ce1cf6a512fc30d8cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ce8dfb62d0c4fa260d6eec8f1cd47f5f2a044e11bde5b31d18072fa6e7d9010\",\"dweb:/ipfs/QmTyFztU3tLEcEDnqqiaW4UJetqsU77LXc6pjc9oTXCK5u\"]},\"lib/openzeppelin-contracts-v4.8.3/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"lib/openzeppelin-contracts-v4.8.3/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"lib/openzeppelin-contracts-v4.8.3/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"src/SimulationOverrideHelper.sol\":{\"keccak256\":\"0x98850f986164c992b840ba8e878814c459be0852debe8ad8d69140c09c6b05c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a57d5979f5557ccbc6947c3f6b5b6ec10f152609b9d11c265b20d925d915b559\",\"dweb:/ipfs/QmcA4kpMCnjCfEyky32w5S8qXzvvchZJhMBvJvmBp5tcep\"]},\"src/v06/EntryPointGasEstimationOverride.sol\":{\"keccak256\":\"0xd543e1dfeb6c3f74ce1964099364ce549563c11ea47c3cb97b02bc7e71e8f46d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://53d579d8654dbed980bb14d08ecafddb30b4f634ffedd4a64a2d30b39803d4f7\",\"dweb:/ipfs/QmTnT9yk1AB2LydP2QWiyuPrTHAZzqFcrLLjkB5Q1z7DpD\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.17+commit.8df45f5f"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes","name":"reason","type":"bytes"}],"type":"error","name":"CallPhaseReverted"},{"inputs":[{"internalType":"uint256","name":"preOpGas","type":"uint256"},{"internalType":"uint256","name":"paid","type":"uint256"},{"internalType":"uint48","name":"validAfter","type":"uint48"},{"internalType":"uint48","name":"validUntil","type":"uint48"},{"internalType":"bool","name":"targetSuccess","type":"bool"},{"internalType":"bytes","name":"targetResult","type":"bytes"}],"type":"error","name":"ExecutionResult"},{"inputs":[{"internalType":"uint256","name":"opIndex","type":"uint256"},{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"FailedOp"},{"inputs":[{"internalType":"uint256","name":"opIndex","type":"uint256"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"inner","type":"bytes"}],"type":"error","name":"FailedOpWithRevert"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"SenderAddressResult"},{"inputs":[{"internalType":"address","name":"aggregator","type":"address"}],"type":"error","name":"SignatureValidationFailed"},{"inputs":[{"internalType":"struct IEntryPoint.ReturnInfo","name":"returnInfo","type":"tuple","components":[{"internalType":"uint256","name":"preOpGas","type":"uint256"},{"internalType":"uint256","name":"prefund","type":"uint256"},{"internalType":"bool","name":"sigFailed","type":"bool"},{"internalType":"uint48","name":"validAfter","type":"uint48"},{"internalType":"uint48","name":"validUntil","type":"uint48"},{"internalType":"bytes","name":"paymasterContext","type":"bytes"}]},{"internalType":"struct IStakeManager.StakeInfo","name":"senderInfo","type":"tuple","components":[{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint256","name":"unstakeDelaySec","type":"uint256"}]},{"internalType":"struct IStakeManager.StakeInfo","name":"factoryInfo","type":"tuple","components":[{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint256","name":"unstakeDelaySec","type":"uint256"}]},{"internalType":"struct IStakeManager.StakeInfo","name":"paymasterInfo","type":"tuple","components":[{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint256","name":"unstakeDelaySec","type":"uint256"}]}],"type":"error","name":"ValidationResult"},{"inputs":[{"internalType":"struct IEntryPoint.ReturnInfo","name":"returnInfo","type":"tuple","components":[{"internalType":"uint256","name":"preOpGas","type":"uint256"},{"internalType":"uint256","name":"prefund","type":"uint256"},{"internalType":"bool","name":"sigFailed","type":"bool"},{"internalType":"uint48","name":"validAfter","type":"uint48"},{"internalType":"uint48","name":"validUntil","type":"uint48"},{"internalType":"bytes","name":"paymasterContext","type":"bytes"}]},{"internalType":"struct IStakeManager.StakeInfo","name":"senderInfo","type":"tuple","components":[{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint256","name":"unstakeDelaySec","type":"uint256"}]},{"internalType":"struct IStakeManager.StakeInfo","name":"factoryInfo","type":"tuple","components":[{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint256","name":"unstakeDelaySec","type":"uint256"}]},{"internalType":"struct IStakeManager.StakeInfo","name":"paymasterInfo","type":"tuple","components":[{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint256","name":"unstakeDelaySec","type":"uint256"}]},{"internalType":"struct IEntryPoint.AggregatorStakeInfo","name":"aggregatorInfo","type":"tuple","components":[{"internalType":"address","name":"aggregator","type":"address"},{"internalType":"struct IStakeManager.StakeInfo","name":"stakeInfo","type":"tuple","components":[{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint256","name":"unstakeDelaySec","type":"uint256"}]}]}],"type":"error","name":"ValidationResultWithAggregation"},{"inputs":[{"internalType":"bytes32","name":"userOpHash","type":"bytes32","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"factory","type":"address","indexed":false},{"internalType":"address","name":"paymaster","type":"address","indexed":false}],"type":"event","name":"AccountDeployed","anonymous":false},{"inputs":[],"type":"event","name":"BeforeExecution","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"totalDeposit","type":"uint256","indexed":false}],"type":"event","name":"Deposited","anonymous":false},{"inputs":[{"internalType":"address","name":"aggregator","type":"address","indexed":true}],"type":"event","name":"SignatureAggregatorChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"totalStaked","type":"uint256","indexed":false},{"internalType":"uint256","name":"unstakeDelaySec","type":"uint256","indexed":false}],"type":"event","name":"StakeLocked","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"withdrawTime","type":"uint256","indexed":false}],"type":"event","name":"StakeUnlocked","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"withdrawAddress","type":"address","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"StakeWithdrawn","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"userOpHash","type":"bytes32","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"paymaster","type":"address","indexed":true},{"internalType":"uint256","name":"nonce","type":"uint256","indexed":false},{"internalType":"bool","name":"success","type":"bool","indexed":false},{"internalType":"uint256","name":"actualGasCost","type":"uint256","indexed":false},{"internalType":"uint256","name":"actualGasUsed","type":"uint256","indexed":false}],"type":"event","name":"UserOperationEvent","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"userOpHash","type":"bytes32","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"uint256","name":"nonce","type":"uint256","indexed":false},{"internalType":"bytes","name":"revertReason","type":"bytes","indexed":false}],"type":"event","name":"UserOperationRevertReason","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"withdrawAddress","type":"address","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Withdrawn","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"SIG_VALIDATION_FAILED","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"paymasterAndData","type":"bytes"}],"stateMutability":"view","type":"function","name":"_validateSenderAndPaymaster"},{"inputs":[{"internalType":"uint32","name":"unstakeDelaySec","type":"uint32"}],"stateMutability":"payable","type":"function","name":"addStake"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"payable","type":"function","name":"depositTo"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"deposits","outputs":[{"internalType":"uint112","name":"deposit","type":"uint112"},{"internalType":"bool","name":"staked","type":"bool"},{"internalType":"uint112","name":"stake","type":"uint112"},{"internalType":"uint32","name":"unstakeDelaySec","type":"uint32"},{"internalType":"uint48","name":"withdrawTime","type":"uint48"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getDepositInfo","outputs":[{"internalType":"struct IStakeManager.DepositInfo","name":"info","type":"tuple","components":[{"internalType":"uint112","name":"deposit","type":"uint112"},{"internalType":"bool","name":"staked","type":"bool"},{"internalType":"uint112","name":"stake","type":"uint112"},{"internalType":"uint32","name":"unstakeDelaySec","type":"uint32"},{"internalType":"uint48","name":"withdrawTime","type":"uint48"}]}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint192","name":"key","type":"uint192"}],"stateMutability":"view","type":"function","name":"getNonce","outputs":[{"internalType":"uint256","name":"nonce","type":"uint256"}]},{"inputs":[{"internalType":"bytes","name":"initCode","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"getSenderAddress"},{"inputs":[{"internalType":"struct UserOperation","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":"uint256","name":"callGasLimit","type":"uint256"},{"internalType":"uint256","name":"verificationGasLimit","type":"uint256"},{"internalType":"uint256","name":"preVerificationGas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"maxPriorityFeePerGas","type":"uint256"},{"internalType":"bytes","name":"paymasterAndData","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"view","type":"function","name":"getUserOpHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"struct IEntryPoint.UserOpsPerAggregator[]","name":"opsPerAggregator","type":"tuple[]","components":[{"internalType":"struct UserOperation[]","name":"userOps","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":"uint256","name":"callGasLimit","type":"uint256"},{"internalType":"uint256","name":"verificationGasLimit","type":"uint256"},{"internalType":"uint256","name":"preVerificationGas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"maxPriorityFeePerGas","type":"uint256"},{"internalType":"bytes","name":"paymasterAndData","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}]},{"internalType":"contract IAggregator","name":"aggregator","type":"address"},{"internalType":"bytes","name":"signature","type":"bytes"}]},{"internalType":"address payable","name":"beneficiary","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"handleAggregatedOps"},{"inputs":[{"internalType":"struct UserOperation[]","name":"ops","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":"uint256","name":"callGasLimit","type":"uint256"},{"internalType":"uint256","name":"verificationGasLimit","type":"uint256"},{"internalType":"uint256","name":"preVerificationGas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"maxPriorityFeePerGas","type":"uint256"},{"internalType":"bytes","name":"paymasterAndData","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}]},{"internalType":"address payable","name":"beneficiary","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"handleOps"},{"inputs":[{"internalType":"uint192","name":"key","type":"uint192"}],"stateMutability":"nonpayable","type":"function","name":"incrementNonce"},{"inputs":[{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"struct EntryPointGasEstimationOverride06.UserOpInfo","name":"opInfo","type":"tuple","components":[{"internalType":"struct EntryPointGasEstimationOverride06.MemoryUserOp","name":"mUserOp","type":"tuple","components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"callGasLimit","type":"uint256"},{"internalType":"uint256","name":"verificationGasLimit","type":"uint256"},{"internalType":"uint256","name":"preVerificationGas","type":"uint256"},{"internalType":"address","name":"paymaster","type":"address"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"maxPriorityFeePerGas","type":"uint256"}]},{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"uint256","name":"prefund","type":"uint256"},{"internalType":"uint256","name":"contextOffset","type":"uint256"},{"internalType":"uint256","name":"preOpGas","type":"uint256"}]},{"internalType":"bytes","name":"context","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"innerHandleOp","outputs":[{"internalType":"uint256","name":"actualGasCost","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint192","name":"","type":"uint192"}],"stateMutability":"view","type":"function","name":"nonceSequenceNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"struct UserOperation","name":"op","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":"uint256","name":"callGasLimit","type":"uint256"},{"internalType":"uint256","name":"verificationGasLimit","type":"uint256"},{"internalType":"uint256","name":"preVerificationGas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"maxPriorityFeePerGas","type":"uint256"},{"internalType":"bytes","name":"paymasterAndData","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}]},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"targetCallData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"simulateHandleOp"},{"inputs":[{"internalType":"struct UserOperation","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":"uint256","name":"callGasLimit","type":"uint256"},{"internalType":"uint256","name":"verificationGasLimit","type":"uint256"},{"internalType":"uint256","name":"preVerificationGas","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"maxPriorityFeePerGas","type":"uint256"},{"internalType":"bytes","name":"paymasterAndData","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"simulateValidation"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unlockStake"},{"inputs":[{"internalType":"address payable","name":"withdrawAddress","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"withdrawStake"},{"inputs":[{"internalType":"address payable","name":"withdrawAddress","type":"address"},{"internalType":"uint256","name":"withdrawAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdrawTo"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"addStake(uint32)":{"params":{"unstakeDelaySec":"the new lock duration before the deposit can be withdrawn."}},"getDepositInfo(address)":{"returns":{"info":"- full deposit information of given account"}},"getNonce(address,uint192)":{"params":{"key":"the high 192 bit of the nonce","sender":"the account address"},"returns":{"nonce":"a full nonce to pass for next UserOp with this sender."}},"getSenderAddress(bytes)":{"params":{"initCode":"the constructor code to be passed into the UserOperation."}},"handleAggregatedOps(((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address,bytes)[],address)":{"params":{"beneficiary":"the address to receive the fees","opsPerAggregator":"the operations to execute, grouped by aggregator (or address(0) for no-aggregator accounts)"}},"handleOps((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address)":{"params":{"beneficiary":"the address to receive the fees","ops":"the operations to execute"}},"simulateHandleOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address,bytes)":{"params":{"op":"the UserOperation to simulate","target":"if nonzero, a target address to call after userop simulation. If called, the targetSuccess and targetResult are set to the return from that call.","targetCallData":"callData to pass to target address"}},"simulateValidation((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))":{"details":"this method always revert. Successful result is ValidationResult error. other errors are failures.The node must also verify it doesn't use banned opcodes, and that it doesn't reference storage outside the account's data.","params":{"userOp":"the user operation to validate."}},"withdrawStake(address)":{"params":{"withdrawAddress":"the address to send withdrawn value."}},"withdrawTo(address,uint256)":{"params":{"withdrawAddress":"the address to send withdrawn value.","withdrawAmount":"the amount to withdraw."}}},"version":1},"userdoc":{"kind":"user","methods":{"SIG_VALIDATION_FAILED()":{"notice":"for simulation purposes, validateUserOp (and validatePaymasterUserOp) must return this value in case of signature failure, instead of revert."},"_validateSenderAndPaymaster(bytes,address,bytes)":{"notice":"Called only during simulation. This function always reverts to prevent warm/cold storage differentiation in simulation vs execution."},"addStake(uint32)":{"notice":"add to the account's stake - amount and delay any pending unstake is first cancelled."},"balanceOf(address)":{"notice":"return the deposit (for gas payment) of the account"},"depositTo(address)":{"notice":"add to the deposit of the given account"},"deposits(address)":{"notice":"maps paymaster to their deposits and stakes"},"getNonce(address,uint192)":{"notice":"Return the next nonce for this sender. Within a given key, the nonce values are sequenced (starting with zero, and incremented by one on each userop) But UserOp with different keys can come with arbitrary order."},"getSenderAddress(bytes)":{"notice":"Get counterfactual sender address. Calculate the sender contract address that will be generated by the initCode and salt in the UserOperation. this method always revert, and returns the address in SenderAddressResult error"},"getUserOpHash((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))":{"notice":"generate a request Id - unique identifier for this request. the request ID is a hash over the content of the userOp (except the signature), the entrypoint and the chainid."},"handleAggregatedOps(((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address,bytes)[],address)":{"notice":"Execute a batch of UserOperation with Aggregators"},"handleOps((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address)":{"notice":"Execute a batch of UserOperations. no signature aggregator is used. if any account requires an aggregator (that is, it returned an aggregator when performing simulateValidation), then handleAggregatedOps() must be used instead."},"incrementNonce(uint192)":{"notice":"Manually increment the nonce of the sender. This method is exposed just for completeness.. Account does NOT need to call it, neither during validation, nor elsewhere, as the EntryPoint will update the nonce regardless. Possible use-case is call it with various keys to \"initialize\" their nonces to one, so that future UserOperations will not pay extra for the first transaction with a given key."},"innerHandleOp(bytes,((address,uint256,uint256,uint256,uint256,address,uint256,uint256),bytes32,uint256,uint256,uint256),bytes)":{"notice":"inner function to handle a UserOperation. Must be declared \"external\" to open a call context, but it can only be called by handleOps."},"nonceSequenceNumber(address,uint192)":{"notice":"The next valid sequence number for a given nonce key."},"simulateHandleOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address,bytes)":{"notice":"simulate full execution of a UserOperation (including both validation and target execution) this method will always revert with \"ExecutionResult\". it performs full validation of the UserOperation, but ignores signature error. an optional target address is called after the userop succeeds, and its value is returned (before the entire call is reverted) Note that in order to collect the the success/failure of the target call, it must be executed with trace enabled to track the emitted events."},"simulateValidation((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))":{"notice":"Simulate a call to account.validateUserOp and paymaster.validatePaymasterUserOp."},"unlockStake()":{"notice":"attempt to unlock the stake. the value can be withdrawn (using withdrawStake) after the unstake delay."},"withdrawStake(address)":{"notice":"withdraw from the (unlocked) stake. must first call unlockStake and wait for the unstakeDelay to pass"},"withdrawTo(address,uint256)":{"notice":"withdraw from the deposit."}},"version":1}},"settings":{"remappings":["@account-abstraction-v6/=lib/account-abstraction-v6/contracts/","@account-abstraction-v7/=lib/account-abstraction-v7/contracts/","@account-abstraction-v8/=lib/account-abstraction-v8/contracts/","@openzeppelin-v4.8.3/=lib/openzeppelin-contracts-v4.8.3/","@openzeppelin-v5.0.2/=lib/openzeppelin-contracts-v5.0.2/","@openzeppelin-v5.1.0/=lib/openzeppelin-contracts-v5.1.0/","@openzeppelin/contracts/=lib/openzeppelin-contracts-v5.0.2/contracts/","@test-aa-utils/=lib/singleton-paymaster/test/utils/account-abstraction/","@test-utils/=lib/singleton-paymaster/test/utils/","account-abstraction-v6/=lib/account-abstraction-v6/contracts/","account-abstraction-v7/=lib/account-abstraction-v7/contracts/","account-abstraction-v8/=lib/account-abstraction-v8/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-v5.0.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-v5.1.0/lib/halmos-cheatcodes/src/","openzeppelin-contracts-v4.8.3/=lib/openzeppelin-contracts-v4.8.3/","openzeppelin-contracts-v5.0.2/=lib/openzeppelin-contracts-v5.0.2/","openzeppelin-contracts-v5.1.0/=lib/openzeppelin-contracts-v5.1.0/","singleton-paymaster/=lib/singleton-paymaster/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":1000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/v06/EntryPointGasEstimationOverride.sol":"EntryPointGasEstimationOverride06"},"evmVersion":"london","libraries":{},"viaIR":true},"sources":{"lib/account-abstraction-v6/contracts/core/Helpers.sol":{"keccak256":"0x591c87519f7155d1909210276b77925ab2722a99b7b5d5649aecc36ebbdb045a","urls":["bzz-raw://69643e83f68e6a13d5075c7565bfce326673b0bd98c432033c4603ea84835746","dweb:/ipfs/QmSwSzjYyV7qudi5vvsmzHMG2Z4YJZxX51RRXXVCLaNcEU"],"license":"GPL-3.0"},"lib/account-abstraction-v6/contracts/core/NonceManager.sol":{"keccak256":"0xa17a4a6fde70088ab18ffe6df830f3efa31f1cd0e1a7160336c96e3c94984d25","urls":["bzz-raw://b38615df9f80c56282b72888e9ba1eb1a9413fa67a0dbf094deda7af9feb38e7","dweb:/ipfs/QmSzcXetEJRH4UHuUmZiSgX6bFgfqHWfmyuxVnh4NosMk1"],"license":"GPL-3.0"},"lib/account-abstraction-v6/contracts/core/SenderCreator.sol":{"keccak256":"0x44b9449fec82d6cdfb01d52fdd5a72f90099c651316123810cf9633f00b018c2","urls":["bzz-raw://a9c0487390e72638681d175c45bc92425c802fffdca4bd0ae8457782ee284612","dweb:/ipfs/QmVbzuehCUWJWqEHyMWuc6cRVbxfcMdFsmGL9o4Wz7WY2x"],"license":"GPL-3.0"},"lib/account-abstraction-v6/contracts/core/StakeManager.sol":{"keccak256":"0x21aa0956382bd000b1b8c3b1d19ca6ebcd6c9029eebb19c612fb38ee5dd2430a","urls":["bzz-raw://0a625c8795354d9f429367f9c1d14eb8af7db9c7f2c2a2033e2066ced76a573a","dweb:/ipfs/Qmd1j6UarUg54q1G2HCNCLQz8XGVZR1qxX7eQ6cytHpQPN"],"license":"GPL-3.0-only"},"lib/account-abstraction-v6/contracts/interfaces/IAccount.sol":{"keccak256":"0x556a0e5980de18e90b115553ed502408155ba35f58642823010d9288047bc418","urls":["bzz-raw://a0f420134b79596db8737173c7b933ae0a33059e107b6327c43aa40d4744a9e4","dweb:/ipfs/QmRo8s1AhXmEMV7uPYnbpYwU19e9Bk6jmYBJTiPx3Fo85W"],"license":"GPL-3.0"},"lib/account-abstraction-v6/contracts/interfaces/IAggregator.sol":{"keccak256":"0x060e9ddb0152250c269ba0640dc5753834ac44cf182a2837d508c0c529cae26a","urls":["bzz-raw://20ed837bc5909c89ff1910246bf245a5dad6840aa939382e1694964eb7dbd37b","dweb:/ipfs/QmTMybRq5yyghPDDs1ZCNAVB9sSJ4WHe6Q9mejuKPTAdNP"],"license":"GPL-3.0"},"lib/account-abstraction-v6/contracts/interfaces/IEntryPoint.sol":{"keccak256":"0x3a90bf308819ed125fa4202f880999caff8a8686633b8ddb79a30ca240d5b8f8","urls":["bzz-raw://d2d21cc92c2fdab2b58d21bc25d4cd0e8c284b922528a186b087b818d54bc6cf","dweb:/ipfs/QmT1qrfuBjsv2rmRCDn8mgPXHp94hARJwzbcDuBLDTbFWd"],"license":"GPL-3.0"},"lib/account-abstraction-v6/contracts/interfaces/INonceManager.sol":{"keccak256":"0x509871e6c63663cdcc3eba19920fe84e991f38b289b1377ac3c3a6d9f22d7e12","urls":["bzz-raw://00fe21b4349b24c50df60e1a705179293982bd9e7a32b78d4bac9620f89e7fe2","dweb:/ipfs/QmSFFYGfUwQbVa6hASjU7YxTvgi2HkfrPr4X5oPHscHg8b"],"license":"GPL-3.0"},"lib/account-abstraction-v6/contracts/interfaces/IPaymaster.sol":{"keccak256":"0x36858ba8685024974f533530420688da3454d29996ebc42e410673a1ed2ec456","urls":["bzz-raw://616cbcf51778b1961b7f20a547bec7efae6d1d565df0f651926241ed8bde9ad8","dweb:/ipfs/QmaVsgffUUmeUJYgStvRr8cNZ1LBbrc3FYNLW4JT1dVLia"],"license":"GPL-3.0"},"lib/account-abstraction-v6/contracts/interfaces/IStakeManager.sol":{"keccak256":"0xd227b02888cd4ac68daebcdfd992ec00f9fff66fa3b3bb16f656cd582fa3480f","urls":["bzz-raw://b389da4714a138be63704a576a482505eab2855e263b38a93706395d8d42e7c3","dweb:/ipfs/QmeeAZpdHwUXxqP8pxA7GNtoCGBmmH4FaqLLwScVKGxtxZ"],"license":"GPL-3.0-only"},"lib/account-abstraction-v6/contracts/interfaces/UserOperation.sol":{"keccak256":"0x61374003361059087fdcf17967a7bba052badeaf5c7f0ae689166f8aafd3a45c","urls":["bzz-raw://6ff83c59432e733bf6304dda27cd4b0f34401917dd535e2669cc842d2d26568c","dweb:/ipfs/QmPJbHU5TAjHqUTZzAcicEeG2nknmwCN43L4EW9LHbknTN"],"license":"GPL-3.0"},"lib/account-abstraction-v6/contracts/utils/Exec.sol":{"keccak256":"0x5b232117afbc2939f3ffc92745614867e9e1d475a3e1e5443adae13c200174f1","urls":["bzz-raw://62e7365379a06ead7b47637945bcaee095d51aab1d3ac00ddec69443e6cbe9fe","dweb:/ipfs/QmctG3aw4U3KMSMeJKoLJ1NJewjMWfppnd1m3kxNTe39Uy"],"license":"LGPL-3.0-only"},"lib/openzeppelin-contracts-v4.8.3/contracts/security/ReentrancyGuard.sol":{"keccak256":"0x190dd6f8d592b7e4e930feb7f4313aeb8e1c4ad3154c27ce1cf6a512fc30d8cc","urls":["bzz-raw://4ce8dfb62d0c4fa260d6eec8f1cd47f5f2a044e11bde5b31d18072fa6e7d9010","dweb:/ipfs/QmTyFztU3tLEcEDnqqiaW4UJetqsU77LXc6pjc9oTXCK5u"],"license":"MIT"},"lib/openzeppelin-contracts-v4.8.3/contracts/utils/StorageSlot.sol":{"keccak256":"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d","urls":["bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4","dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B"],"license":"MIT"},"lib/openzeppelin-contracts-v4.8.3/contracts/utils/introspection/ERC165.sol":{"keccak256":"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b","urls":["bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d","dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43"],"license":"MIT"},"lib/openzeppelin-contracts-v4.8.3/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"src/SimulationOverrideHelper.sol":{"keccak256":"0x98850f986164c992b840ba8e878814c459be0852debe8ad8d69140c09c6b05c5","urls":["bzz-raw://a57d5979f5557ccbc6947c3f6b5b6ec10f152609b9d11c265b20d925d915b559","dweb:/ipfs/QmcA4kpMCnjCfEyky32w5S8qXzvvchZJhMBvJvmBp5tcep"],"license":"MIT"},"src/v06/EntryPointGasEstimationOverride.sol":{"keccak256":"0xd543e1dfeb6c3f74ce1964099364ce549563c11ea47c3cb97b02bc7e71e8f46d","urls":["bzz-raw://53d579d8654dbed980bb14d08ecafddb30b4f634ffedd4a64a2d30b39803d4f7","dweb:/ipfs/QmTnT9yk1AB2LydP2QWiyuPrTHAZzqFcrLLjkB5Q1z7DpD"],"license":"GPL-3.0"}},"version":1},"id":17}