From 93496bc3d25a1b239ec88bafa7906e048a8ecda9 Mon Sep 17 00:00:00 2001 From: Oluwatomilola Date: Tue, 20 Jan 2026 19:57:53 +0100 Subject: [PATCH] Fix ABI mismatch: update ABI to match contract functions and events --- cache/solidity-files-cache.json | 2 +- frontend/src/config/contracts.ts | 345 ++++++++++-------- out/PiggyBank.sol/PiggyBank.json | 2 +- out/PiggyBank.t.sol/PiggyBankTest.json | 2 +- out/PiggyBank.t.sol/ReentrancyAttacker.json | 2 +- .../PiggyBankSecurityTest.json | 1 + ...7803c1ade9c.json => 1e2f2db3cba34709.json} | 2 +- test/PiggyBankSecurity.t.sol | 152 ++++---- 8 files changed, 272 insertions(+), 236 deletions(-) create mode 100644 out/PiggyBankSecurity.t.sol/PiggyBankSecurityTest.json rename out/build-info/{aab777803c1ade9c.json => 1e2f2db3cba34709.json} (79%) diff --git a/cache/solidity-files-cache.json b/cache/solidity-files-cache.json index 60271cb..eaa2b9f 100644 --- a/cache/solidity-files-cache.json +++ b/cache/solidity-files-cache.json @@ -1 +1 @@ -{"_format":"","paths":{"artifacts":"out","build_infos":"out/build-info","sources":"src","tests":"test","scripts":"script","libraries":["lib"]},"files":{"lib/forge-std/src/Base.sol":{"lastModificationDate":1764548434528,"contentHash":"f4bd67fdeb49a95a","interfaceReprHash":null,"sourceName":"lib/forge-std/src/Base.sol","imports":["lib/forge-std/src/StdStorage.sol","lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"CommonBase":{"0.8.20":{"default":{"path":"Base.sol/CommonBase.json","build_id":"ecd42804dc1a708e"}}},"ScriptBase":{"0.8.20":{"default":{"path":"Base.sol/ScriptBase.json","build_id":"ecd42804dc1a708e"}}},"TestBase":{"0.8.20":{"default":{"path":"Base.sol/TestBase.json","build_id":"ecd42804dc1a708e"}}}},"seenByCompiler":true},"lib/forge-std/src/StdAssertions.sol":{"lastModificationDate":1764548434529,"contentHash":"02aafa55c6c27fcf","interfaceReprHash":null,"sourceName":"lib/forge-std/src/StdAssertions.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdAssertions":{"0.8.20":{"default":{"path":"StdAssertions.sol/StdAssertions.json","build_id":"ecd42804dc1a708e"}}}},"seenByCompiler":true},"lib/forge-std/src/StdChains.sol":{"lastModificationDate":1764548434529,"contentHash":"0adbf4fecabd792e","interfaceReprHash":null,"sourceName":"lib/forge-std/src/StdChains.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdChains":{"0.8.20":{"default":{"path":"StdChains.sol/StdChains.json","build_id":"ecd42804dc1a708e"}}}},"seenByCompiler":true},"lib/forge-std/src/StdCheats.sol":{"lastModificationDate":1764548434530,"contentHash":"30325e8cda32c7ae","interfaceReprHash":null,"sourceName":"lib/forge-std/src/StdCheats.sol","imports":["lib/forge-std/src/StdStorage.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdCheats":{"0.8.20":{"default":{"path":"StdCheats.sol/StdCheats.json","build_id":"ecd42804dc1a708e"}}},"StdCheatsSafe":{"0.8.20":{"default":{"path":"StdCheats.sol/StdCheatsSafe.json","build_id":"ecd42804dc1a708e"}}}},"seenByCompiler":true},"lib/forge-std/src/StdConstants.sol":{"lastModificationDate":1764548434530,"contentHash":"23303eb7e922efe4","interfaceReprHash":null,"sourceName":"lib/forge-std/src/StdConstants.sol","imports":["lib/forge-std/src/Vm.sol","lib/forge-std/src/interfaces/IMulticall3.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdConstants":{"0.8.20":{"default":{"path":"StdConstants.sol/StdConstants.json","build_id":"ecd42804dc1a708e"}}}},"seenByCompiler":true},"lib/forge-std/src/StdError.sol":{"lastModificationDate":1764548434531,"contentHash":"a1a86c7115e2cdf3","interfaceReprHash":null,"sourceName":"lib/forge-std/src/StdError.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"stdError":{"0.8.20":{"default":{"path":"StdError.sol/stdError.json","build_id":"ecd42804dc1a708e"}}}},"seenByCompiler":true},"lib/forge-std/src/StdInvariant.sol":{"lastModificationDate":1764548434531,"contentHash":"0111ef959dff6f54","interfaceReprHash":null,"sourceName":"lib/forge-std/src/StdInvariant.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdInvariant":{"0.8.20":{"default":{"path":"StdInvariant.sol/StdInvariant.json","build_id":"ecd42804dc1a708e"}}}},"seenByCompiler":true},"lib/forge-std/src/StdJson.sol":{"lastModificationDate":1764548434531,"contentHash":"5fb1b35c8fb281fd","interfaceReprHash":null,"sourceName":"lib/forge-std/src/StdJson.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.0, <0.9.0","artifacts":{"stdJson":{"0.8.20":{"default":{"path":"StdJson.sol/stdJson.json","build_id":"ecd42804dc1a708e"}}}},"seenByCompiler":true},"lib/forge-std/src/StdMath.sol":{"lastModificationDate":1764548434531,"contentHash":"72584abebada1e7a","interfaceReprHash":null,"sourceName":"lib/forge-std/src/StdMath.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"stdMath":{"0.8.20":{"default":{"path":"StdMath.sol/stdMath.json","build_id":"ecd42804dc1a708e"}}}},"seenByCompiler":true},"lib/forge-std/src/StdStorage.sol":{"lastModificationDate":1764548434531,"contentHash":"9a44dcb9bda3bfa9","interfaceReprHash":null,"sourceName":"lib/forge-std/src/StdStorage.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"stdStorage":{"0.8.20":{"default":{"path":"StdStorage.sol/stdStorage.json","build_id":"ecd42804dc1a708e"}}},"stdStorageSafe":{"0.8.20":{"default":{"path":"StdStorage.sol/stdStorageSafe.json","build_id":"ecd42804dc1a708e"}}}},"seenByCompiler":true},"lib/forge-std/src/StdStyle.sol":{"lastModificationDate":1764548434531,"contentHash":"ee166ef95092736e","interfaceReprHash":null,"sourceName":"lib/forge-std/src/StdStyle.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{"StdStyle":{"0.8.20":{"default":{"path":"StdStyle.sol/StdStyle.json","build_id":"ecd42804dc1a708e"}}}},"seenByCompiler":true},"lib/forge-std/src/StdToml.sol":{"lastModificationDate":1764548434532,"contentHash":"fc667e4ecb7fa86c","interfaceReprHash":null,"sourceName":"lib/forge-std/src/StdToml.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.0, <0.9.0","artifacts":{"stdToml":{"0.8.20":{"default":{"path":"StdToml.sol/stdToml.json","build_id":"ecd42804dc1a708e"}}}},"seenByCompiler":true},"lib/forge-std/src/StdUtils.sol":{"lastModificationDate":1764548434532,"contentHash":"b7cdeb66252de708","interfaceReprHash":null,"sourceName":"lib/forge-std/src/StdUtils.sol","imports":["lib/forge-std/src/Vm.sol","lib/forge-std/src/interfaces/IMulticall3.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdUtils":{"0.8.20":{"default":{"path":"StdUtils.sol/StdUtils.json","build_id":"ecd42804dc1a708e"}}}},"seenByCompiler":true},"lib/forge-std/src/Test.sol":{"lastModificationDate":1764548434532,"contentHash":"f56119a09f81c62c","interfaceReprHash":null,"sourceName":"lib/forge-std/src/Test.sol","imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/StdAssertions.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdConstants.sol","lib/forge-std/src/StdError.sol","lib/forge-std/src/StdInvariant.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdToml.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/safeconsole.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"Test":{"0.8.20":{"default":{"path":"Test.sol/Test.json","build_id":"ecd42804dc1a708e"}}}},"seenByCompiler":true},"lib/forge-std/src/Vm.sol":{"lastModificationDate":1764548434533,"contentHash":"803443adcf84cfaa","interfaceReprHash":null,"sourceName":"lib/forge-std/src/Vm.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"Vm":{"0.8.20":{"default":{"path":"Vm.sol/Vm.json","build_id":"ecd42804dc1a708e"}}},"VmSafe":{"0.8.20":{"default":{"path":"Vm.sol/VmSafe.json","build_id":"ecd42804dc1a708e"}}}},"seenByCompiler":true},"lib/forge-std/src/console.sol":{"lastModificationDate":1764548434533,"contentHash":"bae85493a76fb054","interfaceReprHash":null,"sourceName":"lib/forge-std/src/console.sol","imports":[],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{"console":{"0.8.20":{"default":{"path":"console.sol/console.json","build_id":"ecd42804dc1a708e"}}}},"seenByCompiler":true},"lib/forge-std/src/console2.sol":{"lastModificationDate":1764548434533,"contentHash":"49a7da3dfc404603","interfaceReprHash":null,"sourceName":"lib/forge-std/src/console2.sol","imports":["lib/forge-std/src/console.sol"],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{},"seenByCompiler":true},"lib/forge-std/src/interfaces/IMulticall3.sol":{"lastModificationDate":1764548434535,"contentHash":"b680a332ebf10901","interfaceReprHash":null,"sourceName":"lib/forge-std/src/interfaces/IMulticall3.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"IMulticall3":{"0.8.20":{"default":{"path":"IMulticall3.sol/IMulticall3.json","build_id":"ecd42804dc1a708e"}}}},"seenByCompiler":true},"lib/forge-std/src/safeconsole.sol":{"lastModificationDate":1764548434535,"contentHash":"621653b34a6691ea","interfaceReprHash":null,"sourceName":"lib/forge-std/src/safeconsole.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"safeconsole":{"0.8.20":{"default":{"path":"safeconsole.sol/safeconsole.json","build_id":"ecd42804dc1a708e"}}}},"seenByCompiler":true},"src/PiggyBank.sol":{"lastModificationDate":1766937183489,"contentHash":"376af933119e8c0a","interfaceReprHash":null,"sourceName":"src/PiggyBank.sol","imports":[],"versionRequirement":"^0.8.20","artifacts":{"PiggyBank":{"0.8.20":{"default":{"path":"PiggyBank.sol/PiggyBank.json","build_id":"aab777803c1ade9c"}}}},"seenByCompiler":true},"test/PiggyBank.t.sol":{"lastModificationDate":1766937183578,"contentHash":"ebfa8fedfe6a991b","interfaceReprHash":null,"sourceName":"test/PiggyBank.t.sol","imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/StdAssertions.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdConstants.sol","lib/forge-std/src/StdError.sol","lib/forge-std/src/StdInvariant.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdToml.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Test.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/safeconsole.sol","src/PiggyBank.sol"],"versionRequirement":"^0.8.20","artifacts":{"PiggyBankTest":{"0.8.20":{"default":{"path":"PiggyBank.t.sol/PiggyBankTest.json","build_id":"aab777803c1ade9c"}}},"ReentrancyAttacker":{"0.8.20":{"default":{"path":"PiggyBank.t.sol/ReentrancyAttacker.json","build_id":"aab777803c1ade9c"}}}},"seenByCompiler":true}},"builds":["aab777803c1ade9c","ecd42804dc1a708e"],"profiles":{"default":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]}},"evmVersion":"shanghai","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"shanghai","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}}},"preprocessed":false,"mocks":[]} \ No newline at end of file +{"_format":"","paths":{"artifacts":"out","build_infos":"out/build-info","sources":"src","tests":"test","scripts":"script","libraries":["lib"]},"files":{"lib/forge-std/src/Base.sol":{"lastModificationDate":1764548434528,"contentHash":"f4bd67fdeb49a95a","interfaceReprHash":null,"sourceName":"lib/forge-std/src/Base.sol","imports":["lib/forge-std/src/StdStorage.sol","lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"CommonBase":{"0.8.20":{"default":{"path":"Base.sol/CommonBase.json","build_id":"ecd42804dc1a708e"}}},"ScriptBase":{"0.8.20":{"default":{"path":"Base.sol/ScriptBase.json","build_id":"ecd42804dc1a708e"}}},"TestBase":{"0.8.20":{"default":{"path":"Base.sol/TestBase.json","build_id":"ecd42804dc1a708e"}}}},"seenByCompiler":true},"lib/forge-std/src/StdAssertions.sol":{"lastModificationDate":1764548434529,"contentHash":"02aafa55c6c27fcf","interfaceReprHash":null,"sourceName":"lib/forge-std/src/StdAssertions.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdAssertions":{"0.8.20":{"default":{"path":"StdAssertions.sol/StdAssertions.json","build_id":"ecd42804dc1a708e"}}}},"seenByCompiler":true},"lib/forge-std/src/StdChains.sol":{"lastModificationDate":1764548434529,"contentHash":"0adbf4fecabd792e","interfaceReprHash":null,"sourceName":"lib/forge-std/src/StdChains.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdChains":{"0.8.20":{"default":{"path":"StdChains.sol/StdChains.json","build_id":"ecd42804dc1a708e"}}}},"seenByCompiler":true},"lib/forge-std/src/StdCheats.sol":{"lastModificationDate":1764548434530,"contentHash":"30325e8cda32c7ae","interfaceReprHash":null,"sourceName":"lib/forge-std/src/StdCheats.sol","imports":["lib/forge-std/src/StdStorage.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdCheats":{"0.8.20":{"default":{"path":"StdCheats.sol/StdCheats.json","build_id":"ecd42804dc1a708e"}}},"StdCheatsSafe":{"0.8.20":{"default":{"path":"StdCheats.sol/StdCheatsSafe.json","build_id":"ecd42804dc1a708e"}}}},"seenByCompiler":true},"lib/forge-std/src/StdConstants.sol":{"lastModificationDate":1764548434530,"contentHash":"23303eb7e922efe4","interfaceReprHash":null,"sourceName":"lib/forge-std/src/StdConstants.sol","imports":["lib/forge-std/src/Vm.sol","lib/forge-std/src/interfaces/IMulticall3.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdConstants":{"0.8.20":{"default":{"path":"StdConstants.sol/StdConstants.json","build_id":"ecd42804dc1a708e"}}}},"seenByCompiler":true},"lib/forge-std/src/StdError.sol":{"lastModificationDate":1764548434531,"contentHash":"a1a86c7115e2cdf3","interfaceReprHash":null,"sourceName":"lib/forge-std/src/StdError.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"stdError":{"0.8.20":{"default":{"path":"StdError.sol/stdError.json","build_id":"ecd42804dc1a708e"}}}},"seenByCompiler":true},"lib/forge-std/src/StdInvariant.sol":{"lastModificationDate":1764548434531,"contentHash":"0111ef959dff6f54","interfaceReprHash":null,"sourceName":"lib/forge-std/src/StdInvariant.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdInvariant":{"0.8.20":{"default":{"path":"StdInvariant.sol/StdInvariant.json","build_id":"ecd42804dc1a708e"}}}},"seenByCompiler":true},"lib/forge-std/src/StdJson.sol":{"lastModificationDate":1764548434531,"contentHash":"5fb1b35c8fb281fd","interfaceReprHash":null,"sourceName":"lib/forge-std/src/StdJson.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.0, <0.9.0","artifacts":{"stdJson":{"0.8.20":{"default":{"path":"StdJson.sol/stdJson.json","build_id":"ecd42804dc1a708e"}}}},"seenByCompiler":true},"lib/forge-std/src/StdMath.sol":{"lastModificationDate":1764548434531,"contentHash":"72584abebada1e7a","interfaceReprHash":null,"sourceName":"lib/forge-std/src/StdMath.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"stdMath":{"0.8.20":{"default":{"path":"StdMath.sol/stdMath.json","build_id":"ecd42804dc1a708e"}}}},"seenByCompiler":true},"lib/forge-std/src/StdStorage.sol":{"lastModificationDate":1764548434531,"contentHash":"9a44dcb9bda3bfa9","interfaceReprHash":null,"sourceName":"lib/forge-std/src/StdStorage.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"stdStorage":{"0.8.20":{"default":{"path":"StdStorage.sol/stdStorage.json","build_id":"ecd42804dc1a708e"}}},"stdStorageSafe":{"0.8.20":{"default":{"path":"StdStorage.sol/stdStorageSafe.json","build_id":"ecd42804dc1a708e"}}}},"seenByCompiler":true},"lib/forge-std/src/StdStyle.sol":{"lastModificationDate":1764548434531,"contentHash":"ee166ef95092736e","interfaceReprHash":null,"sourceName":"lib/forge-std/src/StdStyle.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{"StdStyle":{"0.8.20":{"default":{"path":"StdStyle.sol/StdStyle.json","build_id":"ecd42804dc1a708e"}}}},"seenByCompiler":true},"lib/forge-std/src/StdToml.sol":{"lastModificationDate":1764548434532,"contentHash":"fc667e4ecb7fa86c","interfaceReprHash":null,"sourceName":"lib/forge-std/src/StdToml.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.0, <0.9.0","artifacts":{"stdToml":{"0.8.20":{"default":{"path":"StdToml.sol/stdToml.json","build_id":"ecd42804dc1a708e"}}}},"seenByCompiler":true},"lib/forge-std/src/StdUtils.sol":{"lastModificationDate":1764548434532,"contentHash":"b7cdeb66252de708","interfaceReprHash":null,"sourceName":"lib/forge-std/src/StdUtils.sol","imports":["lib/forge-std/src/Vm.sol","lib/forge-std/src/interfaces/IMulticall3.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdUtils":{"0.8.20":{"default":{"path":"StdUtils.sol/StdUtils.json","build_id":"ecd42804dc1a708e"}}}},"seenByCompiler":true},"lib/forge-std/src/Test.sol":{"lastModificationDate":1764548434532,"contentHash":"f56119a09f81c62c","interfaceReprHash":null,"sourceName":"lib/forge-std/src/Test.sol","imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/StdAssertions.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdConstants.sol","lib/forge-std/src/StdError.sol","lib/forge-std/src/StdInvariant.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdToml.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/safeconsole.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"Test":{"0.8.20":{"default":{"path":"Test.sol/Test.json","build_id":"ecd42804dc1a708e"}}}},"seenByCompiler":true},"lib/forge-std/src/Vm.sol":{"lastModificationDate":1764548434533,"contentHash":"803443adcf84cfaa","interfaceReprHash":null,"sourceName":"lib/forge-std/src/Vm.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"Vm":{"0.8.20":{"default":{"path":"Vm.sol/Vm.json","build_id":"ecd42804dc1a708e"}}},"VmSafe":{"0.8.20":{"default":{"path":"Vm.sol/VmSafe.json","build_id":"ecd42804dc1a708e"}}}},"seenByCompiler":true},"lib/forge-std/src/console.sol":{"lastModificationDate":1764548434533,"contentHash":"bae85493a76fb054","interfaceReprHash":null,"sourceName":"lib/forge-std/src/console.sol","imports":[],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{"console":{"0.8.20":{"default":{"path":"console.sol/console.json","build_id":"ecd42804dc1a708e"}}}},"seenByCompiler":true},"lib/forge-std/src/console2.sol":{"lastModificationDate":1764548434533,"contentHash":"49a7da3dfc404603","interfaceReprHash":null,"sourceName":"lib/forge-std/src/console2.sol","imports":["lib/forge-std/src/console.sol"],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{},"seenByCompiler":true},"lib/forge-std/src/interfaces/IMulticall3.sol":{"lastModificationDate":1764548434535,"contentHash":"b680a332ebf10901","interfaceReprHash":null,"sourceName":"lib/forge-std/src/interfaces/IMulticall3.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"IMulticall3":{"0.8.20":{"default":{"path":"IMulticall3.sol/IMulticall3.json","build_id":"ecd42804dc1a708e"}}}},"seenByCompiler":true},"lib/forge-std/src/safeconsole.sol":{"lastModificationDate":1764548434535,"contentHash":"621653b34a6691ea","interfaceReprHash":null,"sourceName":"lib/forge-std/src/safeconsole.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"safeconsole":{"0.8.20":{"default":{"path":"safeconsole.sol/safeconsole.json","build_id":"ecd42804dc1a708e"}}}},"seenByCompiler":true},"src/PiggyBank.sol":{"lastModificationDate":1768934051719,"contentHash":"4c4fe21fb79f169a","interfaceReprHash":null,"sourceName":"src/PiggyBank.sol","imports":[],"versionRequirement":"^0.8.20","artifacts":{"PiggyBank":{"0.8.20":{"default":{"path":"PiggyBank.sol/PiggyBank.json","build_id":"1e2f2db3cba34709"}}}},"seenByCompiler":true},"test/PiggyBank.t.sol":{"lastModificationDate":1768114325943,"contentHash":"971f5f03968ce0a1","interfaceReprHash":null,"sourceName":"test/PiggyBank.t.sol","imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/StdAssertions.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdConstants.sol","lib/forge-std/src/StdError.sol","lib/forge-std/src/StdInvariant.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdToml.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Test.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/safeconsole.sol","src/PiggyBank.sol"],"versionRequirement":"^0.8.20","artifacts":{"PiggyBankTest":{"0.8.20":{"default":{"path":"PiggyBank.t.sol/PiggyBankTest.json","build_id":"1e2f2db3cba34709"}}},"ReentrancyAttacker":{"0.8.20":{"default":{"path":"PiggyBank.t.sol/ReentrancyAttacker.json","build_id":"1e2f2db3cba34709"}}}},"seenByCompiler":true},"test/PiggyBankSecurity.t.sol":{"lastModificationDate":1768934506957,"contentHash":"fc8cf9d5f52c2854","interfaceReprHash":null,"sourceName":"test/PiggyBankSecurity.t.sol","imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/StdAssertions.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdConstants.sol","lib/forge-std/src/StdError.sol","lib/forge-std/src/StdInvariant.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdToml.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Test.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/safeconsole.sol","src/PiggyBank.sol"],"versionRequirement":"^0.8.20","artifacts":{"PiggyBankSecurityTest":{"0.8.20":{"default":{"path":"PiggyBankSecurity.t.sol/PiggyBankSecurityTest.json","build_id":"1e2f2db3cba34709"}}}},"seenByCompiler":true}},"builds":["1e2f2db3cba34709","ecd42804dc1a708e"],"profiles":{"default":{"solc":{"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]}},"evmVersion":"shanghai","viaIR":false,"libraries":{}},"vyper":{"evmVersion":"shanghai","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}}},"preprocessed":false,"mocks":[]} \ No newline at end of file diff --git a/frontend/src/config/contracts.ts b/frontend/src/config/contracts.ts index 3cac591..aafe2a1 100644 --- a/frontend/src/config/contracts.ts +++ b/frontend/src/config/contracts.ts @@ -8,114 +8,195 @@ export const PIGGYBANK_ABI = [ stateMutability: 'payable', type: 'constructor' }, + { inputs: [], name: 'PiggyBank__Blacklisted', type: 'error' }, + { inputs: [], name: 'PiggyBank__DepositTooHigh', type: 'error' }, + { inputs: [], name: 'PiggyBank__DepositTooLow', type: 'error' }, + { inputs: [], name: 'PiggyBank__EmergencyModeActive', type: 'error' }, + { inputs: [], name: 'PiggyBank__InsufficientBalance', type: 'error' }, + { inputs: [], name: 'PiggyBank__InvalidLockTime', type: 'error' }, + { inputs: [], name: 'PiggyBank__InvalidUnlockTime', type: 'error' }, + { inputs: [], name: 'PiggyBank__MaxUsersReached', type: 'error' }, + { inputs: [], name: 'PiggyBank__NoDeposit', type: 'error' }, + { inputs: [], name: 'PiggyBank__NotOwner', type: 'error' }, + { inputs: [], name: 'PiggyBank__Paused', type: 'error' }, + { inputs: [], name: 'PiggyBank__ReentrancyAttack', type: 'error' }, + { inputs: [], name: 'PiggyBank__StillLocked', type: 'error' }, + { inputs: [], name: 'PiggyBank__TransferFailed', type: 'error' }, + { inputs: [], name: 'PiggyBank__Unauthorized', type: 'error' }, + { inputs: [], name: 'PiggyBank__ZeroAddress', type: 'error' }, + { inputs: [], name: 'PiggyBank__ZeroAmount', type: 'error' }, + { inputs: [], name: 'PiggyBank__ZeroValue', type: 'error' }, { - stateMutability: 'payable', - type: 'receive' + anonymous: false, + inputs: [ + { indexed: false, internalType: 'uint256', name: 'oldLimit', type: 'uint256' }, + { indexed: false, internalType: 'uint256', name: 'newLimit', type: 'uint256' } + ], + name: 'DepositLimitUpdated', + type: 'event' }, { - stateMutability: 'payable', - type: 'fallback' + anonymous: false, + inputs: [ + { indexed: true, internalType: 'address', name: 'depositor', type: 'address' }, + { indexed: false, internalType: 'uint256', name: 'amount', type: 'uint256' } + ], + name: 'Deposited', + type: 'event' }, { - inputs: [], - name: 'deposit', - outputs: [], - stateMutability: 'payable', - type: 'function' + anonymous: false, + inputs: [ + { indexed: true, internalType: 'address', name: 'oldGuardian', type: 'address' }, + { indexed: true, internalType: 'address', name: 'newGuardian', type: 'address' } + ], + name: 'EmergencyGuardianChanged', + type: 'event' + }, + { + anonymous: false, + inputs: [ + { indexed: true, internalType: 'address', name: 'activator', type: 'address' }, + { indexed: false, internalType: 'uint256', name: 'unlockTime', type: 'uint256' } + ], + name: 'EmergencyModeActivated', + type: 'event' + }, + { + anonymous: false, + inputs: [ + { indexed: true, internalType: 'address', name: 'user', type: 'address' }, + { indexed: false, internalType: 'uint256', name: 'amount', type: 'uint256' } + ], + name: 'EmergencyWithdrawal', + type: 'event' + }, + { + anonymous: false, + inputs: [ + { indexed: true, internalType: 'address', name: 'previousOwner', type: 'address' }, + { indexed: true, internalType: 'address', name: 'newOwner', type: 'address' } + ], + name: 'OwnershipTransferred', + type: 'event' + }, + { + anonymous: false, + inputs: [{ indexed: false, internalType: 'address', name: 'account', type: 'address' }], + name: 'Paused', + type: 'event' }, + { + anonymous: false, + inputs: [{ indexed: false, internalType: 'address', name: 'account', type: 'address' }], + name: 'Unpaused', + type: 'event' + }, + { + anonymous: false, + inputs: [ + { indexed: true, internalType: 'address', name: 'withdrawer', type: 'address' }, + { indexed: false, internalType: 'uint256', name: 'amount', type: 'uint256' } + ], + name: 'Withdrawn', + type: 'event' + }, + { stateMutability: 'payable', type: 'fallback' }, { inputs: [], - name: 'withdraw', - outputs: [], - stateMutability: 'nonpayable', + name: 'MAX_DEPOSIT_AMOUNT', + outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], + stateMutability: 'view', type: 'function' }, { inputs: [], - name: 'withdrawAll', - outputs: [], - stateMutability: 'nonpayable', + name: 'MAX_LOCK_TIME', + outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], + stateMutability: 'view', type: 'function' }, { inputs: [], - name: 'pause', - outputs: [], - stateMutability: 'nonpayable', + name: 'MIN_DEPOSIT_AMOUNT', + outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], + stateMutability: 'view', type: 'function' }, { inputs: [], - name: 'unpause', - outputs: [], - stateMutability: 'nonpayable', + name: 'MIN_LOCK_TIME', + outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], + stateMutability: 'view', type: 'function' }, { - inputs: [{ internalType: 'address', name: 'newOwner', type: 'address' }], - name: 'transferOwnership', + inputs: [{ internalType: 'uint256', name: '_unlockTime', type: 'uint256' }], + name: 'activateEmergencyMode', outputs: [], stateMutability: 'nonpayable', type: 'function' }, { - inputs: [{ internalType: 'address', name: 'newGuardian', type: 'address' }], - name: 'setEmergencyGuardian', - outputs: [], - stateMutability: 'nonpayable', + inputs: [{ internalType: 'address', name: 'user', type: 'address' }], + name: 'canWithdraw', + outputs: [{ internalType: 'bool', name: '', type: 'bool' }], + stateMutability: 'view', type: 'function' }, { - inputs: [{ internalType: 'uint256', name: '_unlockTime', type: 'uint256' }], - name: 'activateEmergencyMode', + inputs: [], + name: 'deactivateEmergencyMode', outputs: [], stateMutability: 'nonpayable', type: 'function' }, { inputs: [], - name: 'deactivateEmergencyMode', + name: 'deposit', outputs: [], - stateMutability: 'nonpayable', + stateMutability: 'payable', type: 'function' }, { - inputs: [{ internalType: 'uint256', name: 'newMaxAmount', type: 'uint256' }], - name: 'updateMaxDepositAmount', - outputs: [], - stateMutability: 'nonpayable', + inputs: [{ internalType: 'address', name: '', type: 'address' }], + name: 'depositTimestamps', + outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], + stateMutability: 'view', type: 'function' }, { - inputs: [], - name: 'getBalance', + inputs: [{ internalType: 'address', name: '', type: 'address' }], + name: 'deposits', outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], stateMutability: 'view', type: 'function' }, { inputs: [], - name: 'getUnlockTime', - outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], + name: 'emergencyGuardian', + outputs: [{ internalType: 'address', name: '', type: 'address' }], stateMutability: 'view', type: 'function' }, { inputs: [], - name: 'isUnlocked', + name: 'emergencyMode', outputs: [{ internalType: 'bool', name: '', type: 'bool' }], stateMutability: 'view', type: 'function' }, { - inputs: [{ internalType: 'address', name: 'user', type: 'address' }], - name: 'getUserDepositInfo', - outputs: [ - { internalType: 'uint256', name: 'userDeposit', type: 'uint256' }, - { internalType: 'uint256', name: 'timestamp', type: 'uint256' }, - { internalType: 'uint256', name: 'count', type: 'uint256' }, - { internalType: 'uint256', name: 'timeRemaining', type: 'uint256' } - ], + inputs: [], + name: 'emergencyUnlockTime', + outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [], + name: 'getBalance', + outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], stateMutability: 'view', type: 'function' }, @@ -134,72 +215,84 @@ export const PIGGYBANK_ABI = [ }, { inputs: [], - name: 'getTimeRemaining', + name: 'getEmergencyTimeRemaining', + outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], + stateMutability: 'view', + type: 'function' + }, + { + inputs: [{ internalType: 'address', name: 'user', type: 'address' }], + name: 'getMaxAdditionalDeposit', outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], stateMutability: 'view', type: 'function' }, { inputs: [], - name: 'getEmergencyTimeRemaining', + name: 'getTimeRemaining', outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], stateMutability: 'view', type: 'function' }, { - inputs: [{ internalType: 'address', name: 'user', type: 'address' }], - name: 'canWithdraw', - outputs: [{ internalType: 'bool', name: '', type: 'bool' }], + inputs: [], + name: 'getUnlockTime', + outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], stateMutability: 'view', type: 'function' }, { inputs: [{ internalType: 'address', name: 'user', type: 'address' }], - name: 'getMaxAdditionalDeposit', - outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], + name: 'getUserDepositInfo', + outputs: [ + { internalType: 'uint256', name: 'userDeposit', type: 'uint256' }, + { internalType: 'uint256', name: 'timestamp', type: 'uint256' }, + { internalType: 'uint256', name: 'count', type: 'uint256' }, + { internalType: 'uint256', name: 'timeRemaining', type: 'uint256' } + ], stateMutability: 'view', type: 'function' }, { inputs: [], - name: 'owner', - outputs: [{ internalType: 'address', name: '', type: 'address' }], + name: 'isUnlocked', + outputs: [{ internalType: 'bool', name: '', type: 'bool' }], stateMutability: 'view', type: 'function' }, { inputs: [], - name: 'unlockTime', + name: 'numberOfDepositors', outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], stateMutability: 'view', type: 'function' }, { inputs: [], - name: 'paused', - outputs: [{ internalType: 'bool', name: '', type: 'bool' }], + name: 'owner', + outputs: [{ internalType: 'address', name: '', type: 'address' }], stateMutability: 'view', type: 'function' }, { - inputs: [{ internalType: 'address', name: '', type: 'address' }], - name: 'deposits', - outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], - stateMutability: 'view', + inputs: [], + name: 'pause', + outputs: [], + stateMutability: 'nonpayable', type: 'function' }, { - inputs: [{ internalType: 'address', name: '', type: 'address' }], - name: 'depositTimestamps', - outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], + inputs: [], + name: 'paused', + outputs: [{ internalType: 'bool', name: '', type: 'bool' }], stateMutability: 'view', type: 'function' }, { - inputs: [{ internalType: 'address', name: '', type: 'address' }], - name: 'userDepositCount', - outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], - stateMutability: 'view', + inputs: [{ internalType: 'address', name: 'newGuardian', type: 'address' }], + name: 'setEmergencyGuardian', + outputs: [], + stateMutability: 'nonpayable', type: 'function' }, { @@ -217,115 +310,55 @@ export const PIGGYBANK_ABI = [ type: 'function' }, { - inputs: [], - name: 'numberOfDepositors', - outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], - stateMutability: 'view', + inputs: [{ internalType: 'address', name: 'newOwner', type: 'address' }], + name: 'transferOwnership', + outputs: [], + stateMutability: 'nonpayable', type: 'function' }, { inputs: [], - name: 'MAX_DEPOSIT_AMOUNT', + name: 'unlockTime', outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], stateMutability: 'view', type: 'function' }, { inputs: [], - name: 'MIN_DEPOSIT_AMOUNT', - outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], - stateMutability: 'view', + name: 'unpause', + outputs: [], + stateMutability: 'nonpayable', type: 'function' }, { - inputs: [], - name: 'MAX_LOCK_TIME', - outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], - stateMutability: 'view', + inputs: [{ internalType: 'uint256', name: 'newMaxAmount', type: 'uint256' }], + name: 'updateMaxDepositAmount', + outputs: [], + stateMutability: 'nonpayable', type: 'function' }, { - inputs: [], - name: 'MIN_LOCK_TIME', + inputs: [{ internalType: 'address', name: '', type: 'address' }], + name: 'userDepositCount', outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], stateMutability: 'view', type: 'function' }, { - anonymous: false, - inputs: [ - { indexed: true, internalType: 'address', name: 'depositor', type: 'address' }, - { indexed: false, internalType: 'uint256', name: 'amount', type: 'uint256' } - ], - name: 'Deposited', - type: 'event' - }, - { - anonymous: false, - inputs: [ - { indexed: true, internalType: 'address', name: 'withdrawer', type: 'address' }, - { indexed: false, internalType: 'uint256', name: 'amount', type: 'uint256' } - ], - name: 'Withdrawn', - type: 'event' - }, - { - anonymous: false, - inputs: [{ indexed: false, internalType: 'address', name: 'account', type: 'address' }], - name: 'Paused', - type: 'event' - }, - { - anonymous: false, - inputs: [{ indexed: false, internalType: 'address', name: 'account', type: 'address' }], - name: 'Unpaused', - type: 'event' - }, - { - anonymous: false, - inputs: [ - { indexed: true, internalType: 'address', name: 'previousOwner', type: 'address' }, - { indexed: true, internalType: 'address', name: 'newOwner', type: 'address' } - ], - name: 'OwnershipTransferred', - type: 'event' - }, - { - anonymous: false, - inputs: [ - { indexed: false, internalType: 'address', name: 'oldGuardian', type: 'address' }, - { indexed: false, internalType: 'address', name: 'newGuardian', type: 'address' } - ], - name: 'EmergencyGuardianChanged', - type: 'event' - }, - { - anonymous: false, - inputs: [ - { indexed: false, internalType: 'address', name: 'activator', type: 'address' }, - { indexed: false, internalType: 'uint256', name: 'unlockTime', type: 'uint256' } - ], - name: 'EmergencyModeActivated', - type: 'event' + inputs: [], + name: 'withdraw', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' }, { - anonymous: false, - inputs: [ - { indexed: false, internalType: 'uint256', name: 'oldLimit', type: 'uint256' }, - { indexed: false, internalType: 'uint256', name: 'newLimit', type: 'uint256' } - ], - name: 'DepositLimitUpdated', - type: 'event' + inputs: [], + name: 'withdrawAll', + outputs: [], + stateMutability: 'nonpayable', + type: 'function' }, - { - anonymous: false, - inputs: [ - { indexed: false, internalType: 'address', name: 'user', type: 'address' }, - { indexed: false, internalType: 'uint256', name: 'amount', type: 'uint256' } - ], - name: 'EmergencyWithdrawal', - type: 'event' - } + { stateMutability: 'payable', type: 'receive' } ] as const // Contract address - Update this after deployment diff --git a/out/PiggyBank.sol/PiggyBank.json b/out/PiggyBank.sol/PiggyBank.json index a660602..6559506 100644 --- a/out/PiggyBank.sol/PiggyBank.json +++ b/out/PiggyBank.sol/PiggyBank.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_unlockTime","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"MAX_DEPOSIT_AMOUNT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MIN_DEPOSIT_AMOUNT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"deposit","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"deposits","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBalance","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getContractStats","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getUnlockTime","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getUserDeposit","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"isUnlocked","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"totalDeposits","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalWithdrawals","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unlockTime","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdraw","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Deposited","inputs":[{"name":"depositor","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Withdrawn","inputs":[{"name":"withdrawer","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"PiggyBank__DepositTooHigh","inputs":[]},{"type":"error","name":"PiggyBank__DepositTooLow","inputs":[]},{"type":"error","name":"PiggyBank__InsufficientBalance","inputs":[]},{"type":"error","name":"PiggyBank__NoDeposit","inputs":[]},{"type":"error","name":"PiggyBank__NotOwner","inputs":[]},{"type":"error","name":"PiggyBank__StillLocked","inputs":[]},{"type":"error","name":"PiggyBank__TransferFailed","inputs":[]},{"type":"error","name":"PiggyBank__ZeroAddress","inputs":[]},{"type":"error","name":"PiggyBank__ZeroAmount","inputs":[]}],"bytecode":{"object":"0x60806040526040516109fd3803806109fd833981016040819052610022916100c8565b4281116100755760405162461bcd60e51b815260206004820152601d60248201527f556e6c6f636b2074696d65206d75737420626520696e20667574757265000000604482015260640160405180910390fd5b5f80546001600160a01b03191633908117825560018390556002805460ff191690556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506100df565b5f602082840312156100d8575f80fd5b5051919050565b610911806100ec5f395ff3fe608060405260043610610105575f3560e01c80637d88209711610092578063c084b10b11610062578063c084b10b1461025f578063d0e30db014610293578063dfe6b5d61461029b578063f2fde38b146102c9578063fc7e286d146102e8575f80fd5b80637d882097146101e95780638380edb7146101fe5780638456cb59146102155780638da5cb5b14610229575f80fd5b80633f4ba83a116100d85780633f4ba83a1461016f5780634c34a982146101835780635c975abb14610197578063602bc62b146101c057806360464627146101d4575f80fd5b806312065fe0146101095780631ea30fef1461012a578063251c1aa3146101445780633ccfd60b14610159575b5f80fd5b348015610114575f80fd5b50475b6040519081526020015b60405180910390f35b348015610135575f80fd5b5061011766038d7ea4c6800081565b34801561014f575f80fd5b5061011760015481565b348015610164575f80fd5b5061016d610313565b005b34801561017a575f80fd5b5061016d6104f2565b34801561018e575f80fd5b506101175f1981565b3480156101a2575f80fd5b506002546101b09060ff1681565b6040519015158152602001610121565b3480156101cb575f80fd5b50600154610117565b3480156101df575f80fd5b5061011760055481565b3480156101f4575f80fd5b5061011760045481565b348015610209575f80fd5b506001544210156101b0565b348015610220575f80fd5b5061016d6105a6565b348015610234575f80fd5b505f54610247906001600160a01b031681565b6040516001600160a01b039091168152602001610121565b34801561026a575f80fd5b5061011761027936600461083a565b6001600160a01b03165f9081526003602052604090205490565b61016d61062f565b3480156102a6575f80fd5b506004546005544760408051938452602084019290925290820152606001610121565b3480156102d4575f80fd5b5061016d6102e336600461083a565b610762565b3480156102f3575f80fd5b5061011761030236600461083a565b60036020525f908152604090205481565b60025460ff161561033f5760405162461bcd60e51b815260040161033690610867565b60405180910390fd5b5f546001600160a01b0316331461038f5760405162461bcd60e51b81526020600482015260146024820152732834b3b3bca130b7359d102737ba1037bbb732b960611b6044820152606401610336565b6001544210156103e15760405162461bcd60e51b815260206004820152601760248201527f506967677942616e6b3a205374696c6c206c6f636b65640000000000000000006044820152606401610336565b478061041c5760405162461bcd60e51b815260206004820152600a6024820152694e6f2062616c616e636560b01b6044820152606401610336565b8060055f82825461042d9190610893565b909155505060405181815233907f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d59060200160405180910390a26040515f90339083908381818185875af1925050503d805f81146104a6576040519150601f19603f3d011682016040523d82523d5f602084013e6104ab565b606091505b50509050806104ee5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610336565b5050565b5f546001600160a01b0316331461051b5760405162461bcd60e51b8152600401610336906108b8565b60025460ff166105665760405162461bcd60e51b815260206004820152601660248201527510dbdb9d1c9858dd081a5cc81b9bdd081c185d5cd95960521b6044820152606401610336565b6002805460ff191690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b5f546001600160a01b031633146105cf5760405162461bcd60e51b8152600401610336906108b8565b60025460ff16156105f25760405162461bcd60e51b815260040161033690610867565b6002805460ff191660011790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200161059c565b60025460ff16156106525760405162461bcd60e51b815260040161033690610867565b5f341161069a5760405162461bcd60e51b81526020600482015260166024820152754d757374206465706f73697420736f6d657468696e6760501b6044820152606401610336565b66038d7ea4c680003410156106e55760405162461bcd60e51b815260206004820152601160248201527011195c1bdcda5d081d1bdbc81cdb585b1b607a1b6044820152606401610336565b335f90815260036020526040812054906106ff3483610893565b9050335f90815260036020526040812082905560048054349290610724908490610893565b909155505060405134815233907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c49060200160405180910390a25050565b5f546001600160a01b0316331461078b5760405162461bcd60e51b8152600401610336906108b8565b6001600160a01b0381166107e15760405162461bcd60e51b815260206004820152601960248201527f4e6577206f776e6572206973207a65726f2061646472657373000000000000006044820152606401610336565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f6020828403121561084a575f80fd5b81356001600160a01b0381168114610860575f80fd5b9392505050565b60208082526012908201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b604082015260600190565b808201808211156108b257634e487b7160e01b5f52601160045260245ffd5b92915050565b6020808252600990820152682737ba1037bbb732b960b91b60408201526060019056fea2646970667358221220403cb9ef02c668a9c8582feccebbe6fdecd071dedabafc1514a3fb07eeb84c4064736f6c63430008140033","sourceMap":"319:5001:19:-:0;;;1423:274;;;;;;;;;;;;;;;;;;:::i;:::-;1496:15;1482:11;:29;1474:71;;;;-1:-1:-1;;;1474:71:19;;405:2:21;1474:71:19;;;387:21:21;444:2;424:18;;;417:30;483:31;463:18;;;456:59;532:18;;1474:71:19;;;;;;;;1555:5;:18;;-1:-1:-1;;;;;;1555:18:19;1563:10;1555:18;;;;;;1583:24;;;1617:6;:14;;-1:-1:-1;;1617:14:19;;;1646:44;;1563:10;;1555:5;1646:44;;1555:5;;1646:44;1423:274;319:5001;;14:184:21;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;-1:-1:-1;176:16:21;;14:184;-1:-1:-1;14:184:21:o;203:353::-;319:5001:19;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405260043610610105575f3560e01c80637d88209711610092578063c084b10b11610062578063c084b10b1461025f578063d0e30db014610293578063dfe6b5d61461029b578063f2fde38b146102c9578063fc7e286d146102e8575f80fd5b80637d882097146101e95780638380edb7146101fe5780638456cb59146102155780638da5cb5b14610229575f80fd5b80633f4ba83a116100d85780633f4ba83a1461016f5780634c34a982146101835780635c975abb14610197578063602bc62b146101c057806360464627146101d4575f80fd5b806312065fe0146101095780631ea30fef1461012a578063251c1aa3146101445780633ccfd60b14610159575b5f80fd5b348015610114575f80fd5b50475b6040519081526020015b60405180910390f35b348015610135575f80fd5b5061011766038d7ea4c6800081565b34801561014f575f80fd5b5061011760015481565b348015610164575f80fd5b5061016d610313565b005b34801561017a575f80fd5b5061016d6104f2565b34801561018e575f80fd5b506101175f1981565b3480156101a2575f80fd5b506002546101b09060ff1681565b6040519015158152602001610121565b3480156101cb575f80fd5b50600154610117565b3480156101df575f80fd5b5061011760055481565b3480156101f4575f80fd5b5061011760045481565b348015610209575f80fd5b506001544210156101b0565b348015610220575f80fd5b5061016d6105a6565b348015610234575f80fd5b505f54610247906001600160a01b031681565b6040516001600160a01b039091168152602001610121565b34801561026a575f80fd5b5061011761027936600461083a565b6001600160a01b03165f9081526003602052604090205490565b61016d61062f565b3480156102a6575f80fd5b506004546005544760408051938452602084019290925290820152606001610121565b3480156102d4575f80fd5b5061016d6102e336600461083a565b610762565b3480156102f3575f80fd5b5061011761030236600461083a565b60036020525f908152604090205481565b60025460ff161561033f5760405162461bcd60e51b815260040161033690610867565b60405180910390fd5b5f546001600160a01b0316331461038f5760405162461bcd60e51b81526020600482015260146024820152732834b3b3bca130b7359d102737ba1037bbb732b960611b6044820152606401610336565b6001544210156103e15760405162461bcd60e51b815260206004820152601760248201527f506967677942616e6b3a205374696c6c206c6f636b65640000000000000000006044820152606401610336565b478061041c5760405162461bcd60e51b815260206004820152600a6024820152694e6f2062616c616e636560b01b6044820152606401610336565b8060055f82825461042d9190610893565b909155505060405181815233907f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d59060200160405180910390a26040515f90339083908381818185875af1925050503d805f81146104a6576040519150601f19603f3d011682016040523d82523d5f602084013e6104ab565b606091505b50509050806104ee5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610336565b5050565b5f546001600160a01b0316331461051b5760405162461bcd60e51b8152600401610336906108b8565b60025460ff166105665760405162461bcd60e51b815260206004820152601660248201527510dbdb9d1c9858dd081a5cc81b9bdd081c185d5cd95960521b6044820152606401610336565b6002805460ff191690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b5f546001600160a01b031633146105cf5760405162461bcd60e51b8152600401610336906108b8565b60025460ff16156105f25760405162461bcd60e51b815260040161033690610867565b6002805460ff191660011790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200161059c565b60025460ff16156106525760405162461bcd60e51b815260040161033690610867565b5f341161069a5760405162461bcd60e51b81526020600482015260166024820152754d757374206465706f73697420736f6d657468696e6760501b6044820152606401610336565b66038d7ea4c680003410156106e55760405162461bcd60e51b815260206004820152601160248201527011195c1bdcda5d081d1bdbc81cdb585b1b607a1b6044820152606401610336565b335f90815260036020526040812054906106ff3483610893565b9050335f90815260036020526040812082905560048054349290610724908490610893565b909155505060405134815233907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c49060200160405180910390a25050565b5f546001600160a01b0316331461078b5760405162461bcd60e51b8152600401610336906108b8565b6001600160a01b0381166107e15760405162461bcd60e51b815260206004820152601960248201527f4e6577206f776e6572206973207a65726f2061646472657373000000000000006044820152606401610336565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f6020828403121561084a575f80fd5b81356001600160a01b0381168114610860575f80fd5b9392505050565b60208082526012908201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b604082015260600190565b808201808211156108b257634e487b7160e01b5f52601160045260245ffd5b92915050565b6020808252600990820152682737ba1037bbb732b960b91b60408201526060019056fea2646970667358221220403cb9ef02c668a9c8582feccebbe6fdecd071dedabafc1514a3fb07eeb84c4064736f6c63430008140033","sourceMap":"319:5001:19:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4355:99;;;;;;;;;;-1:-1:-1;4426:21:19;4355:99;;;160:25:21;;;148:2;133:18;4355:99:19;;;;;;;;672:56;;;;;;;;;;;;717:11;672:56;;370:25;;;;;;;;;;;;;;;;3536:566;;;;;;;;;;;;;:::i;:::-;;2112:115;;;;;;;;;;;;;:::i;604:62::-;;;;;;;;;;;;-1:-1:-1;;604:62:19;;401:18;;;;;;;;;;-1:-1:-1;401:18:19;;;;;;;;;;;361:14:21;;354:22;336:41;;324:2;309:18;401::19;196:187:21;4460:91:19;;;;;;;;;;-1:-1:-1;4534:10:19;;4460:91;;544:31;;;;;;;;;;;;;;;;510:28;;;;;;;;;;;;;;;;4557:104;;;;;;;;;;-1:-1:-1;4644:10:19;;4625:15;:29;;4557:104;;1993:113;;;;;;;;;;;;;:::i;344:20::-;;;;;;;;;;-1:-1:-1;344:20:19;;;;-1:-1:-1;;;;;344:20:19;;;;;;-1:-1:-1;;;;;552:32:21;;;534:51;;522:2;507:18;344:20:19;388:203:21;4801:108:19;;;;;;;;;;-1:-1:-1;4801:108:19;;;;;:::i;:::-;-1:-1:-1;;;;;4888:14:19;4862:7;4888:14;;;:8;:14;;;;;;;4801:108;2602:647;;;:::i;5132:186::-;;;;;;;;;;-1:-1:-1;5256:13:19;;5271:16;;5289:21;5132:186;;;1089:25:21;;;1145:2;1130:18;;1123:34;;;;1173:18;;;1166:34;1077:2;1062:18;5132:186:19;887:319:21;2233:219:19;;;;;;;;;;-1:-1:-1;2233:219:19;;;;;:::i;:::-;;:::i;461:43::-;;;;;;;;;;-1:-1:-1;461:43:19;;;;;:::i;:::-;;;;;;;;;;;;;;3536:566;1747:6;;;;1746:7;1738:38;;;;-1:-1:-1;;;1738:38:19;;;;;;;:::i;:::-;;;;;;;;;3611:5:::1;::::0;-1:-1:-1;;;;;3611:5:19::1;3597:10;:19;3589:52;;;::::0;-1:-1:-1;;;3589:52:19;;1760:2:21;3589:52:19::1;::::0;::::1;1742:21:21::0;1799:2;1779:18;;;1772:30;-1:-1:-1;;;1818:18:21;;;1811:50;1878:18;;3589:52:19::1;1558:344:21::0;3589:52:19::1;3678:10;;3659:15;:29;;3651:65;;;::::0;-1:-1:-1;;;3651:65:19;;2109:2:21;3651:65:19::1;::::0;::::1;2091:21:21::0;2148:2;2128:18;;;2121:30;2187:25;2167:18;;;2160:53;2230:18;;3651:65:19::1;1907:347:21::0;3651:65:19::1;3753:21;3792:19:::0;3784:42:::1;;;::::0;-1:-1:-1;;;3784:42:19;;2461:2:21;3784:42:19::1;::::0;::::1;2443:21:21::0;2500:2;2480:18;;;2473:30;-1:-1:-1;;;2519:18:21;;;2512:40;2569:18;;3784:42:19::1;2259:334:21::0;3784:42:19::1;3876:15;3856:16;;:35;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;3931:38:19::1;::::0;160:25:21;;;3941:10:19::1;::::0;3931:38:::1;::::0;148:2:21;133:18;3931:38:19::1;;;;;;;3998:52;::::0;3980:12:::1;::::0;4006:10:::1;::::0;4030:15;;3980:12;3998:52;3980:12;3998:52;4030:15;4006:10;3998:52:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3979:71;;;4068:7;4060:35;;;::::0;-1:-1:-1;;;4060:35:19;;3237:2:21;4060:35:19::1;::::0;::::1;3219:21:21::0;3276:2;3256:18;;;3249:30;-1:-1:-1;;;3295:18:21;;;3288:45;3350:18;;4060:35:19::1;3035:339:21::0;4060:35:19::1;3579:523;;3536:566::o:0;2112:115::-;1950:5;;-1:-1:-1;;;;;1950:5:19;1936:10;:19;1928:41;;;;-1:-1:-1;;;1928:41:19;;;;;;;:::i;:::-;1840:6:::1;::::0;::::1;;1832:41;;;::::0;-1:-1:-1;;;1832:41:19;;3918:2:21;1832:41:19::1;::::0;::::1;3900:21:21::0;3957:2;3937:18;;;3930:30;-1:-1:-1;;;3976:18:21;;;3969:52;4038:18;;1832:41:19::1;3716:346:21::0;1832:41:19::1;2171:6:::2;:14:::0;;-1:-1:-1;;2171:14:19::2;::::0;;2200:20:::2;::::0;2209:10:::2;534:51:21::0;;2200:20:19::2;::::0;522:2:21;507:18;2200:20:19::2;;;;;;;;2112:115::o:0;1993:113::-;1950:5;;-1:-1:-1;;;;;1950:5:19;1936:10;:19;1928:41;;;;-1:-1:-1;;;1928:41:19;;;;;;;:::i;:::-;1747:6:::1;::::0;::::1;;1746:7;1738:38;;;;-1:-1:-1::0;;;1738:38:19::1;;;;;;;:::i;:::-;2053:6:::2;:13:::0;;-1:-1:-1;;2053:13:19::2;2062:4;2053:13;::::0;;2081:18:::2;::::0;2088:10:::2;534:51:21::0;;2081:18:19::2;::::0;522:2:21;507:18;2081::19::2;388:203:21::0;2602:647:19;1747:6;;;;1746:7;1738:38;;;;-1:-1:-1;;;1738:38:19;;;;;;;:::i;:::-;2700:1:::1;2688:9;:13;2680:48;;;::::0;-1:-1:-1;;;2680:48:19;;4269:2:21;2680:48:19::1;::::0;::::1;4251:21:21::0;4308:2;4288:18;;;4281:30;-1:-1:-1;;;4327:18:21;;;4320:52;4389:18;;2680:48:19::1;4067:346:21::0;2680:48:19::1;717:11;2746:9;:31;;2738:61;;;::::0;-1:-1:-1;;;2738:61:19;;4620:2:21;2738:61:19::1;::::0;::::1;4602:21:21::0;4659:2;4639:18;;;4632:30;-1:-1:-1;;;4678:18:21;;;4671:47;4735:18;;2738:61:19::1;4418:341:21::0;2738:61:19::1;2841:10;2810:19;2832:20:::0;;;:8:::1;:20;::::0;;;;;;2888:23:::1;2902:9;2832:20:::0;2888:23:::1;:::i;:::-;2862:49:::0;-1:-1:-1;3067:10:19::1;3058:20;::::0;;;:8:::1;:20;::::0;;;;:38;;;3106:13:::1;:26:::0;;3123:9:::1;::::0;3058:20;3106:26:::1;::::0;3123:9;;3106:26:::1;:::i;:::-;::::0;;;-1:-1:-1;;3210:32:19::1;::::0;3232:9:::1;160:25:21::0;;3220:10:19::1;::::0;3210:32:::1;::::0;148:2:21;133:18;3210:32:19::1;;;;;;;2652:597;;2602:647::o:0;2233:219::-;1950:5;;-1:-1:-1;;;;;1950:5:19;1936:10;:19;1928:41;;;;-1:-1:-1;;;1928:41:19;;;;;;;:::i;:::-;-1:-1:-1;;;;;2315:22:19;::::1;2307:60;;;::::0;-1:-1:-1;;;2307:60:19;;5314:2:21;2307:60:19::1;::::0;::::1;5296:21:21::0;5353:2;5333:18;;;5326:30;5392:27;5372:18;;;5365:55;5437:18;;2307:60:19::1;5112:349:21::0;2307:60:19::1;2403:5;::::0;;2382:37:::1;::::0;-1:-1:-1;;;;;2382:37:19;;::::1;::::0;2403:5;::::1;::::0;2382:37:::1;::::0;::::1;2429:5;:16:::0;;-1:-1:-1;;;;;;2429:16:19::1;-1:-1:-1::0;;;;;2429:16:19;;;::::1;::::0;;;::::1;::::0;;2233:219::o;596:286:21:-;655:6;708:2;696:9;687:7;683:23;679:32;676:52;;;724:1;721;714:12;676:52;750:23;;-1:-1:-1;;;;;802:31:21;;792:42;;782:70;;848:1;845;838:12;782:70;871:5;596:286;-1:-1:-1;;;596:286:21:o;1211:342::-;1413:2;1395:21;;;1452:2;1432:18;;;1425:30;-1:-1:-1;;;1486:2:21;1471:18;;1464:48;1544:2;1529:18;;1211:342::o;2598:222::-;2663:9;;;2684:10;;;2681:133;;;2736:10;2731:3;2727:20;2724:1;2717:31;2771:4;2768:1;2761:15;2799:4;2796:1;2789:15;2681:133;2598:222;;;;:::o;3379:332::-;3581:2;3563:21;;;3620:1;3600:18;;;3593:29;-1:-1:-1;;;3653:2:21;3638:18;;3631:39;3702:2;3687:18;;3379:332::o","linkReferences":{}},"methodIdentifiers":{"MAX_DEPOSIT_AMOUNT()":"4c34a982","MIN_DEPOSIT_AMOUNT()":"1ea30fef","deposit()":"d0e30db0","deposits(address)":"fc7e286d","getBalance()":"12065fe0","getContractStats()":"dfe6b5d6","getUnlockTime()":"602bc62b","getUserDeposit(address)":"c084b10b","isUnlocked()":"8380edb7","owner()":"8da5cb5b","pause()":"8456cb59","paused()":"5c975abb","totalDeposits()":"7d882097","totalWithdrawals()":"60464627","transferOwnership(address)":"f2fde38b","unlockTime()":"251c1aa3","unpause()":"3f4ba83a","withdraw()":"3ccfd60b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_unlockTime\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"PiggyBank__DepositTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PiggyBank__DepositTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PiggyBank__InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PiggyBank__NoDeposit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PiggyBank__NotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PiggyBank__StillLocked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PiggyBank__TransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PiggyBank__ZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PiggyBank__ZeroAmount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_DEPOSIT_AMOUNT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_DEPOSIT_AMOUNT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"deposits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getContractStats\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUnlockTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isUnlocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalDeposits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalWithdrawals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unlockTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Users can deposit ETH and withdraw only after a specified unlock timeImplements proper checks-effects-interactions pattern to prevent reentrancy\",\"kind\":\"dev\",\"methods\":{\"deposit()\":{\"details\":\"Implements checks-effects-interactions pattern to prevent reentrancy\"},\"getBalance()\":{\"details\":\"Implements checks-effects-interactions pattern to prevent reentrancy\"},\"getContractStats()\":{\"returns\":{\"_0\":\"totalDeposits Total amount deposited\",\"_1\":\"totalWithdrawals Total amount withdrawn\",\"_2\":\"currentBalance Current contract balance\"}},\"getUserDeposit(address)\":{\"params\":{\"user\":\"Address of the user\"},\"returns\":{\"_0\":\"User's deposit amount\"}}},\"title\":\"PiggyBank\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deposit()\":{\"notice\":\"Deposit ETH into the piggy bank\"},\"getBalance()\":{\"notice\":\"Withdraw all funds from the piggy bank\"},\"getContractStats()\":{\"notice\":\"Get contract statistics\"},\"getUserDeposit(address)\":{\"notice\":\"Get user's deposit balance\"},\"withdraw()\":{\"notice\":\"Owner withdraws entire contract balance after unlock\"}},\"notice\":\"A time-locked savings contract for disciplined ETH deposits\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/PiggyBank.sol\":\"PiggyBank\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"src/PiggyBank.sol\":{\"keccak256\":\"0x5cb45b9eedeffd9dc7753efa95d5ea29b8ee14fad582b778dabd672cdd8f4644\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86156887f596da77b4278af95d23bc4fbe5506db76103bc6a51a439a5ef2f3d4\",\"dweb:/ipfs/Qma3i5f819qgPRnwmVW938DtqhujEmxGyLtnVah9UDaaaW\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"_unlockTime","type":"uint256"}],"stateMutability":"payable","type":"constructor"},{"inputs":[],"type":"error","name":"PiggyBank__DepositTooHigh"},{"inputs":[],"type":"error","name":"PiggyBank__DepositTooLow"},{"inputs":[],"type":"error","name":"PiggyBank__InsufficientBalance"},{"inputs":[],"type":"error","name":"PiggyBank__NoDeposit"},{"inputs":[],"type":"error","name":"PiggyBank__NotOwner"},{"inputs":[],"type":"error","name":"PiggyBank__StillLocked"},{"inputs":[],"type":"error","name":"PiggyBank__TransferFailed"},{"inputs":[],"type":"error","name":"PiggyBank__ZeroAddress"},{"inputs":[],"type":"error","name":"PiggyBank__ZeroAmount"},{"inputs":[{"internalType":"address","name":"depositor","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Deposited","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[{"internalType":"address","name":"withdrawer","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Withdrawn","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_DEPOSIT_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MIN_DEPOSIT_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"payable","type":"function","name":"deposit"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"deposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getContractStats","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"stateMutability":"view","type":"function","name":"getUserDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isUnlocked","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalDeposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalWithdrawals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"unlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"withdraw"}],"devdoc":{"kind":"dev","methods":{"deposit()":{"details":"Implements checks-effects-interactions pattern to prevent reentrancy"},"getBalance()":{"details":"Implements checks-effects-interactions pattern to prevent reentrancy"},"getContractStats()":{"returns":{"_0":"totalDeposits Total amount deposited","_1":"totalWithdrawals Total amount withdrawn","_2":"currentBalance Current contract balance"}},"getUserDeposit(address)":{"params":{"user":"Address of the user"},"returns":{"_0":"User's deposit amount"}}},"version":1},"userdoc":{"kind":"user","methods":{"deposit()":{"notice":"Deposit ETH into the piggy bank"},"getBalance()":{"notice":"Withdraw all funds from the piggy bank"},"getContractStats()":{"notice":"Get contract statistics"},"getUserDeposit(address)":{"notice":"Get user's deposit balance"},"withdraw()":{"notice":"Owner withdraws entire contract balance after unlock"}},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/PiggyBank.sol":"PiggyBank"},"evmVersion":"shanghai","libraries":{}},"sources":{"src/PiggyBank.sol":{"keccak256":"0x5cb45b9eedeffd9dc7753efa95d5ea29b8ee14fad582b778dabd672cdd8f4644","urls":["bzz-raw://86156887f596da77b4278af95d23bc4fbe5506db76103bc6a51a439a5ef2f3d4","dweb:/ipfs/Qma3i5f819qgPRnwmVW938DtqhujEmxGyLtnVah9UDaaaW"],"license":"MIT"}},"version":1},"id":19} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"_unlockTime","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"MAX_DEPOSIT_AMOUNT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_LOCK_TIME","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MIN_DEPOSIT_AMOUNT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MIN_LOCK_TIME","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"activateEmergencyMode","inputs":[{"name":"_unlockTime","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"canWithdraw","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"deactivateEmergencyMode","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deposit","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"depositTimestamps","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"deposits","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"emergencyGuardian","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"emergencyMode","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"emergencyUnlockTime","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBalance","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getContractStats","inputs":[],"outputs":[{"name":"totalDeposits_","type":"uint256","internalType":"uint256"},{"name":"totalWithdrawals_","type":"uint256","internalType":"uint256"},{"name":"numberOfDepositors_","type":"uint256","internalType":"uint256"},{"name":"emergencyMode_","type":"bool","internalType":"bool"},{"name":"contractBalance_","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getEmergencyTimeRemaining","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getMaxAdditionalDeposit","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTimeRemaining","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getUnlockTime","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getUserDepositInfo","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"userDeposit","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"count","type":"uint256","internalType":"uint256"},{"name":"timeRemaining","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"isUnlocked","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"numberOfDepositors","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"setEmergencyGuardian","inputs":[{"name":"newGuardian","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"totalDeposits","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalWithdrawals","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unlockTime","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateMaxDepositAmount","inputs":[{"name":"newMaxAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"userDepositCount","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdraw","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"DepositLimitUpdated","inputs":[{"name":"oldLimit","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newLimit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Deposited","inputs":[{"name":"depositor","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"EmergencyGuardianChanged","inputs":[{"name":"oldGuardian","type":"address","indexed":true,"internalType":"address"},{"name":"newGuardian","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"EmergencyModeActivated","inputs":[{"name":"activator","type":"address","indexed":true,"internalType":"address"},{"name":"unlockTime","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"EmergencyWithdrawal","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Withdrawn","inputs":[{"name":"withdrawer","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"PiggyBank__Blacklisted","inputs":[]},{"type":"error","name":"PiggyBank__DepositTooHigh","inputs":[]},{"type":"error","name":"PiggyBank__DepositTooLow","inputs":[]},{"type":"error","name":"PiggyBank__EmergencyModeActive","inputs":[]},{"type":"error","name":"PiggyBank__InsufficientBalance","inputs":[]},{"type":"error","name":"PiggyBank__InvalidLockTime","inputs":[]},{"type":"error","name":"PiggyBank__InvalidUnlockTime","inputs":[]},{"type":"error","name":"PiggyBank__MaxUsersReached","inputs":[]},{"type":"error","name":"PiggyBank__NoDeposit","inputs":[]},{"type":"error","name":"PiggyBank__NotOwner","inputs":[]},{"type":"error","name":"PiggyBank__Paused","inputs":[]},{"type":"error","name":"PiggyBank__ReentrancyAttack","inputs":[]},{"type":"error","name":"PiggyBank__StillLocked","inputs":[]},{"type":"error","name":"PiggyBank__TransferFailed","inputs":[]},{"type":"error","name":"PiggyBank__Unauthorized","inputs":[]},{"type":"error","name":"PiggyBank__ZeroAddress","inputs":[]},{"type":"error","name":"PiggyBank__ZeroAmount","inputs":[]},{"type":"error","name":"PiggyBank__ZeroValue","inputs":[]}],"bytecode":{"object":"0x608060405260405161139a38038061139a833981016040819052610022916100c4565b80428111610042576040516251339b60e31b815260040160405180910390fd5b6100506309660180426100db565b8111156100705760405163fce05cc760e01b815260040160405180910390fd5b5f80546001600160a01b03191633908117825560018490556002805460ff191690556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35050610100565b5f602082840312156100d4575f80fd5b5051919050565b808201808211156100fa57634e487b7160e01b5f52601160045260245ffd5b92915050565b61128d8061010d5f395ff3fe608060405260043610610207575f3560e01c80637cf4309011610117578063b488355f1161009f578063dac6270d1161006e578063dac6270d14610603578063dfe6b5d614610617578063f2fde38b14610661578063fa78668f14610680578063fc7e286d1461069757610259565b8063b488355f14610599578063bc394350146105b8578063d0e30db0146105dc578063d9c5e6d7146105e457610259565b8063853828b6116100e6578063853828b6146104dd5780638da5cb5b146104f157806399b20eaf14610527578063a338df381461053b578063b3a7834d1461055a57610259565b80637cf430901461048c5780637d882097146104a05780638380edb7146104b55780638456cb59146104c957610259565b80633ccfd60b1161019a5780635c975abb116101695780635c975abb1461040a578063602bc62b146104235780636046462714610437578063729c3e0e1461044c57806378dee4171461047757610259565b80633ccfd60b146103b05780633f4ba83a146103c45780633ff03207146103d85780634c34a982146103ee57610259565b80631ea30fef116101d65780631ea30fef14610341578063240be9441461035b578063251c1aa3146103865780632bf6c5bc1461039b57610259565b80630905f560146102b25780630945d42c146102e757806312065fe01461030657806319262d301461032257610259565b3661025957306001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b158015610245575f80fd5b505af1158015610257573d5f803e3d5ffd5b005b60405162461bcd60e51b815260206004820152602360248201527f506967677942616e6b3a204469726563742063616c6c73206e6f7420616c6c6f6044820152621dd95960ea1b60648201526084015b60405180910390fd5b3480156102bd575f80fd5b506002546102d290600160a81b900460ff1681565b60405190151581526020015b60405180910390f35b3480156102f2575f80fd5b506102576103013660046111b2565b6106c2565b348015610311575f80fd5b50475b6040519081526020016102de565b34801561032d575f80fd5b506102d261033c3660046111c9565b6107a7565b34801561034c575f80fd5b5061031466038d7ea4c6800081565b348015610366575f80fd5b506103146103753660046111c9565b60056020525f908152604090205481565b348015610391575f80fd5b5061031460015481565b3480156103a6575f80fd5b5061031460035481565b3480156103bb575f80fd5b506102576107f9565b3480156103cf575f80fd5b50610257610941565b3480156103e3575f80fd5b506103146201518081565b3480156103f9575f80fd5b50610314683635c9adc5dea0000081565b348015610415575f80fd5b506002546102d29060ff1681565b34801561042e575f80fd5b50600154610314565b348015610442575f80fd5b5061031460085481565b348015610457575f80fd5b506103146104663660046111c9565b60066020525f908152604090205481565b348015610482575f80fd5b5061031460095481565b348015610497575f80fd5b506103146109f7565b3480156104ab575f80fd5b5061031460075481565b3480156104c0575f80fd5b506102d2610a31565b3480156104d4575f80fd5b50610257610a4f565b3480156104e8575f80fd5b50610257610b03565b3480156104fc575f80fd5b505f5461050f906001600160a01b031681565b6040516001600160a01b0390911681526020016102de565b348015610532575f80fd5b50610257610c77565b348015610546575f80fd5b506102576105553660046111c9565b610ce8565b348015610565575f80fd5b506105796105743660046111c9565b610dbb565b6040805194855260208501939093529183015260608201526080016102de565b3480156105a4575f80fd5b506103146105b33660046111c9565b610e14565b3480156105c3575f80fd5b5060025461050f9061010090046001600160a01b031681565b610257610e5e565b3480156105ef575f80fd5b506102576105fe3660046111b2565b610fda565b34801561060e575f80fd5b506103146110cc565b348015610622575f80fd5b5060075460085460095460025460408051948552602085019390935291830152600160a81b900460ff161515606082015247608082015260a0016102de565b34801561066c575f80fd5b5061025761067b3660046111c9565b6110e9565b34801561068b575f80fd5b50610314630966018081565b3480156106a2575f80fd5b506103146106b13660046111c9565b60046020525f908152604090205481565b5f546001600160a01b031633146106eb5760405162461bcd60e51b81526004016102a9906111ef565b5f546001600160a01b0316331461071557604051631a93c53360e11b815260040160405180910390fd5b66038d7ea4c6800081101561073d576040516345556f1f60e01b815260040160405180910390fd5b60075481101561075f576040516251339b60e31b815260040160405180910390fd5b60408051683635c9adc5dea0000080825260208201849052917f88d01455e50f0b0da01a455a4547346410a2fd66ffdc7241a4c280d6089c4257910160405180910390a15050565b6002545f9060ff161580156107d257506001600160a01b0382165f9081526004602052604090205415155b80156107f35750600154421015806107f35750600254600160a81b900460ff165b92915050565b60025460ff161561081d5760405163012f773760e11b815260040160405180910390fd5b5f546001600160a01b03163314610847576040516363fc43ab60e11b815260040160405180910390fd5b60015442101561086a57604051632d4f9b0560e01b815260040160405180910390fd5b475f81900361088c5760405163870817fd60e01b815260040160405180910390fd5b8060085f82825461089d9190611231565b909155505060405181815233907f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d59060200160405180910390a26040515f90339083908381818185875af1925050503d805f8114610916576040519150601f19603f3d011682016040523d82523d5f602084013e61091b565b606091505b505090508061093d576040516340d812e160e01b815260040160405180910390fd5b5050565b5f546001600160a01b0316331461096a5760405162461bcd60e51b81526004016102a9906111ef565b5f546001600160a01b0316331461099457604051631a93c53360e11b815260040160405180910390fd5b60025460ff166109b757604051631a93c53360e11b815260040160405180910390fd5b6002805460ff191690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6002545f90600160a81b900460ff161580610a1457506003544210155b15610a1e57505f90565b42600354610a2c9190611244565b905090565b5f60015442101580610a2c575050600254600160a81b900460ff1690565b5f546001600160a01b03163314610a785760405162461bcd60e51b81526004016102a9906111ef565b5f546001600160a01b03163314610aa257604051631a93c53360e11b815260040160405180910390fd5b60025460ff1615610ac65760405163012f773760e11b815260040160405180910390fd5b6002805460ff191660011790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016109ed565b60025460ff1615610b275760405163012f773760e11b815260040160405180910390fd5b600154421015610b4a57604051632d4f9b0560e01b815260040160405180910390fd5b335f9081526004602052604081205490819003610b7a5760405163e68effe160e01b815260040160405180910390fd5b335f90815260046020526040812081905560088054839290610b9d908490611231565b909155505060405181815233907f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d59060200160405180910390a26040515f90339083908381818185875af1925050503d805f8114610c16576040519150601f19603f3d011682016040523d82523d5f602084013e610c1b565b606091505b5050905080610c3d576040516340d812e160e01b815260040160405180910390fd5b60405182815233907f23d6711a1d031134a36921253c75aa59e967d38e369ac625992824315e204f20906020015b60405180910390a25050565b60025461010090046001600160a01b03163314610ca757604051631a93c53360e11b815260040160405180910390fd5b6002805460ff60a81b191690555f6003556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020016109ed565b5f546001600160a01b03163314610d115760405162461bcd60e51b81526004016102a9906111ef565b5f546001600160a01b03163314610d3b57604051631a93c53360e11b815260040160405180910390fd5b6001600160a01b038116610d6257604051631a93c53360e11b815260040160405180910390fd5b600280546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907fc0cf06c8aac34052209a818a44d0ad3d4ed78bde060b69f7a4ce24560ad51068905f90a35050565b6001600160a01b0381165f90815260046020908152604080832054600583528184205460069093529083205460015491939091421015610e0a5742600154610e039190611244565b9050610e0d565b505f5b9193509193565b6001600160a01b0381165f90815260046020526040812054683635c9adc5dea000008110610e4457505f92915050565b610e5781683635c9adc5dea00000611244565b9392505050565b60025460ff1615610e825760405163012f773760e11b815260040160405180910390fd5b5f3411610eca5760405162461bcd60e51b81526020600482015260166024820152754d757374206465706f73697420736f6d657468696e6760501b60448201526064016102a9565b66038d7ea4c68000341015610f155760405162461bcd60e51b815260206004820152601160248201527011195c1bdcda5d081d1bdbc81cdb585b1b607a1b60448201526064016102a9565b335f9081526004602052604081205490610f2f3483611231565b9050683635c9adc5dea00000811115610f805760405162461bcd60e51b8152602060048201526013602482015272088cae0dee6d2e840caf0c6cacac8e640dac2f606b1b60448201526064016102a9565b335f90815260046020526040812082905560078054349290610fa3908490611231565b909155505060405134815233907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c490602001610c6b565b60025461010090046001600160a01b0316331461100a57604051631a93c53360e11b815260040160405180910390fd5b60025460ff161561102e5760405163012f773760e11b815260040160405180910390fd5b8042811161104e576040516251339b60e31b815260040160405180910390fd5b61105c630966018042611231565b81111561107c5760405163fce05cc760e01b815260040160405180910390fd5b60028054600384905560ff60ff60a81b0119166001600160a81b0117905560405182815233907f16ea6c4a0ff7e3a4c096560a5a71632e344907cd03af0f6e655b409a61d549ef90602001610c6b565b5f60015442106110db57505f90565b42600154610a2c9190611244565b5f546001600160a01b031633146111125760405162461bcd60e51b81526004016102a9906111ef565b5f546001600160a01b0316331461113c57604051631a93c53360e11b815260040160405180910390fd5b6001600160a01b03811661116357604051631a93c53360e11b815260040160405180910390fd5b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156111c2575f80fd5b5035919050565b5f602082840312156111d9575f80fd5b81356001600160a01b0381168114610e57575f80fd5b6020808252601490820152732834b3b3bca130b7359d102737ba1037bbb732b960611b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156107f3576107f361121d565b818103818111156107f3576107f361121d56fea2646970667358221220b40737dd7e59556a572d59ae42ceb25b10310ea5ddcf3f662a816b1b1e7cc06a64736f6c63430008140033","sourceMap":"407:13001:19:-:0;;;4123:222;;;;;;;;;;;;;;;;;;:::i;:::-;4180:11;3599:15;3584:11;:30;3580:85;;3635:30;;-1:-1:-1;;;3635:30:19;;;;;;;;;;;3580:85;3693:31;928:12;3693:15;:31;:::i;:::-;3679:11;:45;3675:98;;;3745:28;;-1:-1:-1;;;3745:28:19;;;;;;;;;;;3675:98;4203:5:::1;:18:::0;;-1:-1:-1;;;;;;4203:18:19::1;4211:10;4203:18:::0;;::::1;::::0;;;4231:24;;;4265:6:::1;:14:::0;;-1:-1:-1;;4265:14:19::1;::::0;;4294:44:::1;::::0;4211:10;;4203:5;4294:44:::1;::::0;4203:5;;4294:44:::1;4123:222:::0;;407:13001;;14:184:22;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;-1:-1:-1;176:16:22;;14:184;-1:-1:-1;14:184:22:o;203:222::-;268:9;;;289:10;;;286:133;;;341:10;336:3;332:20;329:1;322:31;376:4;373:1;366:15;404:4;401:1;394:15;286:133;203:222;;;;:::o;:::-;407:13001:19;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405260043610610207575f3560e01c80637cf4309011610117578063b488355f1161009f578063dac6270d1161006e578063dac6270d14610603578063dfe6b5d614610617578063f2fde38b14610661578063fa78668f14610680578063fc7e286d1461069757610259565b8063b488355f14610599578063bc394350146105b8578063d0e30db0146105dc578063d9c5e6d7146105e457610259565b8063853828b6116100e6578063853828b6146104dd5780638da5cb5b146104f157806399b20eaf14610527578063a338df381461053b578063b3a7834d1461055a57610259565b80637cf430901461048c5780637d882097146104a05780638380edb7146104b55780638456cb59146104c957610259565b80633ccfd60b1161019a5780635c975abb116101695780635c975abb1461040a578063602bc62b146104235780636046462714610437578063729c3e0e1461044c57806378dee4171461047757610259565b80633ccfd60b146103b05780633f4ba83a146103c45780633ff03207146103d85780634c34a982146103ee57610259565b80631ea30fef116101d65780631ea30fef14610341578063240be9441461035b578063251c1aa3146103865780632bf6c5bc1461039b57610259565b80630905f560146102b25780630945d42c146102e757806312065fe01461030657806319262d301461032257610259565b3661025957306001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b158015610245575f80fd5b505af1158015610257573d5f803e3d5ffd5b005b60405162461bcd60e51b815260206004820152602360248201527f506967677942616e6b3a204469726563742063616c6c73206e6f7420616c6c6f6044820152621dd95960ea1b60648201526084015b60405180910390fd5b3480156102bd575f80fd5b506002546102d290600160a81b900460ff1681565b60405190151581526020015b60405180910390f35b3480156102f2575f80fd5b506102576103013660046111b2565b6106c2565b348015610311575f80fd5b50475b6040519081526020016102de565b34801561032d575f80fd5b506102d261033c3660046111c9565b6107a7565b34801561034c575f80fd5b5061031466038d7ea4c6800081565b348015610366575f80fd5b506103146103753660046111c9565b60056020525f908152604090205481565b348015610391575f80fd5b5061031460015481565b3480156103a6575f80fd5b5061031460035481565b3480156103bb575f80fd5b506102576107f9565b3480156103cf575f80fd5b50610257610941565b3480156103e3575f80fd5b506103146201518081565b3480156103f9575f80fd5b50610314683635c9adc5dea0000081565b348015610415575f80fd5b506002546102d29060ff1681565b34801561042e575f80fd5b50600154610314565b348015610442575f80fd5b5061031460085481565b348015610457575f80fd5b506103146104663660046111c9565b60066020525f908152604090205481565b348015610482575f80fd5b5061031460095481565b348015610497575f80fd5b506103146109f7565b3480156104ab575f80fd5b5061031460075481565b3480156104c0575f80fd5b506102d2610a31565b3480156104d4575f80fd5b50610257610a4f565b3480156104e8575f80fd5b50610257610b03565b3480156104fc575f80fd5b505f5461050f906001600160a01b031681565b6040516001600160a01b0390911681526020016102de565b348015610532575f80fd5b50610257610c77565b348015610546575f80fd5b506102576105553660046111c9565b610ce8565b348015610565575f80fd5b506105796105743660046111c9565b610dbb565b6040805194855260208501939093529183015260608201526080016102de565b3480156105a4575f80fd5b506103146105b33660046111c9565b610e14565b3480156105c3575f80fd5b5060025461050f9061010090046001600160a01b031681565b610257610e5e565b3480156105ef575f80fd5b506102576105fe3660046111b2565b610fda565b34801561060e575f80fd5b506103146110cc565b348015610622575f80fd5b5060075460085460095460025460408051948552602085019390935291830152600160a81b900460ff161515606082015247608082015260a0016102de565b34801561066c575f80fd5b5061025761067b3660046111c9565b6110e9565b34801561068b575f80fd5b50610314630966018081565b3480156106a2575f80fd5b506103146106b13660046111c9565b60046020525f908152604090205481565b5f546001600160a01b031633146106eb5760405162461bcd60e51b81526004016102a9906111ef565b5f546001600160a01b0316331461071557604051631a93c53360e11b815260040160405180910390fd5b66038d7ea4c6800081101561073d576040516345556f1f60e01b815260040160405180910390fd5b60075481101561075f576040516251339b60e31b815260040160405180910390fd5b60408051683635c9adc5dea0000080825260208201849052917f88d01455e50f0b0da01a455a4547346410a2fd66ffdc7241a4c280d6089c4257910160405180910390a15050565b6002545f9060ff161580156107d257506001600160a01b0382165f9081526004602052604090205415155b80156107f35750600154421015806107f35750600254600160a81b900460ff165b92915050565b60025460ff161561081d5760405163012f773760e11b815260040160405180910390fd5b5f546001600160a01b03163314610847576040516363fc43ab60e11b815260040160405180910390fd5b60015442101561086a57604051632d4f9b0560e01b815260040160405180910390fd5b475f81900361088c5760405163870817fd60e01b815260040160405180910390fd5b8060085f82825461089d9190611231565b909155505060405181815233907f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d59060200160405180910390a26040515f90339083908381818185875af1925050503d805f8114610916576040519150601f19603f3d011682016040523d82523d5f602084013e61091b565b606091505b505090508061093d576040516340d812e160e01b815260040160405180910390fd5b5050565b5f546001600160a01b0316331461096a5760405162461bcd60e51b81526004016102a9906111ef565b5f546001600160a01b0316331461099457604051631a93c53360e11b815260040160405180910390fd5b60025460ff166109b757604051631a93c53360e11b815260040160405180910390fd5b6002805460ff191690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6002545f90600160a81b900460ff161580610a1457506003544210155b15610a1e57505f90565b42600354610a2c9190611244565b905090565b5f60015442101580610a2c575050600254600160a81b900460ff1690565b5f546001600160a01b03163314610a785760405162461bcd60e51b81526004016102a9906111ef565b5f546001600160a01b03163314610aa257604051631a93c53360e11b815260040160405180910390fd5b60025460ff1615610ac65760405163012f773760e11b815260040160405180910390fd5b6002805460ff191660011790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016109ed565b60025460ff1615610b275760405163012f773760e11b815260040160405180910390fd5b600154421015610b4a57604051632d4f9b0560e01b815260040160405180910390fd5b335f9081526004602052604081205490819003610b7a5760405163e68effe160e01b815260040160405180910390fd5b335f90815260046020526040812081905560088054839290610b9d908490611231565b909155505060405181815233907f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d59060200160405180910390a26040515f90339083908381818185875af1925050503d805f8114610c16576040519150601f19603f3d011682016040523d82523d5f602084013e610c1b565b606091505b5050905080610c3d576040516340d812e160e01b815260040160405180910390fd5b60405182815233907f23d6711a1d031134a36921253c75aa59e967d38e369ac625992824315e204f20906020015b60405180910390a25050565b60025461010090046001600160a01b03163314610ca757604051631a93c53360e11b815260040160405180910390fd5b6002805460ff60a81b191690555f6003556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020016109ed565b5f546001600160a01b03163314610d115760405162461bcd60e51b81526004016102a9906111ef565b5f546001600160a01b03163314610d3b57604051631a93c53360e11b815260040160405180910390fd5b6001600160a01b038116610d6257604051631a93c53360e11b815260040160405180910390fd5b600280546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907fc0cf06c8aac34052209a818a44d0ad3d4ed78bde060b69f7a4ce24560ad51068905f90a35050565b6001600160a01b0381165f90815260046020908152604080832054600583528184205460069093529083205460015491939091421015610e0a5742600154610e039190611244565b9050610e0d565b505f5b9193509193565b6001600160a01b0381165f90815260046020526040812054683635c9adc5dea000008110610e4457505f92915050565b610e5781683635c9adc5dea00000611244565b9392505050565b60025460ff1615610e825760405163012f773760e11b815260040160405180910390fd5b5f3411610eca5760405162461bcd60e51b81526020600482015260166024820152754d757374206465706f73697420736f6d657468696e6760501b60448201526064016102a9565b66038d7ea4c68000341015610f155760405162461bcd60e51b815260206004820152601160248201527011195c1bdcda5d081d1bdbc81cdb585b1b607a1b60448201526064016102a9565b335f9081526004602052604081205490610f2f3483611231565b9050683635c9adc5dea00000811115610f805760405162461bcd60e51b8152602060048201526013602482015272088cae0dee6d2e840caf0c6cacac8e640dac2f606b1b60448201526064016102a9565b335f90815260046020526040812082905560078054349290610fa3908490611231565b909155505060405134815233907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c490602001610c6b565b60025461010090046001600160a01b0316331461100a57604051631a93c53360e11b815260040160405180910390fd5b60025460ff161561102e5760405163012f773760e11b815260040160405180910390fd5b8042811161104e576040516251339b60e31b815260040160405180910390fd5b61105c630966018042611231565b81111561107c5760405163fce05cc760e01b815260040160405180910390fd5b60028054600384905560ff60ff60a81b0119166001600160a81b0117905560405182815233907f16ea6c4a0ff7e3a4c096560a5a71632e344907cd03af0f6e655b409a61d549ef90602001610c6b565b5f60015442106110db57505f90565b42600154610a2c9190611244565b5f546001600160a01b031633146111125760405162461bcd60e51b81526004016102a9906111ef565b5f546001600160a01b0316331461113c57604051631a93c53360e11b815260040160405180910390fd5b6001600160a01b03811661116357604051631a93c53360e11b815260040160405180910390fd5b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156111c2575f80fd5b5035919050565b5f602082840312156111d9575f80fd5b81356001600160a01b0381168114610e57575f80fd5b6020808252601490820152732834b3b3bca130b7359d102737ba1037bbb732b960611b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156107f3576107f361121d565b818103818111156107f3576107f361121d56fea2646970667358221220b40737dd7e59556a572d59ae42ceb25b10310ea5ddcf3f662a816b1b1e7cc06a64736f6c63430008140033","sourceMap":"407:13001:19:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4496:4;-1:-1:-1;;;;;4496:12:19;;4516:9;4496:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;407:13001;4652:45;;-1:-1:-1;;;4652:45:19;;216:2:22;4652:45:19;;;198:21:22;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:22;;;338:33;388:19;;4652:45:19;;;;;;;;602:25;;;;;;;;;;-1:-1:-1;602:25:19;;;;-1:-1:-1;;;602:25:19;;;;;;;;;583:14:22;;576:22;558:41;;546:2;531:18;602:25:19;;;;;;;;9190:439;;;;;;;;;;-1:-1:-1;9190:439:19;;;;;:::i;:::-;;:::i;9755:99::-;;;;;;;;;;-1:-1:-1;9826:21:19;9755:99;;;941:25:22;;;929:2;914:18;9755:99:19;795:177:22;12083:205:19;;;;;;;;;;-1:-1:-1;12083:205:19;;;;;:::i;:::-;;:::i;798:56::-;;;;;;;;;;;;843:11;798:56;;1160:52;;;;;;;;;;-1:-1:-1;1160:52:19;;;;;:::i;:::-;;;;;;;;;;;;;;509:25;;;;;;;;;;;;;;;;633:34;;;;;;;;;;;;;;;;5788:594;;;;;;;;;;;;;:::i;7711:115::-;;;;;;;;;;;;;:::i;977:46::-;;;;;;;;;;;;1017:6;977:46;;709:55;;;;;;;;;;;;754:10;709:55;;540:18;;;;;;;;;;-1:-1:-1;540:18:19;;;;;;;;9927:91;;;;;;;;;;-1:-1:-1;10001:10:19;;9927:91;;2062:31;;;;;;;;;;;;;;;;1218:51;;;;;;;;;;-1:-1:-1;1218:51:19;;;;;:::i;:::-;;;;;;;;;;;;;;2099:33;;;;;;;;;;;;;;;;11719:234;;;;;;;;;;;;;:::i;2028:28::-;;;;;;;;;;;;;;;;10105:121;;;;;;;;;;;;;:::i;7542:113::-;;;;;;;;;;;;;:::i;6594:845::-;;;;;;;;;;;;;:::i;483:20::-;;;;;;;;;;-1:-1:-1;483:20:19;;;;-1:-1:-1;;;;;483:20:19;;;;;;-1:-1:-1;;;;;1432:32:22;;;1414:51;;1402:2;1387:18;483:20:19;1268:203:22;8961:164:19;;;;;;;;;;;;;:::i;8223:307::-;;;;;;;;;;-1:-1:-1;8223:307:19;;;;;:::i;:::-;;:::i;10290:534::-;;;;;;;;;;-1:-1:-1;10290:534:19;;;;;:::i;:::-;;:::i;:::-;;;;1707:25:22;;;1763:2;1748:18;;1741:34;;;;1791:18;;;1784:34;1849:2;1834:18;;1827:34;1694:3;1679:19;10290:534:19;1476:391:22;12368:285:19;;;;;;;;;;-1:-1:-1;12368:285:19;;;;;:::i;:::-;;:::i;564:32::-;;;;;;;;;;-1:-1:-1;564:32:19;;;;;;;-1:-1:-1;;;;;564:32:19;;;4891:647;;;:::i;8603:297::-;;;;;;;;;;-1:-1:-1;8603:297:19;;;;;:::i;:::-;;:::i;11459:189::-;;;;;;;;;;;;;:::i;10883:509::-;;;;;;;;;;-1:-1:-1;11186:13:19;;11229:16;;11277:18;;11322:13;;10883:509;;;2125:25:22;;;2181:2;2166:18;;2159:34;;;;2209:18;;;2202:34;-1:-1:-1;;;11322:13:19;;;;2279:14:22;2272:22;2267:2;2252:18;;2245:50;11364:21:19;2326:3:22;2311:19;;2304:35;2112:3;2097:19;10883:509:19;1872:473:22;7903:258:19;;;;;;;;;;-1:-1:-1;7903:258:19;;;;;:::i;:::-;;:::i;888:52::-;;;;;;;;;;;;928:12;888:52;;1111:43;;;;;;;;;;-1:-1:-1;1111:43:19;;;;;:::i;:::-;;;;;;;;;;;;;;9190:439;3057:5;;-1:-1:-1;;;;;3057:5:19;3043:10;:19;3035:52;;;;-1:-1:-1;;;3035:52:19;;;;;;;:::i;:::-;3115:5;;-1:-1:-1;;;;;3115:5:19;3101:10;:19;3097:57;;3129:25;;-1:-1:-1;;;3129:25:19;;;;;;;;;;;3097:57;843:11:::1;9277:12;:33;9273:84;;;9331:26;;-1:-1:-1::0;;;9331:26:19::1;;;;;;;;;;;9273:84;9386:13;;9371:12;:28;9367:71;;;9408:30;;-1:-1:-1::0;;;9408:30:19::1;;;;;;;;;;;9367:71;9579:43;::::0;;754:10:::1;2873:25:22::0;;;2929:2;2914:18;;2907:34;;;754:10:19;9579:43:::1;::::0;2846:18:22;9579:43:19::1;;;;;;;9263:366;9190:439:::0;:::o;12083:205::-;12177:6;;12141:4;;12177:6;;12176:7;:41;;;;-1:-1:-1;;;;;;12199:14:19;;12216:1;12199:14;;;:8;:14;;;;;;:18;;12176:41;:105;;;;;12253:10;;12234:15;:29;;:46;;;-1:-1:-1;12267:13:19;;-1:-1:-1;;;12267:13:19;;;;12234:46;12157:124;12083:205;-1:-1:-1;;12083:205:19:o;5788:594::-;2845:6;;;;2841:38;;;2860:19;;-1:-1:-1;;;2860:19:19;;;;;;;;;;;2841:38;5859:5:::1;::::0;-1:-1:-1;;;;;5859:5:19::1;5845:10;:19;5841:53;;5873:21;;-1:-1:-1::0;;;5873:21:19::1;;;;;;;;;;;5841:53;5926:10;;5908:15;:28;5904:65;;;5945:24;;-1:-1:-1::0;;;5945:24:19::1;;;;;;;;;;;5904:65;6006:21;5980:23;6041:20:::0;;;6037:56:::1;;6070:23;;-1:-1:-1::0;;;6070:23:19::1;;;;;;;;;;;6037:56;6143:15;6123:16;;:35;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;6198:38:19::1;::::0;941:25:22;;;6208:10:19::1;::::0;6198:38:::1;::::0;929:2:22;914:18;6198:38:19::1;;;;;;;6265:52;::::0;6247:12:::1;::::0;6273:10:::1;::::0;6297:15;;6247:12;6265:52;6247:12;6265:52;6297:15;6273:10;6265:52:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6246:71;;;6332:7;6327:48;;6348:27;;-1:-1:-1::0;;;6348:27:19::1;;;;;;;;;;;6327:48;5831:551;;5788:594::o:0;7711:115::-;3057:5;;-1:-1:-1;;;;;3057:5:19;3043:10;:19;3035:52;;;;-1:-1:-1;;;3035:52:19;;;;;;;:::i;:::-;3115:5;;-1:-1:-1;;;;;3115:5:19;3101:10;:19;3097:57;;3129:25;;-1:-1:-1;;;3129:25:19;;;;;;;;;;;3097:57;2940:6:::1;::::0;::::1;;2935:45;;2955:25;;-1:-1:-1::0;;;2955:25:19::1;;;;;;;;;;;2935:45;7770:6:::2;:14:::0;;-1:-1:-1;;7770:14:19::2;::::0;;7799:20:::2;::::0;7808:10:::2;1414:51:22::0;;7799:20:19::2;::::0;1402:2:22;1387:18;7799:20:19::2;;;;;;;;7711:115::o:0;11719:234::-;11803:13;;11779:7;;-1:-1:-1;;;11803:13:19;;;;11802:14;;:56;;;11839:19;;11820:15;:38;;11802:56;11798:95;;;-1:-1:-1;11881:1:19;;11719:234::o;11798:95::-;11931:15;11909:19;;:37;;;;:::i;:::-;11902:44;;11719:234;:::o;10105:121::-;10150:4;10192:10;;10173:15;:29;;:46;;;-1:-1:-1;;10206:13:19;;-1:-1:-1;;;10206:13:19;;;;;10105:121::o;7542:113::-;3057:5;;-1:-1:-1;;;;;3057:5:19;3043:10;:19;3035:52;;;;-1:-1:-1;;;3035:52:19;;;;;;;:::i;:::-;3115:5;;-1:-1:-1;;;;;3115:5:19;3101:10;:19;3097:57;;3129:25;;-1:-1:-1;;;3129:25:19;;;;;;;;;;;3097:57;2845:6:::1;::::0;::::1;;2841:38;;;2860:19;;-1:-1:-1::0;;;2860:19:19::1;;;;;;;;;;;2841:38;7602:6:::2;:13:::0;;-1:-1:-1;;7602:13:19::2;7611:4;7602:13;::::0;;7630:18:::2;::::0;7637:10:::2;1414:51:22::0;;7630:18:19::2;::::0;1402:2:22;1387:18;7630::19::2;1268:203:22::0;6594:845:19;2845:6;;;;2841:38;;;2860:19;;-1:-1:-1;;;2860:19:19;;;;;;;;;;;2841:38;6690:10:::1;;6672:15;:28;6668:65;;;6709:24;;-1:-1:-1::0;;;6709:24:19::1;;;;;;;;;;;6668:65;6775:10;6744:19;6766:20:::0;;;:8:::1;:20;::::0;;;;;;6800:16;;;6796:51:::1;;6825:22;;-1:-1:-1::0;;;6825:22:19::1;;;;;;;;;;;6796:51;6923:10;6937:1;6914:20:::0;;;:8:::1;:20;::::0;;;;:24;;;6948:16:::1;:31:::0;;6968:11;;6937:1;6948:31:::1;::::0;6968:11;;6948:31:::1;:::i;:::-;::::0;;;-1:-1:-1;;7058:34:19::1;::::0;941:25:22;;;7068:10:19::1;::::0;7058:34:::1;::::0;929:2:22;914:18;7058:34:19::1;;;;;;;7180:48;::::0;7162:12:::1;::::0;7188:10:::1;::::0;7212:11;;7162:12;7180:48;7162:12;7180:48;7212:11;7188:10;7180:48:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7161:67;;;7243:7;7238:48;;7259:27;;-1:-1:-1::0;;;7259:27:19::1;;;;;;;;;;;7238:48;7388:44;::::0;941:25:22;;;7408:10:19::1;::::0;7388:44:::1;::::0;929:2:22;914:18;7388:44:19::1;;;;;;;;6640:799;;6594:845::o:0;8961:164::-;3230:17;;;;;-1:-1:-1;;;;;3230:17:19;3216:10;:31;3212:69;;3256:25;;-1:-1:-1;;;3256:25:19;;;;;;;;;;;3212:69;9028:13:::1;:21:::0;;-1:-1:-1;;;;9028:21:19::1;::::0;;-1:-1:-1;9059:19:19::1;:23:::0;9098:20:::1;::::0;9107:10:::1;1414:51:22::0;;9098:20:19::1;::::0;1402:2:22;1387:18;9098:20:19::1;1268:203:22::0;8223:307:19;3057:5;;-1:-1:-1;;;;;3057:5:19;3043:10;:19;3035:52;;;;-1:-1:-1;;;3035:52:19;;;;;;;:::i;:::-;3115:5;;-1:-1:-1;;;;;3115:5:19;3101:10;:19;3097:57;;3129:25;;-1:-1:-1;;;3129:25:19;;;;;;;;;;;3097:57;-1:-1:-1;;;;;8307:25:19;::::1;8303:63;;8341:25;;-1:-1:-1::0;;;8341:25:19::1;;;;;;;;;;;8303:63;8399:17;::::0;;-1:-1:-1;;;;;8426:31:19;;::::1;8399:17;8426:31:::0;;::::1;-1:-1:-1::0;;;;;;8426:31:19;::::1;;::::0;;;8473:50:::1;::::0;8399:17;;;::::1;;::::0;;;8473:50:::1;::::0;8377:19:::1;::::0;8473:50:::1;8293:237;8223:307:::0;:::o;10290:534::-;-1:-1:-1;;;;;10557:14:19;;10406:19;10557:14;;;:8;:14;;;;;;;;;10593:17;:23;;;;;;10634:16;:22;;;;;;;10689:10;;10557:14;;10634:22;;10671:15;:28;10667:151;;;10744:15;10731:10;;:28;;;;:::i;:::-;10715:44;;10667:151;;;-1:-1:-1;10806:1:19;10667:151;10290:534;;;;;:::o;12368:285::-;-1:-1:-1;;;;;12496:14:19;;12452:7;12496:14;;;:8;:14;;;;;;754:10;12524:36;;12520:75;;-1:-1:-1;12583:1:19;;12368:285;-1:-1:-1;;12368:285:19:o;12520:75::-;12611:35;12632:14;754:10;12611:35;:::i;:::-;12604:42;12368:285;-1:-1:-1;;;12368:285:19:o;4891:647::-;2845:6;;;;2841:38;;;2860:19;;-1:-1:-1;;;2860:19:19;;;;;;;;;;;2841:38;4989:1:::1;4977:9;:13;4969:48;;;::::0;-1:-1:-1;;;4969:48:19;;3759:2:22;4969:48:19::1;::::0;::::1;3741:21:22::0;3798:2;3778:18;;;3771:30;-1:-1:-1;;;3817:18:22;;;3810:52;3879:18;;4969:48:19::1;3557:346:22::0;4969:48:19::1;843:11;5035:9;:31;;5027:61;;;::::0;-1:-1:-1;;;5027:61:19;;4110:2:22;5027:61:19::1;::::0;::::1;4092:21:22::0;4149:2;4129:18;;;4122:30;-1:-1:-1;;;4168:18:22;;;4161:47;4225:18;;5027:61:19::1;3908:341:22::0;5027:61:19::1;5130:10;5099:19;5121:20:::0;;;:8:::1;:20;::::0;;;;;;5177:23:::1;5191:9;5121:20:::0;5177:23:::1;:::i;:::-;5151:49;;754:10;5219:15;:37;;5211:69;;;::::0;-1:-1:-1;;;5211:69:19;;4456:2:22;5211:69:19::1;::::0;::::1;4438:21:22::0;4495:2;4475:18;;;4468:30;-1:-1:-1;;;4514:18:22;;;4507:49;4573:18;;5211:69:19::1;4254:343:22::0;5211:69:19::1;5356:10;5347:20;::::0;;;:8:::1;:20;::::0;;;;:38;;;5395:13:::1;:26:::0;;5412:9:::1;::::0;5347:20;5395:26:::1;::::0;5412:9;;5395:26:::1;:::i;:::-;::::0;;;-1:-1:-1;;5499:32:19::1;::::0;5521:9:::1;941:25:22::0;;5509:10:19::1;::::0;5499:32:::1;::::0;929:2:22;914:18;5499:32:19::1;795:177:22::0;8603:297:19;3230:17;;;;;-1:-1:-1;;;;;3230:17:19;3216:10;:31;3212:69;;3256:25;;-1:-1:-1;;;3256:25:19;;;;;;;;;;;3212:69;2845:6:::1;::::0;::::1;;2841:38;;;2860:19;;-1:-1:-1::0;;;2860:19:19::1;;;;;;;;;;;2841:38;8721:11:::2;3599:15;3584:11;:30;3580:85;;3635:30;;-1:-1:-1::0;;;3635:30:19::2;;;;;;;;;;;3580:85;3693:31;928:12;3693:15;:31;:::i;:::-;3679:11;:45;3675:98;;;3745:28;;-1:-1:-1::0;;;3745:28:19::2;;;;;;;;;;;3675:98;8744:13:::3;:20:::0;;8774:19:::3;:33:::0;;;-1:-1:-1;;;;;;8817:13:19;-1:-1:-1;;;;;8817:13:19;;;8846:47:::3;::::0;941:25:22;;;8869:10:19::3;::::0;8846:47:::3;::::0;929:2:22;914:18;8846:47:19::3;795:177:22::0;11459:189:19;11510:7;11552:10;;11533:15;:29;11529:68;;-1:-1:-1;11585:1:19;;11459:189::o;11529:68::-;11626:15;11613:10;;:28;;;;:::i;7903:258::-;3057:5;;-1:-1:-1;;;;;3057:5:19;3043:10;:19;3035:52;;;;-1:-1:-1;;;3035:52:19;;;;;;;:::i;:::-;3115:5;;-1:-1:-1;;;;;3115:5:19;3101:10;:19;3097:57;;3129:25;;-1:-1:-1;;;3129:25:19;;;;;;;;;;;3097:57;-1:-1:-1;;;;;7981:22:19;::::1;7977:60;;8012:25;;-1:-1:-1::0;;;8012:25:19::1;;;;;;;;;;;7977:60;8048:16;8067:5:::0;;-1:-1:-1;;;;;8082:16:19;;::::1;-1:-1:-1::0;;;;;;8082:16:19;::::1;::::0;::::1;::::0;;8114:40:::1;::::0;8067:5;;;::::1;::::0;;;8114:40:::1;::::0;8048:16;8114:40:::1;7967:194;7903:258:::0;:::o;610:180:22:-;669:6;722:2;710:9;701:7;697:23;693:32;690:52;;;738:1;735;728:12;690:52;-1:-1:-1;761:23:22;;610:180;-1:-1:-1;610:180:22:o;977:286::-;1036:6;1089:2;1077:9;1068:7;1064:23;1060:32;1057:52;;;1105:1;1102;1095:12;1057:52;1131:23;;-1:-1:-1;;;;;1183:31:22;;1173:42;;1163:70;;1229:1;1226;1219:12;2350:344;2552:2;2534:21;;;2591:2;2571:18;;;2564:30;-1:-1:-1;;;2625:2:22;2610:18;;2603:50;2685:2;2670:18;;2350:344::o;2952:127::-;3013:10;3008:3;3004:20;3001:1;2994:31;3044:4;3041:1;3034:15;3068:4;3065:1;3058:15;3084:125;3149:9;;;3170:10;;;3167:36;;;3183:18;;:::i;3424:128::-;3491:9;;;3512:11;;;3509:37;;;3526:18;;:::i","linkReferences":{}},"methodIdentifiers":{"MAX_DEPOSIT_AMOUNT()":"4c34a982","MAX_LOCK_TIME()":"fa78668f","MIN_DEPOSIT_AMOUNT()":"1ea30fef","MIN_LOCK_TIME()":"3ff03207","activateEmergencyMode(uint256)":"d9c5e6d7","canWithdraw(address)":"19262d30","deactivateEmergencyMode()":"99b20eaf","deposit()":"d0e30db0","depositTimestamps(address)":"240be944","deposits(address)":"fc7e286d","emergencyGuardian()":"bc394350","emergencyMode()":"0905f560","emergencyUnlockTime()":"2bf6c5bc","getBalance()":"12065fe0","getContractStats()":"dfe6b5d6","getEmergencyTimeRemaining()":"7cf43090","getMaxAdditionalDeposit(address)":"b488355f","getTimeRemaining()":"dac6270d","getUnlockTime()":"602bc62b","getUserDepositInfo(address)":"b3a7834d","isUnlocked()":"8380edb7","numberOfDepositors()":"78dee417","owner()":"8da5cb5b","pause()":"8456cb59","paused()":"5c975abb","setEmergencyGuardian(address)":"a338df38","totalDeposits()":"7d882097","totalWithdrawals()":"60464627","transferOwnership(address)":"f2fde38b","unlockTime()":"251c1aa3","unpause()":"3f4ba83a","updateMaxDepositAmount(uint256)":"0945d42c","userDepositCount(address)":"729c3e0e","withdraw()":"3ccfd60b","withdrawAll()":"853828b6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_unlockTime\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"PiggyBank__Blacklisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PiggyBank__DepositTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PiggyBank__DepositTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PiggyBank__EmergencyModeActive\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PiggyBank__InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PiggyBank__InvalidLockTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PiggyBank__InvalidUnlockTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PiggyBank__MaxUsersReached\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PiggyBank__NoDeposit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PiggyBank__NotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PiggyBank__Paused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PiggyBank__ReentrancyAttack\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PiggyBank__StillLocked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PiggyBank__TransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PiggyBank__Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PiggyBank__ZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PiggyBank__ZeroAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PiggyBank__ZeroValue\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldLimit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newLimit\",\"type\":\"uint256\"}],\"name\":\"DepositLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldGuardian\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newGuardian\",\"type\":\"address\"}],\"name\":\"EmergencyGuardianChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"activator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"unlockTime\",\"type\":\"uint256\"}],\"name\":\"EmergencyModeActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EmergencyWithdrawal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"MAX_DEPOSIT_AMOUNT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_LOCK_TIME\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_DEPOSIT_AMOUNT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_LOCK_TIME\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_unlockTime\",\"type\":\"uint256\"}],\"name\":\"activateEmergencyMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"canWithdraw\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deactivateEmergencyMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"depositTimestamps\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"deposits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"emergencyGuardian\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"emergencyMode\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"emergencyUnlockTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getContractStats\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalDeposits_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalWithdrawals_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"numberOfDepositors_\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"emergencyMode_\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"contractBalance_\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEmergencyTimeRemaining\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getMaxAdditionalDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTimeRemaining\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUnlockTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserDepositInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"userDeposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeRemaining\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isUnlocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"numberOfDepositors\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newGuardian\",\"type\":\"address\"}],\"name\":\"setEmergencyGuardian\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalDeposits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalWithdrawals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unlockTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newMaxAmount\",\"type\":\"uint256\"}],\"name\":\"updateMaxDepositAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"userDepositCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"custom:security\":\"Features include reentrancy protection, access controls, deposit limits, and emergency functions\",\"details\":\"Users can deposit ETH and withdraw only after a specified unlock time with advanced security features\",\"kind\":\"dev\",\"methods\":{\"activateEmergencyMode(uint256)\":{\"details\":\"Activates emergency mode with timelock\"},\"canWithdraw(address)\":{\"details\":\"Checks if user can withdraw (gas optimized)\"},\"deactivateEmergencyMode()\":{\"details\":\"Deactivates emergency mode\"},\"deposit()\":{\"custom:gas\":\"Optimized to reduce gas costs\",\"details\":\"Deposits ETH into the piggy bank with enhanced security\"},\"getBalance()\":{\"details\":\"Gets contract balance with gas optimization\"},\"getContractStats()\":{\"details\":\"Gets contract statistics\"},\"getEmergencyTimeRemaining()\":{\"details\":\"Gets emergency unlock time remaining\"},\"getMaxAdditionalDeposit(address)\":{\"details\":\"Gets user's maximum additional deposit amount\"},\"getTimeRemaining()\":{\"details\":\"Gets time remaining until unlock\"},\"getUnlockTime()\":{\"details\":\"Gets unlock time with gas optimization\"},\"getUserDepositInfo(address)\":{\"details\":\"Gets user deposit information\"},\"isUnlocked()\":{\"details\":\"Checks if contract is unlocked with gas optimization\"},\"pause()\":{\"details\":\"Pauses the contract\"},\"setEmergencyGuardian(address)\":{\"details\":\"Sets the emergency guardian\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership with enhanced security\"},\"unpause()\":{\"details\":\"Unpauses the contract\"},\"updateMaxDepositAmount(uint256)\":{\"details\":\"Updates maximum deposit amount\"},\"withdrawAll()\":{\"custom:security\":\"Requires emergency mode to be active\",\"details\":\"Emergency withdrawal function for guardians\"}},\"title\":\"PiggyBank\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"withdraw()\":{\"notice\":\"Owner withdraws entire contract balance after unlock\"}},\"notice\":\"A time-locked savings contract for disciplined ETH deposits with enhanced security\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/PiggyBank.sol\":\"PiggyBank\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"src/PiggyBank.sol\":{\"keccak256\":\"0x7f872fc53bc934074bfffccf4204f76f66a8a51fc252e8a2e7ce97f806690ea1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fd6a936a003deea234e6d45971529963c847614be170b5387d22c6c52d54314\",\"dweb:/ipfs/QmQsDEV4j18P4RQt5onsGdG3fAAqi9gm29CEgJnowvab8r\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"_unlockTime","type":"uint256"}],"stateMutability":"payable","type":"constructor"},{"inputs":[],"type":"error","name":"PiggyBank__Blacklisted"},{"inputs":[],"type":"error","name":"PiggyBank__DepositTooHigh"},{"inputs":[],"type":"error","name":"PiggyBank__DepositTooLow"},{"inputs":[],"type":"error","name":"PiggyBank__EmergencyModeActive"},{"inputs":[],"type":"error","name":"PiggyBank__InsufficientBalance"},{"inputs":[],"type":"error","name":"PiggyBank__InvalidLockTime"},{"inputs":[],"type":"error","name":"PiggyBank__InvalidUnlockTime"},{"inputs":[],"type":"error","name":"PiggyBank__MaxUsersReached"},{"inputs":[],"type":"error","name":"PiggyBank__NoDeposit"},{"inputs":[],"type":"error","name":"PiggyBank__NotOwner"},{"inputs":[],"type":"error","name":"PiggyBank__Paused"},{"inputs":[],"type":"error","name":"PiggyBank__ReentrancyAttack"},{"inputs":[],"type":"error","name":"PiggyBank__StillLocked"},{"inputs":[],"type":"error","name":"PiggyBank__TransferFailed"},{"inputs":[],"type":"error","name":"PiggyBank__Unauthorized"},{"inputs":[],"type":"error","name":"PiggyBank__ZeroAddress"},{"inputs":[],"type":"error","name":"PiggyBank__ZeroAmount"},{"inputs":[],"type":"error","name":"PiggyBank__ZeroValue"},{"inputs":[{"internalType":"uint256","name":"oldLimit","type":"uint256","indexed":false},{"internalType":"uint256","name":"newLimit","type":"uint256","indexed":false}],"type":"event","name":"DepositLimitUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"depositor","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Deposited","anonymous":false},{"inputs":[{"internalType":"address","name":"oldGuardian","type":"address","indexed":true},{"internalType":"address","name":"newGuardian","type":"address","indexed":true}],"type":"event","name":"EmergencyGuardianChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"activator","type":"address","indexed":true},{"internalType":"uint256","name":"unlockTime","type":"uint256","indexed":false}],"type":"event","name":"EmergencyModeActivated","anonymous":false},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"EmergencyWithdrawal","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[{"internalType":"address","name":"withdrawer","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Withdrawn","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_DEPOSIT_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_LOCK_TIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MIN_DEPOSIT_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MIN_LOCK_TIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_unlockTime","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"activateEmergencyMode"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"stateMutability":"view","type":"function","name":"canWithdraw","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"deactivateEmergencyMode"},{"inputs":[],"stateMutability":"payable","type":"function","name":"deposit"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"depositTimestamps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"deposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"emergencyGuardian","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"emergencyMode","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"emergencyUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getContractStats","outputs":[{"internalType":"uint256","name":"totalDeposits_","type":"uint256"},{"internalType":"uint256","name":"totalWithdrawals_","type":"uint256"},{"internalType":"uint256","name":"numberOfDepositors_","type":"uint256"},{"internalType":"bool","name":"emergencyMode_","type":"bool"},{"internalType":"uint256","name":"contractBalance_","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getEmergencyTimeRemaining","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"stateMutability":"view","type":"function","name":"getMaxAdditionalDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getTimeRemaining","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"stateMutability":"view","type":"function","name":"getUserDepositInfo","outputs":[{"internalType":"uint256","name":"userDeposit","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"uint256","name":"timeRemaining","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isUnlocked","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"numberOfDepositors","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newGuardian","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setEmergencyGuardian"},{"inputs":[],"stateMutability":"view","type":"function","name":"totalDeposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalWithdrawals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"unlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"uint256","name":"newMaxAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"updateMaxDepositAmount"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"userDepositCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"withdraw"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"withdrawAll"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"activateEmergencyMode(uint256)":{"details":"Activates emergency mode with timelock"},"canWithdraw(address)":{"details":"Checks if user can withdraw (gas optimized)"},"deactivateEmergencyMode()":{"details":"Deactivates emergency mode"},"deposit()":{"custom:gas":"Optimized to reduce gas costs","details":"Deposits ETH into the piggy bank with enhanced security"},"getBalance()":{"details":"Gets contract balance with gas optimization"},"getContractStats()":{"details":"Gets contract statistics"},"getEmergencyTimeRemaining()":{"details":"Gets emergency unlock time remaining"},"getMaxAdditionalDeposit(address)":{"details":"Gets user's maximum additional deposit amount"},"getTimeRemaining()":{"details":"Gets time remaining until unlock"},"getUnlockTime()":{"details":"Gets unlock time with gas optimization"},"getUserDepositInfo(address)":{"details":"Gets user deposit information"},"isUnlocked()":{"details":"Checks if contract is unlocked with gas optimization"},"pause()":{"details":"Pauses the contract"},"setEmergencyGuardian(address)":{"details":"Sets the emergency guardian"},"transferOwnership(address)":{"details":"Transfers ownership with enhanced security"},"unpause()":{"details":"Unpauses the contract"},"updateMaxDepositAmount(uint256)":{"details":"Updates maximum deposit amount"},"withdrawAll()":{"custom:security":"Requires emergency mode to be active","details":"Emergency withdrawal function for guardians"}},"version":1},"userdoc":{"kind":"user","methods":{"withdraw()":{"notice":"Owner withdraws entire contract balance after unlock"}},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/PiggyBank.sol":"PiggyBank"},"evmVersion":"shanghai","libraries":{}},"sources":{"src/PiggyBank.sol":{"keccak256":"0x7f872fc53bc934074bfffccf4204f76f66a8a51fc252e8a2e7ce97f806690ea1","urls":["bzz-raw://5fd6a936a003deea234e6d45971529963c847614be170b5387d22c6c52d54314","dweb:/ipfs/QmQsDEV4j18P4RQt5onsGdG3fAAqi9gm29CEgJnowvab8r"],"license":"MIT"}},"version":1},"id":19} \ No newline at end of file diff --git a/out/PiggyBank.t.sol/PiggyBankTest.json b/out/PiggyBank.t.sol/PiggyBankTest.json index 04d916f..413660d 100644 --- a/out/PiggyBank.t.sol/PiggyBankTest.json +++ b/out/PiggyBank.t.sol/PiggyBankTest.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSelectors","inputs":[],"outputs":[{"name":"excludedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"piggyBank","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract PiggyBank"}],"stateMutability":"view"},{"type":"function","name":"reentrancyAttacker","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ReentrancyAttacker"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzArtifactSelector[]","components":[{"name":"artifact","type":"string","internalType":"string"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testDeposit_EventEmission","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testDeposit_GasSnapshot","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testDeposit_MultipleUsers","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testDeposit_PausedContract_Reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testDeposit_Success","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testDeposit_ZeroAmount_Reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testEdgeCase_MaxUint256Deposit","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testEdgeCase_MultipleSmallDeposits","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testEdgeCase_OverWithdraw","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testGetBalance_EmptyContract","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testGetBalance_WithDeposits","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testGetUnlockTime","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testGetUnlockTime_AfterDeployment","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testIntegration_EventSequence","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testIntegration_FullDepositWithdrawFlow","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testIsUnlocked_AfterUnlock","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testIsUnlocked_BeforeUnlock","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testMultiUserFixture","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testOwnership_EventEmission","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testOwnership_InitialOwner","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testOwnership_NonOwnerTransfer_Reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testOwnership_Transfer","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testOwnership_TransferToZeroAddress_Reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPause_AlreadyPaused_Reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPause_EventEmission","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPause_InitialState","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPause_NonOwner_Reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPause_Success","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testReentrancy_ExternalCallProtection","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTimeLock_ExactUnlockTime","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTimeLock_JustBeforeUnlock","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTimeLock_LongAfterUnlock","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testUnpause_EventEmission","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testUnpause_NonOwner_Reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testUnpause_NotPaused_Reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testUnpause_Success","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testWithdraw_BeforeUnlock_Reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testWithdraw_EmptyContract_Reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testWithdraw_EventEmission","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testWithdraw_GasSnapshot","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testWithdraw_NotOwner_Reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testWithdraw_PausedContract_Reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testWithdraw_Success","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Deposited","inputs":[{"name":"depositor","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Withdrawn","inputs":[{"name":"withdrawer","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x6080604052600c8054600160ff199182168117909255601f8054909116909117905534801561002c575f80fd5b506180fa806200003b5f395ff3fe608060405234801562000010575f80fd5b5060043610620003c7575f3560e01c806366d9a9a011620001fb5780639e448c67116200011f578063ba414fa611620000b7578063e20c9f711162000083578063e20c9f71146200067b578063e90b559c1462000685578063f0dde3ec146200068f578063fa7626d41462000699575f80fd5b8063ba414fa61462000642578063c8b96d44146200065d578063ca05fdd71462000667578063dc5984c21462000671575f80fd5b8063b3c3225a11620000f7578063b3c3225a146200060b578063b5508aa91462000615578063b7d5d4c0146200061f578063b878e85f1462000638575f80fd5b80639e448c6714620005ed5780639fc77f1d14620005f7578063b0464fdc1462000601575f80fd5b806385226c811162000193578063916a17c6116200016b578063916a17c614620005b657806391de35c714620005cf5780639872fe2914620005d957806399c2758314620005e3575f80fd5b806385226c8114620005895780638570667114620005a2578063864fd75614620005ac575f80fd5b80637787b45511620001d35780637787b45514620005615780637e6bc79b146200056b57806384108d921462000575578063847b9869146200057f575f80fd5b806366d9a9a014620005345780636fc908c5146200054d57806372d9e9781462000557575f80fd5b80632799b79511620002ef57806333bb13cd11620002875780635104ebf411620002535780635104ebf4146200050c578063556ea933146200051657806357cd4873146200052057806358a07d23146200052a575f80fd5b806333bb13cd14620004e45780633517377d14620004ee5780633e5e3c2314620004f85780633f7286f41462000502575f80fd5b80632b78942511620002c75780632b78942514620004bc5780632e35021914620004c657806330f9c00614620004d057806331e80b5814620004da575f80fd5b80632799b795146200048f5780632a5a1be714620004995780632ade388014620004a3575f80fd5b806317f9fd7811620003635780631d4349ae116200033b5780631d4349ae14620004585780631dabed0514620004625780631ed7831c146200046c578063259cb21e1462000485575f80fd5b806317f9fd78146200043a57806319af867e14620004445780631a47df23146200044e575f80fd5b80630a9254e411620003a35780630a9254e4146200041257806311af395a146200041c57806313a710d3146200042657806315cdd99d1462000430575f80fd5b8062ce984f14620003cb5780630487fe5714620003d75780630577a35614620003e1575b5f80fd5b620003d5620006a7565b005b620003d562000870565b602554620003f5906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b620003d5620009a3565b620003d562000d05565b620003d562000f37565b620003d56200104d565b620003d562001280565b620003d562001304565b620003d562001392565b620003d562001525565b620003d562001724565b6200047662001907565b60405162000409919062007000565b620003d562001969565b620003d562001cbe565b620003d562001f44565b620004ad620021e4565b60405162000409919062007093565b620003d56200232c565b620003d562002459565b620003d5620025bf565b620003d5620026f8565b620003d5620028e4565b620003d562002b5b565b6200047662002cbd565b6200047662002d1d565b620003d562002d7d565b620003d562002f83565b620003d562003aad565b620003d562003b03565b6200053e62003e2f565b6040516200040991906200719d565b620003d562003f9f565b620003d5620040a1565b620003d5620040f7565b620003d562004316565b620003d5620043ea565b620003d562004550565b6200059362004676565b60405162000409919062007226565b620003d56200474b565b620003d562004f43565b620005c0620051f0565b6040516200040991906200728a565b620003d5620052d5565b620003d562005360565b620003d5620056c6565b620003d562005945565b620003d562005aa7565b620005c062005c03565b620003d562005ce8565b6200059362005e88565b601f54620003f59061010090046001600160a01b031681565b620003d562005f5d565b6200064c6200601e565b604051901515815260200162000409565b620003d5620060db565b620003d562006243565b620003d562006927565b6200047662006a2c565b620003d562006a8c565b620003d562006d4b565b601f546200064c9060ff1681565b60215460405163c88a5e6d60e01b81525f19915f80516020620080a58339815191529163c88a5e6d91620006ec916001600160a01b03909116908590600401620072fb565b5f604051808303815f87803b15801562000704575f80fd5b505af115801562000717573d5f803e3d5ffd5b505060215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b1580156200076c575f80fd5b505af11580156200077f573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b158015620007d2575f80fd5b505af1158015620007e5573d5f803e3d5ffd5b50505050506200086d601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000840573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000866919062007314565b8262006dcf565b50565b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b158015620008c1575f80fd5b505af1158015620008d4573d5f803e3d5ffd5b505050505f5a9050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562000933575f80fd5b505af115801562000946573d5f803e3d5ffd5b50505050505f5a62000959908362007340565b905062000990604051806040016040528060118152602001702232b837b9b4ba1033b0b9903ab9b2b21d60791b8152508262006e3e565b6200099f81620186a062006e87565b5050565b602080546001600160a01b031990811660019081179092556021805482166002179055602280548216600317905560238054821660049081179091556024805490921660051790915560405163c88a5e6d60e01b81525f80516020620080a58339815191529263c88a5e6d9262000a269268056bc75e2d631000009101620072fb565b5f604051808303815f87803b15801562000a3e575f80fd5b505af115801562000a51573d5f803e3d5ffd5b505060215460405163c88a5e6d60e01b81525f80516020620080a5833981519152935063c88a5e6d925062000a9e916001600160a01b03169068056bc75e2d6310000090600401620072fb565b5f604051808303815f87803b15801562000ab6575f80fd5b505af115801562000ac9573d5f803e3d5ffd5b505060225460405163c88a5e6d60e01b81525f80516020620080a5833981519152935063c88a5e6d925062000b16916001600160a01b03169068056bc75e2d6310000090600401620072fb565b5f604051808303815f87803b15801562000b2e575f80fd5b505af115801562000b41573d5f803e3d5ffd5b505060235460405163c88a5e6d60e01b81525f80516020620080a5833981519152935063c88a5e6d925062000b8e916001600160a01b03169068056bc75e2d6310000090600401620072fb565b5f604051808303815f87803b15801562000ba6575f80fd5b505af115801562000bb9573d5f803e3d5ffd5b505060245460405163c88a5e6d60e01b81525f80516020620080a5833981519152935063c88a5e6d925062000c06916001600160a01b03169068056bc75e2d6310000090600401620072fb565b5f604051808303815f87803b15801562000c1e575f80fd5b505af115801562000c31573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b15801562000c86575f80fd5b505af115801562000c99573d5f803e3d5ffd5b50505050620151804262000cae91906200735c565b60405162000cbc9062006fe4565b908152602001604051809103905ff08015801562000cdc573d5f803e3d5ffd5b50601f60016101000a8154816001600160a01b0302191690836001600160a01b03160217905550565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562000d56575f80fd5b505af115801562000d69573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562000dc4575f80fd5b505af115801562000dd7573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152935063ca669fa7925060240190505b5f604051808303815f87803b15801562000e2f575f80fd5b505af115801562000e42573d5f803e3d5ffd5b505060405163f28dceb360e01b815260206004820152601760248201527f506967677942616e6b3a205374696c6c206c6f636b656400000000000000000060448201525f80516020620080a5833981519152925063f28dceb391506064015b5f604051808303815f87803b15801562000eb9575f80fd5b505af115801562000ecc573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000f1e575f80fd5b505af115801562000f31573d5f803e3d5ffd5b50505050565b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562000f88575f80fd5b505af115801562000f9b573d5f803e3d5ffd5b505060405163f28dceb360e01b81525f80516020620080a5833981519152925063f28dceb3915062000fd09060040162007372565b5f604051808303815f87803b15801562000fe8575f80fd5b505af115801562000ffb573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000f1e575f80fd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b1580156200109e575f80fd5b505af1158015620010b1573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562001103575f80fd5b505af115801562001116573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b1580156200116b575f80fd5b505af11580156200117e573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f80516020620080a5833981519152925063491cc7c291506084015f604051808303815f87803b158015620011db575f80fd5b505af1158015620011ee573d5f803e3d5ffd5b5050602080546040516001600160a01b0390911681527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa935001905060405180910390a1601f60019054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000f1e575f80fd5b62001302601f60019054906101000a90046001600160a01b03166001600160a01b0316638380edb76040518163ffffffff1660e01b8152600401602060405180830381865afa158015620012d6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620012fc919062007395565b62006ec9565b565b62001302601f60019054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200135a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620013809190620073bd565b6020546001600160a01b031662006f29565b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b158015620013e3575f80fd5b505af1158015620013f6573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f80516020620080a5833981519152925063491cc7c291506084015f604051808303815f87803b15801562001453575f80fd5b505af115801562001466573d5f803e3d5ffd5b5050602154604051670de0b6b3a764000081526001600160a01b0390911692507f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4915060200160405180910390a2601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b1580156200150b575f80fd5b505af11580156200151e573d5f803e3d5ffd5b5050505050565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562001576575f80fd5b505af115801562001589573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f80516020620080a5833981519152925063491cc7c291506084015f604051808303815f87803b158015620015e6575f80fd5b505af1158015620015f9573d5f803e3d5ffd5b5050602080546040516001600160a01b0390911681527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258935001905060405180910390a1601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156200168b575f80fd5b505af11580156200169e573d5f803e3d5ffd5b5050505062001302601f60019054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620016f8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200171e919062007395565b62006f86565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562001775575f80fd5b505af115801562001788573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b158015620017da575f80fd5b505af1158015620017ed573d5f803e3d5ffd5b505060215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b15801562001842575f80fd5b505af115801562001855573d5f803e3d5ffd5b505060405163f28dceb360e01b81525f80516020620080a5833981519152925063f28dceb391506200188a9060040162007372565b5f604051808303815f87803b158015620018a2575f80fd5b505af1158015620018b5573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000f1e575f80fd5b606060168054806020026020016040519081016040528092919081815260200182805480156200195f57602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831162001940575b5050505050905090565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b158015620019ba575f80fd5b505af1158015620019cd573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562001a28575f80fd5b505af115801562001a3b573d5f803e3d5ffd5b50505050505f80516020620080a58339815191526001600160a01b031663e5d6bf02620151804262001a6e91906200735c565b62001a7b9060016200735c565b6040518263ffffffff1660e01b815260040162001a9a91815260200190565b5f604051808303815f87803b15801562001ab2575f80fd5b505af115801562001ac5573d5f803e3d5ffd5b505050505f601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001b1c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001b42919062007314565b60205460405163ca669fa760e01b81526001600160a01b03909116600482018190529192509031905f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562001b9b575f80fd5b505af115801562001bae573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562001c00575f80fd5b505af115801562001c13573d5f803e3d5ffd5b5050505062001c9a601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001c6d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001c93919062007314565b5f62006dcf565b6020546200099f906001600160a01b03163162001cb884846200735c565b62006dcf565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562001d0f575f80fd5b505af115801562001d22573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562001d7d575f80fd5b505af115801562001d90573d5f803e3d5ffd5b50505050505f80516020620080a58339815191526001600160a01b031663e5d6bf02620151804262001dc391906200735c565b62001dd3906301e133806200735c565b6040518263ffffffff1660e01b815260040162001df291815260200190565b5f604051808303815f87803b15801562001e0a575f80fd5b505af115801562001e1d573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b15801562001e72575f80fd5b505af115801562001e85573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562001ed7575f80fd5b505af115801562001eea573d5f803e3d5ffd5b5050505062001302601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001c6d573d5f803e3d5ffd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562001f95575f80fd5b505af115801562001fa8573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562001ffa575f80fd5b505af11580156200200d573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b15801562002062575f80fd5b505af115801562002075573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f80516020620080a5833981519152925063491cc7c291506084015f604051808303815f87803b158015620020d2575f80fd5b505af1158015620020e5573d5f803e3d5ffd5b5050602080546040516001600160a01b0390911681527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa935001905060405180910390a1601f60019054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562002177575f80fd5b505af11580156200218a573d5f803e3d5ffd5b5050505062001302601f60019054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620012d6573d5f803e3d5ffd5b6060601e805480602002602001604051908101604052809291908181526020015f905b8282101562002323575f84815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156200230b578382905f5260205f200180546200227990620073e5565b80601f0160208091040260200160405190810160405280929190818152602001828054620022a790620073e5565b8015620022f65780601f10620022cc57610100808354040283529160200191620022f6565b820191905f5260205f20905b815481529060010190602001808311620022d857829003601f168201915b50505050508152602001906001019062002259565b50505050815250508152602001906001019062002207565b50505050905090565b5f80516020620080a583398151915263e5d6bf026200234f62015180426200735c565b6200235c9060016200735c565b6040518263ffffffff1660e01b81526004016200237b91815260200190565b5f604051808303815f87803b15801562002393575f80fd5b505af1158015620023a6573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b158015620023fb575f80fd5b505af11580156200240e573d5f803e3d5ffd5b505050505f80516020620080a58339815191526001600160a01b031663f48448146040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000eb9575f80fd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b158015620024aa575f80fd5b505af1158015620024bd573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156200250f575f80fd5b505af115801562002522573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b15801562002577575f80fd5b505af11580156200258a573d5f803e3d5ffd5b505060405163f28dceb360e01b81525f80516020620080a5833981519152925063f28dceb3915062000fd0906004016200741f565b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562002610575f80fd5b505af115801562002623573d5f803e3d5ffd5b505060405163f28dceb360e01b81526020600482015260166024820152754d757374206465706f73697420736f6d657468696e6760501b60448201525f80516020620080a5833981519152925063f28dceb391506064015f604051808303815f87803b15801562002692575f80fd5b505af1158015620026a5573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db05f6040518263ffffffff1660e01b81526004015f604051808303818588803b1580156200150b575f80fd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562002749575f80fd5b505af11580156200275c573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b158015620027ae575f80fd5b505af1158015620027c1573d5f803e3d5ffd5b505060215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b15801562002816575f80fd5b505af115801562002829573d5f803e3d5ffd5b505060405163f28dceb360e01b81525f80516020620080a5833981519152925063f28dceb391506200285e906004016200741f565b5f604051808303815f87803b15801562002876575f80fd5b505af115801562002889573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b1580156200150b575f80fd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562002935575f80fd5b505af115801562002948573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620029a3575f80fd5b505af1158015620029b6573d5f803e3d5ffd5b50505050505f80516020620080a58339815191526001600160a01b031663e5d6bf026201518042620029e991906200735c565b620029f69060016200735c565b6040518263ffffffff1660e01b815260040162002a1591815260200190565b5f604051808303815f87803b15801562002a2d575f80fd5b505af115801562002a40573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b15801562002a95575f80fd5b505af115801562002aa8573d5f803e3d5ffd5b505050505f5a9050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562002afe575f80fd5b505af115801562002b11573d5f803e3d5ffd5b505050505f5a62002b23908362007340565b905062000990604051806040016040528060128152602001712bb4ba34323930bb9033b0b9903ab9b2b21d60711b8152508262006e3e565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562002bac575f80fd5b505af115801562002bbf573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f80516020620080a5833981519152925063491cc7c291506084015f604051808303815f87803b15801562002c1c575f80fd5b505af115801562002c2f573d5f803e3d5ffd5b50506021546020546040516001600160a01b039283169450911691507f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3601f5460215460405163f2fde38b60e01b81526001600160a01b039182166004820152610100909204169063f2fde38b906024015b5f604051808303815f87803b15801562000f1e575f80fd5b606060188054806020026020016040519081016040528092919081815260200182805480156200195f57602002820191905f5260205f209081546001600160a01b0316815260019091019060200180831162001940575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156200195f57602002820191905f5260205f209081546001600160a01b0316815260019091019060200180831162001940575050505050905090565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562002dce575f80fd5b505af115801562002de1573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f80516020620080a5833981519152925063491cc7c291506084015f604051808303815f87803b15801562002e3e575f80fd5b505af115801562002e51573d5f803e3d5ffd5b50506021546020546040516001600160a01b039283169450911691507f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3601f5460215460405163f2fde38b60e01b81526001600160a01b039182166004820152610100909204169063f2fde38b906024015f604051808303815f87803b15801562002ede575f80fd5b505af115801562002ef1573d5f803e3d5ffd5b5050505062001302601f60019054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002f4b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002f719190620073bd565b6021546001600160a01b031662006f29565b62002fd9601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001c6d573d5f803e3d5ffd5b6200302f601f60019054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200135a573d5f803e3d5ffd5b62003085601f60019054906101000a90046001600160a01b03166001600160a01b0316638380edb76040518163ffffffff1660e01b8152600401602060405180830381865afa158015620012d6573d5f803e3d5ffd5b620030db601f60019054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620012d6573d5f803e3d5ffd5b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b1580156200312c575f80fd5b505af11580156200313f573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b1580156200319a575f80fd5b505af1158015620031ad573d5f803e3d5ffd5b505060225460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152935063ca669fa7925060240190505f604051808303815f87803b15801562003204575f80fd5b505af115801562003217573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0671bc16d674ec800006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562003272575f80fd5b505af115801562003285573d5f803e3d5ffd5b505060235460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152935063ca669fa7925060240190505f604051808303815f87803b158015620032dc575f80fd5b505af1158015620032ef573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db06729a2241af62c00006040518263ffffffff1660e01b81526004015f604051808303818588803b1580156200334a575f80fd5b505af11580156200335d573d5f803e3d5ffd5b5050505050620033ed601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa158015620033b8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620033de919062007314565b6753444835ec58000062006dcf565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b1580156200343e575f80fd5b505af115801562003451573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b158015620034a3575f80fd5b505af1158015620034b6573d5f803e3d5ffd5b5050505062003510601f60019054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620016f8573d5f803e3d5ffd5b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562003561575f80fd5b505af115801562003574573d5f803e3d5ffd5b505060405163f28dceb360e01b81525f80516020620080a5833981519152925063f28dceb39150620035a9906004016200741f565b5f604051808303815f87803b158015620035c1575f80fd5b505af1158015620035d4573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b1580156200362f575f80fd5b505af115801562003642573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152935063ca669fa7925060240190505f604051808303815f87803b15801562003699575f80fd5b505af1158015620036ac573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015620036fe575f80fd5b505af115801562003711573d5f803e3d5ffd5b505050506200376b601f60019054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620012d6573d5f803e3d5ffd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b158015620037bc575f80fd5b505af1158015620037cf573d5f803e3d5ffd5b5050601f5460215460405163f2fde38b60e01b81526001600160a01b03918216600482015261010090920416925063f2fde38b91506024015f604051808303815f87803b1580156200381f575f80fd5b505af115801562003832573d5f803e3d5ffd5b505050506200388c601f60019054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002f4b573d5f803e3d5ffd5b5f80516020620080a583398151915263e5d6bf02620038af62015180426200735c565b620038bc9060016200735c565b6040518263ffffffff1660e01b8152600401620038db91815260200190565b5f604051808303815f87803b158015620038f3575f80fd5b505af115801562003906573d5f803e3d5ffd5b5050505062003960601f60019054906101000a90046001600160a01b03166001600160a01b0316638380edb76040518163ffffffff1660e01b8152600401602060405180830381865afa158015620016f8573d5f803e3d5ffd5b60215460405163ca669fa760e01b81526001600160a01b039091166004820181905231905f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b158015620039b5575f80fd5b505af1158015620039c8573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562003a1a575f80fd5b505af115801562003a2d573d5f803e3d5ffd5b5050505062003a87601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001c6d573d5f803e3d5ffd5b6021546200086d906001600160a01b03163162001cb8836753444835ec5800006200735c565b62001302601f60019054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620012d6573d5f803e3d5ffd5b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562003b54575f80fd5b505af115801562003b67573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562003bc2575f80fd5b505af115801562003bd5573d5f803e3d5ffd5b505060225460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152935063ca669fa7925060240190505f604051808303815f87803b15801562003c2c575f80fd5b505af115801562003c3f573d5f803e3d5ffd5b5050601f5461010090046001600160a01b0316915063d0e30db0905062003c70670de0b6b3a764000060026200744b565b6040518263ffffffff1660e01b81526004015f604051808303818588803b15801562003c9a575f80fd5b505af115801562003cad573d5f803e3d5ffd5b505060235460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152935063ca669fa7925060240190505f604051808303815f87803b15801562003d04575f80fd5b505af115801562003d17573d5f803e3d5ffd5b5050601f5461010090046001600160a01b0316915063d0e30db0905062003d48670de0b6b3a764000060036200744b565b6040518263ffffffff1660e01b81526004015f604051808303818588803b15801562003d72575f80fd5b505af115801562003d85573d5f803e3d5ffd5b50505050505f670de0b6b3a7640000600362003da291906200744b565b62003db7670de0b6b3a764000060026200744b565b62003dcb90670de0b6b3a76400006200735c565b62003dd791906200735c565b90506200086d601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000840573d5f803e3d5ffd5b6060601b805480602002602001604051908101604052809291908181526020015f905b8282101562002323578382905f5260205f2090600202016040518060400160405290815f8201805462003e8590620073e5565b80601f016020809104026020016040519081016040528092919081815260200182805462003eb390620073e5565b801562003f025780601f1062003ed85761010080835404028352916020019162003f02565b820191905f5260205f20905b81548152906001019060200180831162003ee457829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801562003f8657602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162003f475790505b5050505050815250508152602001906001019062003e52565b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562003ff0575f80fd5b505af115801562004003573d5f803e3d5ffd5b505060405163f28dceb360e01b81525f80516020620080a5833981519152925063f28dceb39150620040389060040162007372565b5f604051808303815f87803b15801562004050575f80fd5b505af115801562004063573d5f803e3d5ffd5b5050601f5460225460405163f2fde38b60e01b81526001600160a01b03918216600482015261010090920416925063f2fde38b915060240162002ca5565b62001302601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001c6d573d5f803e3d5ffd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562004148575f80fd5b505af11580156200415b573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620041b6575f80fd5b505af1158015620041c9573d5f803e3d5ffd5b50505050505f80516020620080a58339815191526001600160a01b031663e5d6bf026201518042620041fc91906200735c565b620042099060016200735c565b6040518263ffffffff1660e01b81526004016200422891815260200190565b5f604051808303815f87803b15801562004240575f80fd5b505af115801562004253573d5f803e3d5ffd5b505060215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b158015620042a8575f80fd5b505af1158015620042bb573d5f803e3d5ffd5b505060405163f28dceb360e01b81526020600482015260146024820152732834b3b3bca130b7359d102737ba1037bbb732b960611b60448201525f80516020620080a5833981519152925063f28dceb3915060640162000ea1565b5f80516020620080a583398151915263e5d6bf026200433962015180426200735c565b620043469060016200735c565b6040518263ffffffff1660e01b81526004016200436591815260200190565b5f604051808303815f87803b1580156200437d575f80fd5b505af115801562004390573d5f803e3d5ffd5b5050505062001302601f60019054906101000a90046001600160a01b03166001600160a01b0316638380edb76040518163ffffffff1660e01b8152600401602060405180830381865afa158015620016f8573d5f803e3d5ffd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b1580156200443b575f80fd5b505af11580156200444e573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f80516020620080a5833981519152925063491cc7c291506084015f604051808303815f87803b158015620044ab575f80fd5b505af1158015620044be573d5f803e3d5ffd5b5050602080546040516001600160a01b0390911681527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258935001905060405180910390a1601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000f1e575f80fd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b158015620045a1575f80fd5b505af1158015620045b4573d5f803e3d5ffd5b505060405163f28dceb360e01b815260206004820152601960248201527f4e6577206f776e6572206973207a65726f20616464726573730000000000000060448201525f80516020620080a5833981519152925063f28dceb391506064015f604051808303815f87803b1580156200462a575f80fd5b505af11580156200463d573d5f803e3d5ffd5b5050601f5460405163f2fde38b60e01b81525f60048201526101009091046001600160a01b0316925063f2fde38b915060240162002ca5565b6060601a805480602002602001604051908101604052809291908181526020015f905b8282101562002323578382905f5260205f20018054620046b990620073e5565b80601f0160208091040260200160405190810160405280929190818152602001828054620046e790620073e5565b8015620047365780601f106200470c5761010080835404028352916020019162004736565b820191905f5260205f20905b8154815290600101906020018083116200471857829003601f168201915b50505050508152602001906001019062004699565b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b1580156200479c575f80fd5b505af1158015620047af573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f80516020620080a5833981519152925063491cc7c291506084015f604051808303815f87803b1580156200480c575f80fd5b505af11580156200481f573d5f803e3d5ffd5b5050602154604051670de0b6b3a764000081526001600160a01b0390911692507f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4915060200160405180910390a2601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620048c4575f80fd5b505af1158015620048d7573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152935063ca669fa7925060240190505f604051808303815f87803b1580156200492e575f80fd5b505af115801562004941573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f80516020620080a5833981519152925063491cc7c291506084015f604051808303815f87803b1580156200499e575f80fd5b505af1158015620049b1573d5f803e3d5ffd5b50506021546020546040516001600160a01b039283169450911691507f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3601f5460215460405163f2fde38b60e01b81526001600160a01b039182166004820152610100909204169063f2fde38b906024015f604051808303815f87803b15801562004a3e575f80fd5b505af115801562004a51573d5f803e3d5ffd5b505060215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b15801562004aa6575f80fd5b505af115801562004ab9573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f80516020620080a5833981519152925063491cc7c291506084015f604051808303815f87803b15801562004b16575f80fd5b505af115801562004b29573d5f803e3d5ffd5b50506021546040516001600160a01b0390911681527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589250602001905060405180910390a1601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562004bbc575f80fd5b505af115801562004bcf573d5f803e3d5ffd5b505060215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b15801562004c24575f80fd5b505af115801562004c37573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f80516020620080a5833981519152925063491cc7c291506084015f604051808303815f87803b15801562004c94575f80fd5b505af115801562004ca7573d5f803e3d5ffd5b50506021546040516001600160a01b0390911681527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9250602001905060405180910390a1601f60019054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562004d3a575f80fd5b505af115801562004d4d573d5f803e3d5ffd5b505f80516020620080a5833981519152925063e5d6bf02915062004d77905062015180426200735c565b62004d849060016200735c565b6040518263ffffffff1660e01b815260040162004da391815260200190565b5f604051808303815f87803b15801562004dbb575f80fd5b505af115801562004dce573d5f803e3d5ffd5b505060215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b15801562004e23575f80fd5b505af115801562004e36573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f80516020620080a5833981519152925063491cc7c291506084015f604051808303815f87803b15801562004e93575f80fd5b505af115801562004ea6573d5f803e3d5ffd5b5050602154604051670de0b6b3a764000081526001600160a01b0390911692507f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d591506020015b60405180910390a2601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000f1e575f80fd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562004f94575f80fd5b505af115801562004fa7573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562005002575f80fd5b505af115801562005015573d5f803e3d5ffd5b50505050505f80516020620080a58339815191526001600160a01b031663e5d6bf0262015180426200504891906200735c565b620050559060016200735c565b6040518263ffffffff1660e01b81526004016200507491815260200190565b5f604051808303815f87803b1580156200508c575f80fd5b505af11580156200509f573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b03909116600482018190523192505f80516020620080a5833981519152915063ca669fa7906024015f604051808303815f87803b158015620050f8575f80fd5b505af11580156200510b573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156200515d575f80fd5b505af115801562005170573d5f803e3d5ffd5b50505050620051ca601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001c6d573d5f803e3d5ffd5b6020546200086d906001600160a01b03163162001cb8670de0b6b3a7640000846200735c565b6060601d805480602002602001604051908101604052809291908181526020015f905b8282101562002323575f8481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620052bc57602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116200527d5790505b5050505050815250508152602001906001019062005213565b62001302601f60019054906101000a90046001600160a01b03166001600160a01b031663602bc62b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200532b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062005351919062007314565b62001cb862015180426200735c565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b158015620053b1575f80fd5b505af1158015620053c4573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b1580156200541f575f80fd5b505af115801562005432573d5f803e3d5ffd5b5050505050601f60019054906101000a90046001600160a01b03166040516200545b9062006ff2565b6001600160a01b039091168152602001604051809103905ff08015801562005485573d5f803e3d5ffd5b50602580546001600160a01b0319166001600160a01b0392909216918217905560405163c88a5e6d60e01b81525f80516020620080a58339815191529163c88a5e6d91620054e19190670de0b6b3a764000090600401620072fb565b5f604051808303815f87803b158015620054f9575f80fd5b505af11580156200550c573d5f803e3d5ffd5b505f80516020620080a5833981519152925063e5d6bf02915062005536905062015180426200735c565b620055439060016200735c565b6040518263ffffffff1660e01b81526004016200556291815260200190565b5f604051808303815f87803b1580156200557a575f80fd5b505af11580156200558d573d5f803e3d5ffd5b505060255460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b158015620055e2575f80fd5b505af1158015620055f5573d5f803e3d5ffd5b505060405163f28dceb360e01b81526020600482015260146024820152732834b3b3bca130b7359d102737ba1037bbb732b960611b60448201525f80516020620080a5833981519152925063f28dceb391506064015f604051808303815f87803b15801562005662575f80fd5b505af115801562005675573d5f803e3d5ffd5b5050505060255f9054906101000a90046001600160a01b03166001600160a01b0316639e5faafc6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000f1e575f80fd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562005717575f80fd5b505af11580156200572a573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562005785575f80fd5b505af115801562005798573d5f803e3d5ffd5b50505050505f80516020620080a58339815191526001600160a01b031663e5d6bf026201518042620057cb91906200735c565b620057d89060016200735c565b6040518263ffffffff1660e01b8152600401620057f791815260200190565b5f604051808303815f87803b1580156200580f575f80fd5b505af115801562005822573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b15801562005877575f80fd5b505af11580156200588a573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f80516020620080a5833981519152925063491cc7c291506084015f604051808303815f87803b158015620058e7575f80fd5b505af1158015620058fa573d5f803e3d5ffd5b505060208054604051670de0b6b3a764000081526001600160a01b0390911693507f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d592500162004eed565b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562005996575f80fd5b505af1158015620059a9573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562005a04575f80fd5b505af115801562005a17573d5f803e3d5ffd5b505050505062001302601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562005a72573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062005a98919062007314565b670de0b6b3a764000062006dcf565b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562005af8575f80fd5b505af115801562005b0b573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562005b66575f80fd5b505af115801562005b79573d5f803e3d5ffd5b505050505062005bd4601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562005a72573d5f803e3d5ffd5b60215462001302906001600160a01b03163162001cb8670de0b6b3a764000068056bc75e2d6310000062007340565b6060601c805480602002602001604051908101604052809291908181526020015f905b8282101562002323575f8481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562005ccf57602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162005c905790505b5050505050815250508152602001906001019062005c26565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562005d39575f80fd5b505af115801562005d4c573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562005da7575f80fd5b505af115801562005dba573d5f803e3d5ffd5b50505050505f80516020620080a58339815191526001600160a01b031663e5d6bf026001620151804262005def91906200735c565b62005dfb919062007340565b6040518263ffffffff1660e01b815260040162005e1a91815260200190565b5f604051808303815f87803b15801562005e32575f80fd5b505af115801562005e45573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa7915060240162000e17565b60606019805480602002602001604051908101604052809291908181526020015f905b8282101562002323578382905f5260205f2001805462005ecb90620073e5565b80601f016020809104026020016040519081016040528092919081815260200182805462005ef990620073e5565b801562005f485780601f1062005f1e5761010080835404028352916020019162005f48565b820191905f5260205f20905b81548152906001019060200180831162005f2a57829003601f168201915b50505050508152602001906001019062005eab565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562005fae575f80fd5b505af115801562005fc1573d5f803e3d5ffd5b505060405163f28dceb360e01b815260206004820152601660248201527510dbdb9d1c9858dd081a5cc81b9bdd081c185d5cd95960521b60448201525f80516020620080a5833981519152925063f28dceb391506064016200188a565b6008545f9060ff1615620060325750600190565b604051630667f9d760e41b81525f905f80516020620080a58339815191529063667f9d709062006092907f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d906519985a5b195960d21b90600401620072fb565b602060405180830381865afa158015620060ae573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620060d4919062007314565b1415905090565b5f805b600a811015620061ec5760215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562006139575f80fd5b505af11580156200614c573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db067016345785d8a00006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620061a7575f80fd5b505af1158015620061ba573d5f803e3d5ffd5b505050505067016345785d8a000082620061d591906200735c565b915080620061e38162007465565b915050620060de565b506200086d601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000840573d5f803e3d5ffd5b60405163c88a5e6d60e01b81526010906020906030905f80516020620080a58339815191529063c88a5e6d9062006289908690678ac7230489e8000090600401620072fb565b5f604051808303815f87803b158015620062a1575f80fd5b505af1158015620062b4573d5f803e3d5ffd5b505060405163c88a5e6d60e01b81525f80516020620080a5833981519152925063c88a5e6d9150620062f5908590678ac7230489e8000090600401620072fb565b5f604051808303815f87803b1580156200630d575f80fd5b505af115801562006320573d5f803e3d5ffd5b505060405163c88a5e6d60e01b81525f80516020620080a5833981519152925063c88a5e6d915062006361908490678ac7230489e8000090600401620072fb565b5f604051808303815f87803b15801562006379575f80fd5b505af11580156200638c573d5f803e3d5ffd5b50505050620063ae836001600160a01b031631678ac7230489e8000062006dcf565b620063cc826001600160a01b031631678ac7230489e8000062006dcf565b620063ea816001600160a01b031631678ac7230489e8000062006dcf565b60405163ca669fa760e01b81526001600160a01b03841660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562006437575f80fd5b505af11580156200644a573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620064a5575f80fd5b505af1158015620064b8573d5f803e3d5ffd5b505060405163ca669fa760e01b81526001600160a01b03861660048201525f80516020620080a5833981519152935063ca669fa7925060240190505f604051808303815f87803b1580156200650b575f80fd5b505af11580156200651e573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0671bc16d674ec800006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562006579575f80fd5b505af11580156200658c573d5f803e3d5ffd5b505060405163ca669fa760e01b81526001600160a01b03851660048201525f80516020620080a5833981519152935063ca669fa7925060240190505f604051808303815f87803b158015620065df575f80fd5b505af1158015620065f2573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db06729a2241af62c00006040518263ffffffff1660e01b81526004015f604051808303818588803b1580156200664d575f80fd5b505af115801562006660573d5f803e3d5ffd5b5050505050620066bb601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa158015620033b8573d5f803e3d5ffd5b5f80516020620080a583398151915263e5d6bf02620066de62015180426200735c565b620066eb9060016200735c565b6040518263ffffffff1660e01b81526004016200670a91815260200190565b5f604051808303815f87803b15801562006722575f80fd5b505af115801562006735573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b1580156200678a575f80fd5b505af11580156200679d573d5f803e3d5ffd5b5050601f5460405163f2fde38b60e01b81526001600160a01b038781166004830152610100909204909116925063f2fde38b91506024015f604051808303815f87803b158015620067ec575f80fd5b505af1158015620067ff573d5f803e3d5ffd5b505060405163ca669fa760e01b81526001600160a01b03861660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b15801562006850575f80fd5b505af115801562006863573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015620068b5575f80fd5b505af1158015620068c8573d5f803e3d5ffd5b5050505062006922601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001c6d573d5f803e3d5ffd5b505050565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562006978575f80fd5b505af11580156200698b573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620069e6575f80fd5b505af1158015620069f9573d5f803e3d5ffd5b50505050505f80516020620080a58339815191526001600160a01b031663e5d6bf02620151804262001dd391906200735c565b606060158054806020026020016040519081016040528092919081815260200182805480156200195f57602002820191905f5260205f209081546001600160a01b0316815260019091019060200180831162001940575050505050905090565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562006add575f80fd5b505af115801562006af0573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562006b4b575f80fd5b505af115801562006b5e573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152935063ca669fa7925060240190505f604051808303815f87803b15801562006bb5575f80fd5b505af115801562006bc8573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562006c1a575f80fd5b505af115801562006c2d573d5f803e3d5ffd5b505f80516020620080a5833981519152925063e5d6bf02915062006c57905062015180426200735c565b62006c649060016200735c565b6040518263ffffffff1660e01b815260040162006c8391815260200190565b5f604051808303815f87803b15801562006c9b575f80fd5b505af115801562006cae573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b15801562006d03575f80fd5b505af115801562006d16573d5f803e3d5ffd5b505060405163f28dceb360e01b81525f80516020620080a5833981519152925063f28dceb3915062000ea1906004016200741f565b6200130242601f60019054906101000a90046001600160a01b03166001600160a01b031663602bc62b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562006da2573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062006dc8919062007314565b1162006f86565b8082146200099f5760405163260a5b1560e21b815260048101839052602481018290525f80516020620080a5833981519152906398296c54906044015b5f6040518083038186803b15801562006e23575f80fd5b505afa15801562006e36573d5f803e3d5ffd5b505050505050565b6200099f828260405160240162006e5792919062007480565b60408051601f198184030181529190526020810180516001600160e01b0316632d839cb360e21b17905262006fc0565b8082106200099f5760405163b12fc00560e01b815260048101839052602481018290525f80516020620080a58339815191529063b12fc0059060440162006e0c565b80156200086d5760405163a598288560e01b815281151560048201525f80516020620080a58339815191529063a5982885906024015b5f6040518083038186803b15801562006f16575f80fd5b505afa1580156200151e573d5f803e3d5ffd5b806001600160a01b0316826001600160a01b0316146200099f576040516328a9b0fb60e11b81526001600160a01b038084166004830152821660248201525f80516020620080a58339815191529063515361f69060440162006e0c565b806200086d57604051630c9fd58160e01b815281151560048201525f80516020620080a583398151915290630c9fd5819060240162006eff565b6200086d815f6a636f6e736f6c652e6c6f6790505f80835160208501845afa505050565b6109fd80620074a483390190565b6102048062007ea183390190565b602080825282518282018190525f9190848201906040850190845b81811015620070425783516001600160a01b0316835292840192918401916001016200701b565b50909695505050505050565b5f81518084525f5b81811015620070745760208185018101518683018201520162007056565b505f602082860101526020601f19601f83011685010191505092915050565b602080825282518282018190525f919060409081850190600581811b8701840188860187805b858110156200714857603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200713157605f198985030183526200711e8486516200704e565b948e01949350918d0191600101620070ff565b505050978a019794505091880191600101620070b9565b50919a9950505050505050505050565b5f8151808452602080850194508084015f5b83811015620071925781516001600160e01b031916875295820195908201906001016200716a565b509495945050505050565b5f6020808301818452808551808352604092508286019150828160051b8701018488015f5b838110156200721857888303603f1901855281518051878552620071e9888601826200704e565b91890151858303868b015291905062007203818362007158565b968901969450505090860190600101620071c2565b509098975050505050505050565b5f602080830181845280855180835260408601915060408160051b87010192508387015f5b828110156200727d57603f198886030184526200726a8583516200704e565b945092850192908501906001016200724b565b5092979650505050505050565b5f6020808301818452808551808352604092508286019150828160051b8701018488015f5b838110156200721857888303603f19018552815180516001600160a01b03168452870151878401879052620072e78785018262007158565b9588019593505090860190600101620072af565b6001600160a01b03929092168252602082015260400190565b5f6020828403121562007325575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156200735657620073566200732c565b92915050565b808201808211156200735657620073566200732c565b6020808252600990820152682737ba1037bbb732b960b91b604082015260600190565b5f60208284031215620073a6575f80fd5b81518015158114620073b6575f80fd5b9392505050565b5f60208284031215620073ce575f80fd5b81516001600160a01b0381168114620073b6575f80fd5b600181811c90821680620073fa57607f821691505b6020821081036200741957634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526012908201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b604082015260600190565b80820281158282048414176200735657620073566200732c565b5f600182016200747957620074796200732c565b5060010190565b604081525f6200749460408301856200704e565b9050826020830152939250505056fe60806040526040516109fd3803806109fd833981016040819052610022916100c8565b4281116100755760405162461bcd60e51b815260206004820152601d60248201527f556e6c6f636b2074696d65206d75737420626520696e20667574757265000000604482015260640160405180910390fd5b5f80546001600160a01b03191633908117825560018390556002805460ff191690556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506100df565b5f602082840312156100d8575f80fd5b5051919050565b610911806100ec5f395ff3fe608060405260043610610105575f3560e01c80637d88209711610092578063c084b10b11610062578063c084b10b1461025f578063d0e30db014610293578063dfe6b5d61461029b578063f2fde38b146102c9578063fc7e286d146102e8575f80fd5b80637d882097146101e95780638380edb7146101fe5780638456cb59146102155780638da5cb5b14610229575f80fd5b80633f4ba83a116100d85780633f4ba83a1461016f5780634c34a982146101835780635c975abb14610197578063602bc62b146101c057806360464627146101d4575f80fd5b806312065fe0146101095780631ea30fef1461012a578063251c1aa3146101445780633ccfd60b14610159575b5f80fd5b348015610114575f80fd5b50475b6040519081526020015b60405180910390f35b348015610135575f80fd5b5061011766038d7ea4c6800081565b34801561014f575f80fd5b5061011760015481565b348015610164575f80fd5b5061016d610313565b005b34801561017a575f80fd5b5061016d6104f2565b34801561018e575f80fd5b506101175f1981565b3480156101a2575f80fd5b506002546101b09060ff1681565b6040519015158152602001610121565b3480156101cb575f80fd5b50600154610117565b3480156101df575f80fd5b5061011760055481565b3480156101f4575f80fd5b5061011760045481565b348015610209575f80fd5b506001544210156101b0565b348015610220575f80fd5b5061016d6105a6565b348015610234575f80fd5b505f54610247906001600160a01b031681565b6040516001600160a01b039091168152602001610121565b34801561026a575f80fd5b5061011761027936600461083a565b6001600160a01b03165f9081526003602052604090205490565b61016d61062f565b3480156102a6575f80fd5b506004546005544760408051938452602084019290925290820152606001610121565b3480156102d4575f80fd5b5061016d6102e336600461083a565b610762565b3480156102f3575f80fd5b5061011761030236600461083a565b60036020525f908152604090205481565b60025460ff161561033f5760405162461bcd60e51b815260040161033690610867565b60405180910390fd5b5f546001600160a01b0316331461038f5760405162461bcd60e51b81526020600482015260146024820152732834b3b3bca130b7359d102737ba1037bbb732b960611b6044820152606401610336565b6001544210156103e15760405162461bcd60e51b815260206004820152601760248201527f506967677942616e6b3a205374696c6c206c6f636b65640000000000000000006044820152606401610336565b478061041c5760405162461bcd60e51b815260206004820152600a6024820152694e6f2062616c616e636560b01b6044820152606401610336565b8060055f82825461042d9190610893565b909155505060405181815233907f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d59060200160405180910390a26040515f90339083908381818185875af1925050503d805f81146104a6576040519150601f19603f3d011682016040523d82523d5f602084013e6104ab565b606091505b50509050806104ee5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610336565b5050565b5f546001600160a01b0316331461051b5760405162461bcd60e51b8152600401610336906108b8565b60025460ff166105665760405162461bcd60e51b815260206004820152601660248201527510dbdb9d1c9858dd081a5cc81b9bdd081c185d5cd95960521b6044820152606401610336565b6002805460ff191690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b5f546001600160a01b031633146105cf5760405162461bcd60e51b8152600401610336906108b8565b60025460ff16156105f25760405162461bcd60e51b815260040161033690610867565b6002805460ff191660011790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200161059c565b60025460ff16156106525760405162461bcd60e51b815260040161033690610867565b5f341161069a5760405162461bcd60e51b81526020600482015260166024820152754d757374206465706f73697420736f6d657468696e6760501b6044820152606401610336565b66038d7ea4c680003410156106e55760405162461bcd60e51b815260206004820152601160248201527011195c1bdcda5d081d1bdbc81cdb585b1b607a1b6044820152606401610336565b335f90815260036020526040812054906106ff3483610893565b9050335f90815260036020526040812082905560048054349290610724908490610893565b909155505060405134815233907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c49060200160405180910390a25050565b5f546001600160a01b0316331461078b5760405162461bcd60e51b8152600401610336906108b8565b6001600160a01b0381166107e15760405162461bcd60e51b815260206004820152601960248201527f4e6577206f776e6572206973207a65726f2061646472657373000000000000006044820152606401610336565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f6020828403121561084a575f80fd5b81356001600160a01b0381168114610860575f80fd5b9392505050565b60208082526012908201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b604082015260600190565b808201808211156108b257634e487b7160e01b5f52601160045260245ffd5b92915050565b6020808252600990820152682737ba1037bbb732b960b91b60408201526060019056fea2646970667358221220403cb9ef02c668a9c8582feccebbe6fdecd071dedabafc1514a3fb07eeb84c4064736f6c63430008140033608060405234801561000f575f80fd5b5060405161020438038061020483398101604081905261002e91610052565b5f80546001600160a01b0319166001600160a01b039290921691909117905561007f565b5f60208284031215610062575f80fd5b81516001600160a01b0381168114610078575f80fd5b9392505050565b6101788061008c5f395ff3fe60806040526004361061002b575f3560e01c80639e5faafc1461009d578063d4b83992146100b1575f80fd5b36610099575f546001600160a01b03163115610097575f805460408051633ccfd60b60e01b815290516001600160a01b0390921692633ccfd60b9260048084019382900301818387803b158015610080575f80fd5b505af1158015610092573d5f803e3d5ffd5b505050505b005b5f80fd5b3480156100a8575f80fd5b506100976100eb565b3480156100bc575f80fd5b505f546100cf906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b5f805460408051633ccfd60b60e01b815290516001600160a01b0390921692633ccfd60b9260048084019382900301818387803b15801561012a575f80fd5b505af115801561013c573d5f803e3d5ffd5b5050505056fea26469706673582212207deeabf49144927664225f1d1cbfb6c880f4d89cea26549f110d2355c074ece564736f6c634300081400330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12da264697066735822122088600d1ce1e00ce450f45452ae6acfcc150819b77a95b913195b81b3a133081764736f6c63430008140033","sourceMap":"119:18086:20:-:0;;;3160:44:2;;;3200:4;-1:-1:-1;;3160:44:2;;;;;;;;1065:26:13;;;;;;;;;;;119:18086:20;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801562000010575f80fd5b5060043610620003c7575f3560e01c806366d9a9a011620001fb5780639e448c67116200011f578063ba414fa611620000b7578063e20c9f711162000083578063e20c9f71146200067b578063e90b559c1462000685578063f0dde3ec146200068f578063fa7626d41462000699575f80fd5b8063ba414fa61462000642578063c8b96d44146200065d578063ca05fdd71462000667578063dc5984c21462000671575f80fd5b8063b3c3225a11620000f7578063b3c3225a146200060b578063b5508aa91462000615578063b7d5d4c0146200061f578063b878e85f1462000638575f80fd5b80639e448c6714620005ed5780639fc77f1d14620005f7578063b0464fdc1462000601575f80fd5b806385226c811162000193578063916a17c6116200016b578063916a17c614620005b657806391de35c714620005cf5780639872fe2914620005d957806399c2758314620005e3575f80fd5b806385226c8114620005895780638570667114620005a2578063864fd75614620005ac575f80fd5b80637787b45511620001d35780637787b45514620005615780637e6bc79b146200056b57806384108d921462000575578063847b9869146200057f575f80fd5b806366d9a9a014620005345780636fc908c5146200054d57806372d9e9781462000557575f80fd5b80632799b79511620002ef57806333bb13cd11620002875780635104ebf411620002535780635104ebf4146200050c578063556ea933146200051657806357cd4873146200052057806358a07d23146200052a575f80fd5b806333bb13cd14620004e45780633517377d14620004ee5780633e5e3c2314620004f85780633f7286f41462000502575f80fd5b80632b78942511620002c75780632b78942514620004bc5780632e35021914620004c657806330f9c00614620004d057806331e80b5814620004da575f80fd5b80632799b795146200048f5780632a5a1be714620004995780632ade388014620004a3575f80fd5b806317f9fd7811620003635780631d4349ae116200033b5780631d4349ae14620004585780631dabed0514620004625780631ed7831c146200046c578063259cb21e1462000485575f80fd5b806317f9fd78146200043a57806319af867e14620004445780631a47df23146200044e575f80fd5b80630a9254e411620003a35780630a9254e4146200041257806311af395a146200041c57806313a710d3146200042657806315cdd99d1462000430575f80fd5b8062ce984f14620003cb5780630487fe5714620003d75780630577a35614620003e1575b5f80fd5b620003d5620006a7565b005b620003d562000870565b602554620003f5906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b620003d5620009a3565b620003d562000d05565b620003d562000f37565b620003d56200104d565b620003d562001280565b620003d562001304565b620003d562001392565b620003d562001525565b620003d562001724565b6200047662001907565b60405162000409919062007000565b620003d562001969565b620003d562001cbe565b620003d562001f44565b620004ad620021e4565b60405162000409919062007093565b620003d56200232c565b620003d562002459565b620003d5620025bf565b620003d5620026f8565b620003d5620028e4565b620003d562002b5b565b6200047662002cbd565b6200047662002d1d565b620003d562002d7d565b620003d562002f83565b620003d562003aad565b620003d562003b03565b6200053e62003e2f565b6040516200040991906200719d565b620003d562003f9f565b620003d5620040a1565b620003d5620040f7565b620003d562004316565b620003d5620043ea565b620003d562004550565b6200059362004676565b60405162000409919062007226565b620003d56200474b565b620003d562004f43565b620005c0620051f0565b6040516200040991906200728a565b620003d5620052d5565b620003d562005360565b620003d5620056c6565b620003d562005945565b620003d562005aa7565b620005c062005c03565b620003d562005ce8565b6200059362005e88565b601f54620003f59061010090046001600160a01b031681565b620003d562005f5d565b6200064c6200601e565b604051901515815260200162000409565b620003d5620060db565b620003d562006243565b620003d562006927565b6200047662006a2c565b620003d562006a8c565b620003d562006d4b565b601f546200064c9060ff1681565b60215460405163c88a5e6d60e01b81525f19915f80516020620080a58339815191529163c88a5e6d91620006ec916001600160a01b03909116908590600401620072fb565b5f604051808303815f87803b15801562000704575f80fd5b505af115801562000717573d5f803e3d5ffd5b505060215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b1580156200076c575f80fd5b505af11580156200077f573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b158015620007d2575f80fd5b505af1158015620007e5573d5f803e3d5ffd5b50505050506200086d601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000840573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000866919062007314565b8262006dcf565b50565b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b158015620008c1575f80fd5b505af1158015620008d4573d5f803e3d5ffd5b505050505f5a9050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562000933575f80fd5b505af115801562000946573d5f803e3d5ffd5b50505050505f5a62000959908362007340565b905062000990604051806040016040528060118152602001702232b837b9b4ba1033b0b9903ab9b2b21d60791b8152508262006e3e565b6200099f81620186a062006e87565b5050565b602080546001600160a01b031990811660019081179092556021805482166002179055602280548216600317905560238054821660049081179091556024805490921660051790915560405163c88a5e6d60e01b81525f80516020620080a58339815191529263c88a5e6d9262000a269268056bc75e2d631000009101620072fb565b5f604051808303815f87803b15801562000a3e575f80fd5b505af115801562000a51573d5f803e3d5ffd5b505060215460405163c88a5e6d60e01b81525f80516020620080a5833981519152935063c88a5e6d925062000a9e916001600160a01b03169068056bc75e2d6310000090600401620072fb565b5f604051808303815f87803b15801562000ab6575f80fd5b505af115801562000ac9573d5f803e3d5ffd5b505060225460405163c88a5e6d60e01b81525f80516020620080a5833981519152935063c88a5e6d925062000b16916001600160a01b03169068056bc75e2d6310000090600401620072fb565b5f604051808303815f87803b15801562000b2e575f80fd5b505af115801562000b41573d5f803e3d5ffd5b505060235460405163c88a5e6d60e01b81525f80516020620080a5833981519152935063c88a5e6d925062000b8e916001600160a01b03169068056bc75e2d6310000090600401620072fb565b5f604051808303815f87803b15801562000ba6575f80fd5b505af115801562000bb9573d5f803e3d5ffd5b505060245460405163c88a5e6d60e01b81525f80516020620080a5833981519152935063c88a5e6d925062000c06916001600160a01b03169068056bc75e2d6310000090600401620072fb565b5f604051808303815f87803b15801562000c1e575f80fd5b505af115801562000c31573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b15801562000c86575f80fd5b505af115801562000c99573d5f803e3d5ffd5b50505050620151804262000cae91906200735c565b60405162000cbc9062006fe4565b908152602001604051809103905ff08015801562000cdc573d5f803e3d5ffd5b50601f60016101000a8154816001600160a01b0302191690836001600160a01b03160217905550565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562000d56575f80fd5b505af115801562000d69573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562000dc4575f80fd5b505af115801562000dd7573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152935063ca669fa7925060240190505b5f604051808303815f87803b15801562000e2f575f80fd5b505af115801562000e42573d5f803e3d5ffd5b505060405163f28dceb360e01b815260206004820152601760248201527f506967677942616e6b3a205374696c6c206c6f636b656400000000000000000060448201525f80516020620080a5833981519152925063f28dceb391506064015b5f604051808303815f87803b15801562000eb9575f80fd5b505af115801562000ecc573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000f1e575f80fd5b505af115801562000f31573d5f803e3d5ffd5b50505050565b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562000f88575f80fd5b505af115801562000f9b573d5f803e3d5ffd5b505060405163f28dceb360e01b81525f80516020620080a5833981519152925063f28dceb3915062000fd09060040162007372565b5f604051808303815f87803b15801562000fe8575f80fd5b505af115801562000ffb573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000f1e575f80fd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b1580156200109e575f80fd5b505af1158015620010b1573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562001103575f80fd5b505af115801562001116573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b1580156200116b575f80fd5b505af11580156200117e573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f80516020620080a5833981519152925063491cc7c291506084015f604051808303815f87803b158015620011db575f80fd5b505af1158015620011ee573d5f803e3d5ffd5b5050602080546040516001600160a01b0390911681527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa935001905060405180910390a1601f60019054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000f1e575f80fd5b62001302601f60019054906101000a90046001600160a01b03166001600160a01b0316638380edb76040518163ffffffff1660e01b8152600401602060405180830381865afa158015620012d6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620012fc919062007395565b62006ec9565b565b62001302601f60019054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200135a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620013809190620073bd565b6020546001600160a01b031662006f29565b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b158015620013e3575f80fd5b505af1158015620013f6573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f80516020620080a5833981519152925063491cc7c291506084015f604051808303815f87803b15801562001453575f80fd5b505af115801562001466573d5f803e3d5ffd5b5050602154604051670de0b6b3a764000081526001600160a01b0390911692507f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4915060200160405180910390a2601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b1580156200150b575f80fd5b505af11580156200151e573d5f803e3d5ffd5b5050505050565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562001576575f80fd5b505af115801562001589573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f80516020620080a5833981519152925063491cc7c291506084015f604051808303815f87803b158015620015e6575f80fd5b505af1158015620015f9573d5f803e3d5ffd5b5050602080546040516001600160a01b0390911681527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258935001905060405180910390a1601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156200168b575f80fd5b505af11580156200169e573d5f803e3d5ffd5b5050505062001302601f60019054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620016f8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200171e919062007395565b62006f86565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562001775575f80fd5b505af115801562001788573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b158015620017da575f80fd5b505af1158015620017ed573d5f803e3d5ffd5b505060215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b15801562001842575f80fd5b505af115801562001855573d5f803e3d5ffd5b505060405163f28dceb360e01b81525f80516020620080a5833981519152925063f28dceb391506200188a9060040162007372565b5f604051808303815f87803b158015620018a2575f80fd5b505af1158015620018b5573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000f1e575f80fd5b606060168054806020026020016040519081016040528092919081815260200182805480156200195f57602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831162001940575b5050505050905090565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b158015620019ba575f80fd5b505af1158015620019cd573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562001a28575f80fd5b505af115801562001a3b573d5f803e3d5ffd5b50505050505f80516020620080a58339815191526001600160a01b031663e5d6bf02620151804262001a6e91906200735c565b62001a7b9060016200735c565b6040518263ffffffff1660e01b815260040162001a9a91815260200190565b5f604051808303815f87803b15801562001ab2575f80fd5b505af115801562001ac5573d5f803e3d5ffd5b505050505f601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001b1c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001b42919062007314565b60205460405163ca669fa760e01b81526001600160a01b03909116600482018190529192509031905f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562001b9b575f80fd5b505af115801562001bae573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562001c00575f80fd5b505af115801562001c13573d5f803e3d5ffd5b5050505062001c9a601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001c6d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001c93919062007314565b5f62006dcf565b6020546200099f906001600160a01b03163162001cb884846200735c565b62006dcf565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562001d0f575f80fd5b505af115801562001d22573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562001d7d575f80fd5b505af115801562001d90573d5f803e3d5ffd5b50505050505f80516020620080a58339815191526001600160a01b031663e5d6bf02620151804262001dc391906200735c565b62001dd3906301e133806200735c565b6040518263ffffffff1660e01b815260040162001df291815260200190565b5f604051808303815f87803b15801562001e0a575f80fd5b505af115801562001e1d573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b15801562001e72575f80fd5b505af115801562001e85573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562001ed7575f80fd5b505af115801562001eea573d5f803e3d5ffd5b5050505062001302601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001c6d573d5f803e3d5ffd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562001f95575f80fd5b505af115801562001fa8573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562001ffa575f80fd5b505af11580156200200d573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b15801562002062575f80fd5b505af115801562002075573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f80516020620080a5833981519152925063491cc7c291506084015f604051808303815f87803b158015620020d2575f80fd5b505af1158015620020e5573d5f803e3d5ffd5b5050602080546040516001600160a01b0390911681527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa935001905060405180910390a1601f60019054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562002177575f80fd5b505af11580156200218a573d5f803e3d5ffd5b5050505062001302601f60019054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620012d6573d5f803e3d5ffd5b6060601e805480602002602001604051908101604052809291908181526020015f905b8282101562002323575f84815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156200230b578382905f5260205f200180546200227990620073e5565b80601f0160208091040260200160405190810160405280929190818152602001828054620022a790620073e5565b8015620022f65780601f10620022cc57610100808354040283529160200191620022f6565b820191905f5260205f20905b815481529060010190602001808311620022d857829003601f168201915b50505050508152602001906001019062002259565b50505050815250508152602001906001019062002207565b50505050905090565b5f80516020620080a583398151915263e5d6bf026200234f62015180426200735c565b6200235c9060016200735c565b6040518263ffffffff1660e01b81526004016200237b91815260200190565b5f604051808303815f87803b15801562002393575f80fd5b505af1158015620023a6573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b158015620023fb575f80fd5b505af11580156200240e573d5f803e3d5ffd5b505050505f80516020620080a58339815191526001600160a01b031663f48448146040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000eb9575f80fd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b158015620024aa575f80fd5b505af1158015620024bd573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156200250f575f80fd5b505af115801562002522573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b15801562002577575f80fd5b505af11580156200258a573d5f803e3d5ffd5b505060405163f28dceb360e01b81525f80516020620080a5833981519152925063f28dceb3915062000fd0906004016200741f565b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562002610575f80fd5b505af115801562002623573d5f803e3d5ffd5b505060405163f28dceb360e01b81526020600482015260166024820152754d757374206465706f73697420736f6d657468696e6760501b60448201525f80516020620080a5833981519152925063f28dceb391506064015f604051808303815f87803b15801562002692575f80fd5b505af1158015620026a5573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db05f6040518263ffffffff1660e01b81526004015f604051808303818588803b1580156200150b575f80fd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562002749575f80fd5b505af11580156200275c573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b158015620027ae575f80fd5b505af1158015620027c1573d5f803e3d5ffd5b505060215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b15801562002816575f80fd5b505af115801562002829573d5f803e3d5ffd5b505060405163f28dceb360e01b81525f80516020620080a5833981519152925063f28dceb391506200285e906004016200741f565b5f604051808303815f87803b15801562002876575f80fd5b505af115801562002889573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b1580156200150b575f80fd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562002935575f80fd5b505af115801562002948573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620029a3575f80fd5b505af1158015620029b6573d5f803e3d5ffd5b50505050505f80516020620080a58339815191526001600160a01b031663e5d6bf026201518042620029e991906200735c565b620029f69060016200735c565b6040518263ffffffff1660e01b815260040162002a1591815260200190565b5f604051808303815f87803b15801562002a2d575f80fd5b505af115801562002a40573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b15801562002a95575f80fd5b505af115801562002aa8573d5f803e3d5ffd5b505050505f5a9050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562002afe575f80fd5b505af115801562002b11573d5f803e3d5ffd5b505050505f5a62002b23908362007340565b905062000990604051806040016040528060128152602001712bb4ba34323930bb9033b0b9903ab9b2b21d60711b8152508262006e3e565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562002bac575f80fd5b505af115801562002bbf573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f80516020620080a5833981519152925063491cc7c291506084015f604051808303815f87803b15801562002c1c575f80fd5b505af115801562002c2f573d5f803e3d5ffd5b50506021546020546040516001600160a01b039283169450911691507f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3601f5460215460405163f2fde38b60e01b81526001600160a01b039182166004820152610100909204169063f2fde38b906024015b5f604051808303815f87803b15801562000f1e575f80fd5b606060188054806020026020016040519081016040528092919081815260200182805480156200195f57602002820191905f5260205f209081546001600160a01b0316815260019091019060200180831162001940575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156200195f57602002820191905f5260205f209081546001600160a01b0316815260019091019060200180831162001940575050505050905090565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562002dce575f80fd5b505af115801562002de1573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f80516020620080a5833981519152925063491cc7c291506084015f604051808303815f87803b15801562002e3e575f80fd5b505af115801562002e51573d5f803e3d5ffd5b50506021546020546040516001600160a01b039283169450911691507f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3601f5460215460405163f2fde38b60e01b81526001600160a01b039182166004820152610100909204169063f2fde38b906024015f604051808303815f87803b15801562002ede575f80fd5b505af115801562002ef1573d5f803e3d5ffd5b5050505062001302601f60019054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002f4b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002f719190620073bd565b6021546001600160a01b031662006f29565b62002fd9601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001c6d573d5f803e3d5ffd5b6200302f601f60019054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200135a573d5f803e3d5ffd5b62003085601f60019054906101000a90046001600160a01b03166001600160a01b0316638380edb76040518163ffffffff1660e01b8152600401602060405180830381865afa158015620012d6573d5f803e3d5ffd5b620030db601f60019054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620012d6573d5f803e3d5ffd5b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b1580156200312c575f80fd5b505af11580156200313f573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b1580156200319a575f80fd5b505af1158015620031ad573d5f803e3d5ffd5b505060225460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152935063ca669fa7925060240190505f604051808303815f87803b15801562003204575f80fd5b505af115801562003217573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0671bc16d674ec800006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562003272575f80fd5b505af115801562003285573d5f803e3d5ffd5b505060235460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152935063ca669fa7925060240190505f604051808303815f87803b158015620032dc575f80fd5b505af1158015620032ef573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db06729a2241af62c00006040518263ffffffff1660e01b81526004015f604051808303818588803b1580156200334a575f80fd5b505af11580156200335d573d5f803e3d5ffd5b5050505050620033ed601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa158015620033b8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620033de919062007314565b6753444835ec58000062006dcf565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b1580156200343e575f80fd5b505af115801562003451573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b158015620034a3575f80fd5b505af1158015620034b6573d5f803e3d5ffd5b5050505062003510601f60019054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620016f8573d5f803e3d5ffd5b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562003561575f80fd5b505af115801562003574573d5f803e3d5ffd5b505060405163f28dceb360e01b81525f80516020620080a5833981519152925063f28dceb39150620035a9906004016200741f565b5f604051808303815f87803b158015620035c1575f80fd5b505af1158015620035d4573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b1580156200362f575f80fd5b505af115801562003642573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152935063ca669fa7925060240190505f604051808303815f87803b15801562003699575f80fd5b505af1158015620036ac573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015620036fe575f80fd5b505af115801562003711573d5f803e3d5ffd5b505050506200376b601f60019054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620012d6573d5f803e3d5ffd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b158015620037bc575f80fd5b505af1158015620037cf573d5f803e3d5ffd5b5050601f5460215460405163f2fde38b60e01b81526001600160a01b03918216600482015261010090920416925063f2fde38b91506024015f604051808303815f87803b1580156200381f575f80fd5b505af115801562003832573d5f803e3d5ffd5b505050506200388c601f60019054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002f4b573d5f803e3d5ffd5b5f80516020620080a583398151915263e5d6bf02620038af62015180426200735c565b620038bc9060016200735c565b6040518263ffffffff1660e01b8152600401620038db91815260200190565b5f604051808303815f87803b158015620038f3575f80fd5b505af115801562003906573d5f803e3d5ffd5b5050505062003960601f60019054906101000a90046001600160a01b03166001600160a01b0316638380edb76040518163ffffffff1660e01b8152600401602060405180830381865afa158015620016f8573d5f803e3d5ffd5b60215460405163ca669fa760e01b81526001600160a01b039091166004820181905231905f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b158015620039b5575f80fd5b505af1158015620039c8573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562003a1a575f80fd5b505af115801562003a2d573d5f803e3d5ffd5b5050505062003a87601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001c6d573d5f803e3d5ffd5b6021546200086d906001600160a01b03163162001cb8836753444835ec5800006200735c565b62001302601f60019054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620012d6573d5f803e3d5ffd5b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562003b54575f80fd5b505af115801562003b67573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562003bc2575f80fd5b505af115801562003bd5573d5f803e3d5ffd5b505060225460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152935063ca669fa7925060240190505f604051808303815f87803b15801562003c2c575f80fd5b505af115801562003c3f573d5f803e3d5ffd5b5050601f5461010090046001600160a01b0316915063d0e30db0905062003c70670de0b6b3a764000060026200744b565b6040518263ffffffff1660e01b81526004015f604051808303818588803b15801562003c9a575f80fd5b505af115801562003cad573d5f803e3d5ffd5b505060235460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152935063ca669fa7925060240190505f604051808303815f87803b15801562003d04575f80fd5b505af115801562003d17573d5f803e3d5ffd5b5050601f5461010090046001600160a01b0316915063d0e30db0905062003d48670de0b6b3a764000060036200744b565b6040518263ffffffff1660e01b81526004015f604051808303818588803b15801562003d72575f80fd5b505af115801562003d85573d5f803e3d5ffd5b50505050505f670de0b6b3a7640000600362003da291906200744b565b62003db7670de0b6b3a764000060026200744b565b62003dcb90670de0b6b3a76400006200735c565b62003dd791906200735c565b90506200086d601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000840573d5f803e3d5ffd5b6060601b805480602002602001604051908101604052809291908181526020015f905b8282101562002323578382905f5260205f2090600202016040518060400160405290815f8201805462003e8590620073e5565b80601f016020809104026020016040519081016040528092919081815260200182805462003eb390620073e5565b801562003f025780601f1062003ed85761010080835404028352916020019162003f02565b820191905f5260205f20905b81548152906001019060200180831162003ee457829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801562003f8657602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162003f475790505b5050505050815250508152602001906001019062003e52565b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562003ff0575f80fd5b505af115801562004003573d5f803e3d5ffd5b505060405163f28dceb360e01b81525f80516020620080a5833981519152925063f28dceb39150620040389060040162007372565b5f604051808303815f87803b15801562004050575f80fd5b505af115801562004063573d5f803e3d5ffd5b5050601f5460225460405163f2fde38b60e01b81526001600160a01b03918216600482015261010090920416925063f2fde38b915060240162002ca5565b62001302601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001c6d573d5f803e3d5ffd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562004148575f80fd5b505af11580156200415b573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620041b6575f80fd5b505af1158015620041c9573d5f803e3d5ffd5b50505050505f80516020620080a58339815191526001600160a01b031663e5d6bf026201518042620041fc91906200735c565b620042099060016200735c565b6040518263ffffffff1660e01b81526004016200422891815260200190565b5f604051808303815f87803b15801562004240575f80fd5b505af115801562004253573d5f803e3d5ffd5b505060215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b158015620042a8575f80fd5b505af1158015620042bb573d5f803e3d5ffd5b505060405163f28dceb360e01b81526020600482015260146024820152732834b3b3bca130b7359d102737ba1037bbb732b960611b60448201525f80516020620080a5833981519152925063f28dceb3915060640162000ea1565b5f80516020620080a583398151915263e5d6bf026200433962015180426200735c565b620043469060016200735c565b6040518263ffffffff1660e01b81526004016200436591815260200190565b5f604051808303815f87803b1580156200437d575f80fd5b505af115801562004390573d5f803e3d5ffd5b5050505062001302601f60019054906101000a90046001600160a01b03166001600160a01b0316638380edb76040518163ffffffff1660e01b8152600401602060405180830381865afa158015620016f8573d5f803e3d5ffd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b1580156200443b575f80fd5b505af11580156200444e573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f80516020620080a5833981519152925063491cc7c291506084015f604051808303815f87803b158015620044ab575f80fd5b505af1158015620044be573d5f803e3d5ffd5b5050602080546040516001600160a01b0390911681527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258935001905060405180910390a1601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000f1e575f80fd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b158015620045a1575f80fd5b505af1158015620045b4573d5f803e3d5ffd5b505060405163f28dceb360e01b815260206004820152601960248201527f4e6577206f776e6572206973207a65726f20616464726573730000000000000060448201525f80516020620080a5833981519152925063f28dceb391506064015f604051808303815f87803b1580156200462a575f80fd5b505af11580156200463d573d5f803e3d5ffd5b5050601f5460405163f2fde38b60e01b81525f60048201526101009091046001600160a01b0316925063f2fde38b915060240162002ca5565b6060601a805480602002602001604051908101604052809291908181526020015f905b8282101562002323578382905f5260205f20018054620046b990620073e5565b80601f0160208091040260200160405190810160405280929190818152602001828054620046e790620073e5565b8015620047365780601f106200470c5761010080835404028352916020019162004736565b820191905f5260205f20905b8154815290600101906020018083116200471857829003601f168201915b50505050508152602001906001019062004699565b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b1580156200479c575f80fd5b505af1158015620047af573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f80516020620080a5833981519152925063491cc7c291506084015f604051808303815f87803b1580156200480c575f80fd5b505af11580156200481f573d5f803e3d5ffd5b5050602154604051670de0b6b3a764000081526001600160a01b0390911692507f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4915060200160405180910390a2601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620048c4575f80fd5b505af1158015620048d7573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152935063ca669fa7925060240190505f604051808303815f87803b1580156200492e575f80fd5b505af115801562004941573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f80516020620080a5833981519152925063491cc7c291506084015f604051808303815f87803b1580156200499e575f80fd5b505af1158015620049b1573d5f803e3d5ffd5b50506021546020546040516001600160a01b039283169450911691507f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3601f5460215460405163f2fde38b60e01b81526001600160a01b039182166004820152610100909204169063f2fde38b906024015f604051808303815f87803b15801562004a3e575f80fd5b505af115801562004a51573d5f803e3d5ffd5b505060215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b15801562004aa6575f80fd5b505af115801562004ab9573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f80516020620080a5833981519152925063491cc7c291506084015f604051808303815f87803b15801562004b16575f80fd5b505af115801562004b29573d5f803e3d5ffd5b50506021546040516001600160a01b0390911681527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589250602001905060405180910390a1601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562004bbc575f80fd5b505af115801562004bcf573d5f803e3d5ffd5b505060215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b15801562004c24575f80fd5b505af115801562004c37573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f80516020620080a5833981519152925063491cc7c291506084015f604051808303815f87803b15801562004c94575f80fd5b505af115801562004ca7573d5f803e3d5ffd5b50506021546040516001600160a01b0390911681527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9250602001905060405180910390a1601f60019054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562004d3a575f80fd5b505af115801562004d4d573d5f803e3d5ffd5b505f80516020620080a5833981519152925063e5d6bf02915062004d77905062015180426200735c565b62004d849060016200735c565b6040518263ffffffff1660e01b815260040162004da391815260200190565b5f604051808303815f87803b15801562004dbb575f80fd5b505af115801562004dce573d5f803e3d5ffd5b505060215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b15801562004e23575f80fd5b505af115801562004e36573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f80516020620080a5833981519152925063491cc7c291506084015f604051808303815f87803b15801562004e93575f80fd5b505af115801562004ea6573d5f803e3d5ffd5b5050602154604051670de0b6b3a764000081526001600160a01b0390911692507f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d591506020015b60405180910390a2601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000f1e575f80fd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562004f94575f80fd5b505af115801562004fa7573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562005002575f80fd5b505af115801562005015573d5f803e3d5ffd5b50505050505f80516020620080a58339815191526001600160a01b031663e5d6bf0262015180426200504891906200735c565b620050559060016200735c565b6040518263ffffffff1660e01b81526004016200507491815260200190565b5f604051808303815f87803b1580156200508c575f80fd5b505af11580156200509f573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b03909116600482018190523192505f80516020620080a5833981519152915063ca669fa7906024015f604051808303815f87803b158015620050f8575f80fd5b505af11580156200510b573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156200515d575f80fd5b505af115801562005170573d5f803e3d5ffd5b50505050620051ca601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001c6d573d5f803e3d5ffd5b6020546200086d906001600160a01b03163162001cb8670de0b6b3a7640000846200735c565b6060601d805480602002602001604051908101604052809291908181526020015f905b8282101562002323575f8481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620052bc57602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116200527d5790505b5050505050815250508152602001906001019062005213565b62001302601f60019054906101000a90046001600160a01b03166001600160a01b031663602bc62b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200532b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062005351919062007314565b62001cb862015180426200735c565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b158015620053b1575f80fd5b505af1158015620053c4573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b1580156200541f575f80fd5b505af115801562005432573d5f803e3d5ffd5b5050505050601f60019054906101000a90046001600160a01b03166040516200545b9062006ff2565b6001600160a01b039091168152602001604051809103905ff08015801562005485573d5f803e3d5ffd5b50602580546001600160a01b0319166001600160a01b0392909216918217905560405163c88a5e6d60e01b81525f80516020620080a58339815191529163c88a5e6d91620054e19190670de0b6b3a764000090600401620072fb565b5f604051808303815f87803b158015620054f9575f80fd5b505af11580156200550c573d5f803e3d5ffd5b505f80516020620080a5833981519152925063e5d6bf02915062005536905062015180426200735c565b620055439060016200735c565b6040518263ffffffff1660e01b81526004016200556291815260200190565b5f604051808303815f87803b1580156200557a575f80fd5b505af11580156200558d573d5f803e3d5ffd5b505060255460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b158015620055e2575f80fd5b505af1158015620055f5573d5f803e3d5ffd5b505060405163f28dceb360e01b81526020600482015260146024820152732834b3b3bca130b7359d102737ba1037bbb732b960611b60448201525f80516020620080a5833981519152925063f28dceb391506064015f604051808303815f87803b15801562005662575f80fd5b505af115801562005675573d5f803e3d5ffd5b5050505060255f9054906101000a90046001600160a01b03166001600160a01b0316639e5faafc6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000f1e575f80fd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562005717575f80fd5b505af11580156200572a573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562005785575f80fd5b505af115801562005798573d5f803e3d5ffd5b50505050505f80516020620080a58339815191526001600160a01b031663e5d6bf026201518042620057cb91906200735c565b620057d89060016200735c565b6040518263ffffffff1660e01b8152600401620057f791815260200190565b5f604051808303815f87803b1580156200580f575f80fd5b505af115801562005822573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b15801562005877575f80fd5b505af11580156200588a573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f80516020620080a5833981519152925063491cc7c291506084015f604051808303815f87803b158015620058e7575f80fd5b505af1158015620058fa573d5f803e3d5ffd5b505060208054604051670de0b6b3a764000081526001600160a01b0390911693507f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d592500162004eed565b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562005996575f80fd5b505af1158015620059a9573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562005a04575f80fd5b505af115801562005a17573d5f803e3d5ffd5b505050505062001302601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562005a72573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062005a98919062007314565b670de0b6b3a764000062006dcf565b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562005af8575f80fd5b505af115801562005b0b573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562005b66575f80fd5b505af115801562005b79573d5f803e3d5ffd5b505050505062005bd4601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562005a72573d5f803e3d5ffd5b60215462001302906001600160a01b03163162001cb8670de0b6b3a764000068056bc75e2d6310000062007340565b6060601c805480602002602001604051908101604052809291908181526020015f905b8282101562002323575f8481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562005ccf57602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162005c905790505b5050505050815250508152602001906001019062005c26565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562005d39575f80fd5b505af115801562005d4c573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562005da7575f80fd5b505af115801562005dba573d5f803e3d5ffd5b50505050505f80516020620080a58339815191526001600160a01b031663e5d6bf026001620151804262005def91906200735c565b62005dfb919062007340565b6040518263ffffffff1660e01b815260040162005e1a91815260200190565b5f604051808303815f87803b15801562005e32575f80fd5b505af115801562005e45573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa7915060240162000e17565b60606019805480602002602001604051908101604052809291908181526020015f905b8282101562002323578382905f5260205f2001805462005ecb90620073e5565b80601f016020809104026020016040519081016040528092919081815260200182805462005ef990620073e5565b801562005f485780601f1062005f1e5761010080835404028352916020019162005f48565b820191905f5260205f20905b81548152906001019060200180831162005f2a57829003601f168201915b50505050508152602001906001019062005eab565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562005fae575f80fd5b505af115801562005fc1573d5f803e3d5ffd5b505060405163f28dceb360e01b815260206004820152601660248201527510dbdb9d1c9858dd081a5cc81b9bdd081c185d5cd95960521b60448201525f80516020620080a5833981519152925063f28dceb391506064016200188a565b6008545f9060ff1615620060325750600190565b604051630667f9d760e41b81525f905f80516020620080a58339815191529063667f9d709062006092907f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d906519985a5b195960d21b90600401620072fb565b602060405180830381865afa158015620060ae573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620060d4919062007314565b1415905090565b5f805b600a811015620061ec5760215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562006139575f80fd5b505af11580156200614c573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db067016345785d8a00006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620061a7575f80fd5b505af1158015620061ba573d5f803e3d5ffd5b505050505067016345785d8a000082620061d591906200735c565b915080620061e38162007465565b915050620060de565b506200086d601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000840573d5f803e3d5ffd5b60405163c88a5e6d60e01b81526010906020906030905f80516020620080a58339815191529063c88a5e6d9062006289908690678ac7230489e8000090600401620072fb565b5f604051808303815f87803b158015620062a1575f80fd5b505af1158015620062b4573d5f803e3d5ffd5b505060405163c88a5e6d60e01b81525f80516020620080a5833981519152925063c88a5e6d9150620062f5908590678ac7230489e8000090600401620072fb565b5f604051808303815f87803b1580156200630d575f80fd5b505af115801562006320573d5f803e3d5ffd5b505060405163c88a5e6d60e01b81525f80516020620080a5833981519152925063c88a5e6d915062006361908490678ac7230489e8000090600401620072fb565b5f604051808303815f87803b15801562006379575f80fd5b505af11580156200638c573d5f803e3d5ffd5b50505050620063ae836001600160a01b031631678ac7230489e8000062006dcf565b620063cc826001600160a01b031631678ac7230489e8000062006dcf565b620063ea816001600160a01b031631678ac7230489e8000062006dcf565b60405163ca669fa760e01b81526001600160a01b03841660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562006437575f80fd5b505af11580156200644a573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620064a5575f80fd5b505af1158015620064b8573d5f803e3d5ffd5b505060405163ca669fa760e01b81526001600160a01b03861660048201525f80516020620080a5833981519152935063ca669fa7925060240190505f604051808303815f87803b1580156200650b575f80fd5b505af11580156200651e573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0671bc16d674ec800006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562006579575f80fd5b505af11580156200658c573d5f803e3d5ffd5b505060405163ca669fa760e01b81526001600160a01b03851660048201525f80516020620080a5833981519152935063ca669fa7925060240190505f604051808303815f87803b158015620065df575f80fd5b505af1158015620065f2573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db06729a2241af62c00006040518263ffffffff1660e01b81526004015f604051808303818588803b1580156200664d575f80fd5b505af115801562006660573d5f803e3d5ffd5b5050505050620066bb601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa158015620033b8573d5f803e3d5ffd5b5f80516020620080a583398151915263e5d6bf02620066de62015180426200735c565b620066eb9060016200735c565b6040518263ffffffff1660e01b81526004016200670a91815260200190565b5f604051808303815f87803b15801562006722575f80fd5b505af115801562006735573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b1580156200678a575f80fd5b505af11580156200679d573d5f803e3d5ffd5b5050601f5460405163f2fde38b60e01b81526001600160a01b038781166004830152610100909204909116925063f2fde38b91506024015f604051808303815f87803b158015620067ec575f80fd5b505af1158015620067ff573d5f803e3d5ffd5b505060405163ca669fa760e01b81526001600160a01b03861660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b15801562006850575f80fd5b505af115801562006863573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015620068b5575f80fd5b505af1158015620068c8573d5f803e3d5ffd5b5050505062006922601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001c6d573d5f803e3d5ffd5b505050565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562006978575f80fd5b505af11580156200698b573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620069e6575f80fd5b505af1158015620069f9573d5f803e3d5ffd5b50505050505f80516020620080a58339815191526001600160a01b031663e5d6bf02620151804262001dd391906200735c565b606060158054806020026020016040519081016040528092919081815260200182805480156200195f57602002820191905f5260205f209081546001600160a01b0316815260019091019060200180831162001940575050505050905090565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a58339815191529063ca669fa7906024015f604051808303815f87803b15801562006add575f80fd5b505af115801562006af0573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562006b4b575f80fd5b505af115801562006b5e573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152935063ca669fa7925060240190505f604051808303815f87803b15801562006bb5575f80fd5b505af115801562006bc8573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562006c1a575f80fd5b505af115801562006c2d573d5f803e3d5ffd5b505f80516020620080a5833981519152925063e5d6bf02915062006c57905062015180426200735c565b62006c649060016200735c565b6040518263ffffffff1660e01b815260040162006c8391815260200190565b5f604051808303815f87803b15801562006c9b575f80fd5b505af115801562006cae573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620080a5833981519152925063ca669fa791506024015f604051808303815f87803b15801562006d03575f80fd5b505af115801562006d16573d5f803e3d5ffd5b505060405163f28dceb360e01b81525f80516020620080a5833981519152925063f28dceb3915062000ea1906004016200741f565b6200130242601f60019054906101000a90046001600160a01b03166001600160a01b031663602bc62b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562006da2573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062006dc8919062007314565b1162006f86565b8082146200099f5760405163260a5b1560e21b815260048101839052602481018290525f80516020620080a5833981519152906398296c54906044015b5f6040518083038186803b15801562006e23575f80fd5b505afa15801562006e36573d5f803e3d5ffd5b505050505050565b6200099f828260405160240162006e5792919062007480565b60408051601f198184030181529190526020810180516001600160e01b0316632d839cb360e21b17905262006fc0565b8082106200099f5760405163b12fc00560e01b815260048101839052602481018290525f80516020620080a58339815191529063b12fc0059060440162006e0c565b80156200086d5760405163a598288560e01b815281151560048201525f80516020620080a58339815191529063a5982885906024015b5f6040518083038186803b15801562006f16575f80fd5b505afa1580156200151e573d5f803e3d5ffd5b806001600160a01b0316826001600160a01b0316146200099f576040516328a9b0fb60e11b81526001600160a01b038084166004830152821660248201525f80516020620080a58339815191529063515361f69060440162006e0c565b806200086d57604051630c9fd58160e01b815281151560048201525f80516020620080a583398151915290630c9fd5819060240162006eff565b6200086d815f6a636f6e736f6c652e6c6f6790505f80835160208501845afa505050565b6109fd80620074a483390190565b6102048062007ea183390190565b602080825282518282018190525f9190848201906040850190845b81811015620070425783516001600160a01b0316835292840192918401916001016200701b565b50909695505050505050565b5f81518084525f5b81811015620070745760208185018101518683018201520162007056565b505f602082860101526020601f19601f83011685010191505092915050565b602080825282518282018190525f919060409081850190600581811b8701840188860187805b858110156200714857603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200713157605f198985030183526200711e8486516200704e565b948e01949350918d0191600101620070ff565b505050978a019794505091880191600101620070b9565b50919a9950505050505050505050565b5f8151808452602080850194508084015f5b83811015620071925781516001600160e01b031916875295820195908201906001016200716a565b509495945050505050565b5f6020808301818452808551808352604092508286019150828160051b8701018488015f5b838110156200721857888303603f1901855281518051878552620071e9888601826200704e565b91890151858303868b015291905062007203818362007158565b968901969450505090860190600101620071c2565b509098975050505050505050565b5f602080830181845280855180835260408601915060408160051b87010192508387015f5b828110156200727d57603f198886030184526200726a8583516200704e565b945092850192908501906001016200724b565b5092979650505050505050565b5f6020808301818452808551808352604092508286019150828160051b8701018488015f5b838110156200721857888303603f19018552815180516001600160a01b03168452870151878401879052620072e78785018262007158565b9588019593505090860190600101620072af565b6001600160a01b03929092168252602082015260400190565b5f6020828403121562007325575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156200735657620073566200732c565b92915050565b808201808211156200735657620073566200732c565b6020808252600990820152682737ba1037bbb732b960b91b604082015260600190565b5f60208284031215620073a6575f80fd5b81518015158114620073b6575f80fd5b9392505050565b5f60208284031215620073ce575f80fd5b81516001600160a01b0381168114620073b6575f80fd5b600181811c90821680620073fa57607f821691505b6020821081036200741957634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526012908201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b604082015260600190565b80820281158282048414176200735657620073566200732c565b5f600182016200747957620074796200732c565b5060010190565b604081525f6200749460408301856200704e565b9050826020830152939250505056fe60806040526040516109fd3803806109fd833981016040819052610022916100c8565b4281116100755760405162461bcd60e51b815260206004820152601d60248201527f556e6c6f636b2074696d65206d75737420626520696e20667574757265000000604482015260640160405180910390fd5b5f80546001600160a01b03191633908117825560018390556002805460ff191690556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506100df565b5f602082840312156100d8575f80fd5b5051919050565b610911806100ec5f395ff3fe608060405260043610610105575f3560e01c80637d88209711610092578063c084b10b11610062578063c084b10b1461025f578063d0e30db014610293578063dfe6b5d61461029b578063f2fde38b146102c9578063fc7e286d146102e8575f80fd5b80637d882097146101e95780638380edb7146101fe5780638456cb59146102155780638da5cb5b14610229575f80fd5b80633f4ba83a116100d85780633f4ba83a1461016f5780634c34a982146101835780635c975abb14610197578063602bc62b146101c057806360464627146101d4575f80fd5b806312065fe0146101095780631ea30fef1461012a578063251c1aa3146101445780633ccfd60b14610159575b5f80fd5b348015610114575f80fd5b50475b6040519081526020015b60405180910390f35b348015610135575f80fd5b5061011766038d7ea4c6800081565b34801561014f575f80fd5b5061011760015481565b348015610164575f80fd5b5061016d610313565b005b34801561017a575f80fd5b5061016d6104f2565b34801561018e575f80fd5b506101175f1981565b3480156101a2575f80fd5b506002546101b09060ff1681565b6040519015158152602001610121565b3480156101cb575f80fd5b50600154610117565b3480156101df575f80fd5b5061011760055481565b3480156101f4575f80fd5b5061011760045481565b348015610209575f80fd5b506001544210156101b0565b348015610220575f80fd5b5061016d6105a6565b348015610234575f80fd5b505f54610247906001600160a01b031681565b6040516001600160a01b039091168152602001610121565b34801561026a575f80fd5b5061011761027936600461083a565b6001600160a01b03165f9081526003602052604090205490565b61016d61062f565b3480156102a6575f80fd5b506004546005544760408051938452602084019290925290820152606001610121565b3480156102d4575f80fd5b5061016d6102e336600461083a565b610762565b3480156102f3575f80fd5b5061011761030236600461083a565b60036020525f908152604090205481565b60025460ff161561033f5760405162461bcd60e51b815260040161033690610867565b60405180910390fd5b5f546001600160a01b0316331461038f5760405162461bcd60e51b81526020600482015260146024820152732834b3b3bca130b7359d102737ba1037bbb732b960611b6044820152606401610336565b6001544210156103e15760405162461bcd60e51b815260206004820152601760248201527f506967677942616e6b3a205374696c6c206c6f636b65640000000000000000006044820152606401610336565b478061041c5760405162461bcd60e51b815260206004820152600a6024820152694e6f2062616c616e636560b01b6044820152606401610336565b8060055f82825461042d9190610893565b909155505060405181815233907f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d59060200160405180910390a26040515f90339083908381818185875af1925050503d805f81146104a6576040519150601f19603f3d011682016040523d82523d5f602084013e6104ab565b606091505b50509050806104ee5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610336565b5050565b5f546001600160a01b0316331461051b5760405162461bcd60e51b8152600401610336906108b8565b60025460ff166105665760405162461bcd60e51b815260206004820152601660248201527510dbdb9d1c9858dd081a5cc81b9bdd081c185d5cd95960521b6044820152606401610336565b6002805460ff191690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b5f546001600160a01b031633146105cf5760405162461bcd60e51b8152600401610336906108b8565b60025460ff16156105f25760405162461bcd60e51b815260040161033690610867565b6002805460ff191660011790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200161059c565b60025460ff16156106525760405162461bcd60e51b815260040161033690610867565b5f341161069a5760405162461bcd60e51b81526020600482015260166024820152754d757374206465706f73697420736f6d657468696e6760501b6044820152606401610336565b66038d7ea4c680003410156106e55760405162461bcd60e51b815260206004820152601160248201527011195c1bdcda5d081d1bdbc81cdb585b1b607a1b6044820152606401610336565b335f90815260036020526040812054906106ff3483610893565b9050335f90815260036020526040812082905560048054349290610724908490610893565b909155505060405134815233907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c49060200160405180910390a25050565b5f546001600160a01b0316331461078b5760405162461bcd60e51b8152600401610336906108b8565b6001600160a01b0381166107e15760405162461bcd60e51b815260206004820152601960248201527f4e6577206f776e6572206973207a65726f2061646472657373000000000000006044820152606401610336565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f6020828403121561084a575f80fd5b81356001600160a01b0381168114610860575f80fd5b9392505050565b60208082526012908201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b604082015260600190565b808201808211156108b257634e487b7160e01b5f52601160045260245ffd5b92915050565b6020808252600990820152682737ba1037bbb732b960b91b60408201526060019056fea2646970667358221220403cb9ef02c668a9c8582feccebbe6fdecd071dedabafc1514a3fb07eeb84c4064736f6c63430008140033608060405234801561000f575f80fd5b5060405161020438038061020483398101604081905261002e91610052565b5f80546001600160a01b0319166001600160a01b039290921691909117905561007f565b5f60208284031215610062575f80fd5b81516001600160a01b0381168114610078575f80fd5b9392505050565b6101788061008c5f395ff3fe60806040526004361061002b575f3560e01c80639e5faafc1461009d578063d4b83992146100b1575f80fd5b36610099575f546001600160a01b03163115610097575f805460408051633ccfd60b60e01b815290516001600160a01b0390921692633ccfd60b9260048084019382900301818387803b158015610080575f80fd5b505af1158015610092573d5f803e3d5ffd5b505050505b005b5f80fd5b3480156100a8575f80fd5b506100976100eb565b3480156100bc575f80fd5b505f546100cf906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b5f805460408051633ccfd60b60e01b815290516001600160a01b0390921692633ccfd60b9260048084019382900301818387803b15801561012a575f80fd5b505af115801561013c573d5f803e3d5ffd5b5050505056fea26469706673582212207deeabf49144927664225f1d1cbfb6c880f4d89cea26549f110d2355c074ece564736f6c634300081400330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12da264697066735822122088600d1ce1e00ce450f45452ae6acfcc150819b77a95b913195b81b3a133081764736f6c63430008140033","sourceMap":"119:18086:20:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12279:305;;;:::i;:::-;;3100:344;;;:::i;12766:44::-;;;;;-1:-1:-1;;;;;12766:44:20;;;;;;-1:-1:-1;;;;;214:32:21;;;196:51;;184:2;169:18;12766:44:20;;;;;;;;897:543;;;:::i;4444:342::-;;;:::i;9609:142::-;;;:::i;10971:236::-;;;:::i;7800:98::-;;;:::i;8186:96::-;;;:::i;2560:223::-;;;:::i;9391:212::-;;;:::i;10355:261::-;;;:::i;2907:134:6:-;;;:::i;:::-;;;;;;;:::i;11341:556:20:-;;;:::i;7401:393::-;;;:::i;10030:319::-;;;:::i;3823:151:6:-;;;:::i;:::-;;;;;;;:::i;5193:267:20:-;;;:::i;9757:::-;;;:::i;2383:171::-;;;:::i;2789:305::-;;;:::i;5950:517::-;;;:::i;8933:219::-;;;:::i;3684:133:6:-;;;:::i;3385:141::-;;;:::i;8288:259:20:-;;;:::i;13531:1543::-;;;:::i;9296:89::-;;;:::i;1826:551::-;;;:::i;3193:186:6:-;;;:::i;:::-;;;;;;;:::i;8756:171:20:-;;;:::i;16241:99::-;;;:::i;4046:392::-;;;:::i;7904:148::-;;;:::i;10788:177::-;;;:::i;8553:197::-;;;:::i;3047:140:6:-;;;:::i;:::-;;;;;;;:::i;15080:1022:20:-;;;:::i;3577:463::-;;;:::i;3532:146:6:-;;;:::i;:::-;;;;;;;:::i;16541:119:20:-;;;:::i;12817:578::-;;;:::i;4792:395::-;;;:::i;16346:189::-;;;:::i;1572:248::-;;;:::i;2754:147:6:-;;;:::i;7018:377:20:-;;;:::i;2459:141:6:-;;;:::i;156:26:20:-;;;;;;;;-1:-1:-1;;;;;156:26:20;;;10622:160;;;:::i;1306:195:1:-;;;:::i;:::-;;;7030:14:21;;7023:22;7005:41;;6993:2;6978:18;1306:195:1;6865:187:21;11903:370:20;;;:::i;17004:1199::-;;;:::i;6613:399::-;;;:::i;2606:142:6:-;;;:::i;5466:478:20:-;;;:::i;16666:196::-;;;:::i;1065:26:13:-;;;;;;;;;12279:305:20;12436:5;;12428:24;;-1:-1:-1;;;12428:24:20;;-1:-1:-1;;12401:17:20;-1:-1:-1;;;;;;;;;;;336:42:0;12428:7:20;;:24;;-1:-1:-1;;;;;12436:5:20;;;;12401:17;;12428:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12472:5:20;;12463:15;;-1:-1:-1;;;12463:15:20;;-1:-1:-1;;;;;12472:5:20;;;12463:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;12463:8:20;;-1:-1:-1;169:18:21;;12463:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12488:9;;;;;;;;;-1:-1:-1;;;;;12488:9:20;-1:-1:-1;;;;;12488:17:20;;12513:8;12488:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12535:42;12544:9;;;;;;;;;-1:-1:-1;;;;;12544:9:20;-1:-1:-1;;;;;12544:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12568:8;12535;:42::i;:::-;12328:256;12279:305::o;3100:344::-;3161:5;;3152:15;;-1:-1:-1;;;3152:15:20;;-1:-1:-1;;;;;3161:5:20;;;3152:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;3152:8:20;;169:18:21;;3152:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3177:16;3196:9;3177:28;;3215:9;;;;;;;;;-1:-1:-1;;;;;3215:9:20;-1:-1:-1;;;;;3215:17:20;;840:7;3215:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3267:15;3296:9;3285:20;;:8;:20;:::i;:::-;3267:38;;3316:41;;;;;;;;;;;;;;-1:-1:-1;;;3316:41:20;;;3349:7;3316:11;:41::i;:::-;3412:25;3421:7;3430:6;3412:8;:25::i;:::-;3142:302;;3100:344::o;897:543::-;962:5;:20;;-1:-1:-1;;;;;;962:20:20;;;978:3;962:20;;;;;;992:5;:20;;;;1008:3;992:20;;;1022:5;:20;;;;1038:3;1022:20;;;1052:5;:20;;;;1068:3;1052:20;;;;;;1082:8;:23;;;;;1101:3;1082:23;;;;1116:31;;-1:-1:-1;;;1116:31:20;;-1:-1:-1;;;;;;;;;;;336:42:0;1116:7:20;;:31;;748:9;;1116:31;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1165:5:20;;1157:31;;-1:-1:-1;;;1157:31:20;;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;1157:7:20;;-1:-1:-1;1157:31:20;;-1:-1:-1;;;;;1165:5:20;;748:9;;1157:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1206:5:20;;1198:31;;-1:-1:-1;;;1198:31:20;;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;1198:7:20;;-1:-1:-1;1198:31:20;;-1:-1:-1;;;;;1206:5:20;;748:9;;1198:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1247:5:20;;1239:31;;-1:-1:-1;;;1239:31:20;;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;1239:7:20;;-1:-1:-1;1239:31:20;;-1:-1:-1;;;;;1247:5:20;;748:9;;1239:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1288:8:20;;1280:34;;-1:-1:-1;;;1280:34:20;;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;1280:7:20;;-1:-1:-1;1280:34:20;;-1:-1:-1;;;;;1288:8:20;;748:9;;1280:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1361:5:20;;1352:15;;-1:-1:-1;;;1352:15:20;;-1:-1:-1;;;;;1361:5:20;;;1352:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;1352:8:20;;-1:-1:-1;169:18:21;;1352:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;794:6;1403:15;:29;;;;:::i;:::-;1389:44;;;;;:::i;:::-;8274:25:21;;;8262:2;8247:18;1389:44:20;;;;;;;;;;;;;;;;;;;;;;;1377:9;;:56;;;;;-1:-1:-1;;;;;1377:56:20;;;;;-1:-1:-1;;;;;1377:56:20;;;;;;897:543::o;4444:342::-;4548:5;;4539:15;;-1:-1:-1;;;4539:15:20;;-1:-1:-1;;;;;4548:5:20;;;4539:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;4539:8:20;;169:18:21;;4539:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4564:9;;;;;;;;;-1:-1:-1;;;;;4564:9:20;-1:-1:-1;;;;;4564:17:20;;840:7;4564:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4691:5:20;;4682:15;;-1:-1:-1;;;4682:15:20;;-1:-1:-1;;;;;4691:5:20;;;4682:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;4682:8:20;;-1:-1:-1;169:18:21;;;-1:-1:-1;4682:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4707:42:20;;-1:-1:-1;;;4707:42:20;;8511:2:21;4707:42:20;;;8493:21:21;8550:2;8530:18;;;8523:30;8589:25;8569:18;;;8562:53;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;4707:15:20;;-1:-1:-1;8632:18:21;;4707:42:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4759:9;;;;;;;;;-1:-1:-1;;;;;4759:9:20;-1:-1:-1;;;;;4759:18:20;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4444:342::o;9609:142::-;9673:5;;9664:15;;-1:-1:-1;;;9664:15:20;;-1:-1:-1;;;;;9673:5:20;;;9664:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;9664:8:20;;169:18:21;;9664:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9689:28:20;;-1:-1:-1;;;9689:28:20;;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;9689:15:20;;-1:-1:-1;9689:28:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9727:9;;;;;;;;;-1:-1:-1;;;;;9727:9:20;-1:-1:-1;;;;;9727:15:20;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10971:236;11034:5;;11025:15;;-1:-1:-1;;;11025:15:20;;-1:-1:-1;;;;;11034:5:20;;;11025:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;11025:8:20;;169:18:21;;11025:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11050:9;;;;;;;;;-1:-1:-1;;;;;11050:9:20;-1:-1:-1;;;;;11050:15:20;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11087:5:20;;11078:15;;-1:-1:-1;;;11078:15:20;;-1:-1:-1;;;;;11087:5:20;;;11078:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;11078:8:20;;-1:-1:-1;169:18:21;;11078:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11103:38:20;;-1:-1:-1;;;11103:38:20;;11117:4;11103:38;;;9204:41:21;;;9261:18;;;9254:50;;;11129:5:20;9320:18:21;;;9313:50;9379:18;;;9372:50;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;11103:13:20;;-1:-1:-1;9176:19:21;;11103:38:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11165:5:20;;;11156:15;;-1:-1:-1;;;;;11165:5:20;;;196:51:21;;11156:15:20;;-1:-1:-1;169:18:21;;-1:-1:-1;11156:15:20;;;;;;;11181:9;;;;;;;;;-1:-1:-1;;;;;11181:9:20;-1:-1:-1;;;;;11181:17:20;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7800:98;7856:35;7868:9;;;;;;;;;-1:-1:-1;;;;;7868:9:20;-1:-1:-1;;;;;7868:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7856:11;:35::i;:::-;7800:98::o;8186:96::-;8241:34;8250:9;;;;;;;;;-1:-1:-1;;;;;8250:9:20;-1:-1:-1;;;;;8250:15:20;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8269:5;;-1:-1:-1;;;;;8269:5:20;8241:8;:34::i;2560:223::-;2623:5;;2614:15;;-1:-1:-1;;;2614:15:20;;-1:-1:-1;;;;;2623:5:20;;;2614:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;2614:8:20;;169:18:21;;2614:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2639:38:20;;-1:-1:-1;;;2639:38:20;;2653:4;2639:38;;;9204:41:21;;;9261:18;;;9254:50;;;2665:5:20;9320:18:21;;;9313:50;9379:18;;;9372:50;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;2639:13:20;;-1:-1:-1;9176:19:21;;2639:38:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2702:5:20;;2692:32;;840:7;8274:25:21;;-1:-1:-1;;;;;2702:5:20;;;;-1:-1:-1;2692:32:20;;-1:-1:-1;8262:2:21;8247:18;2692:32:20;;;;;;;2734:9;;;;;;;;;-1:-1:-1;;;;;2734:9:20;-1:-1:-1;;;;;2734:17:20;;840:7;2734:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2560:223::o;9391:212::-;9446:5;;9437:15;;-1:-1:-1;;;9437:15:20;;-1:-1:-1;;;;;9446:5:20;;;9437:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;9437:8:20;;169:18:21;;9437:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9462:38:20;;-1:-1:-1;;;9462:38:20;;9476:4;9462:38;;;9204:41:21;;;9261:18;;;9254:50;;;9488:5:20;9320:18:21;;;9313:50;9379:18;;;9372:50;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;9462:13:20;;-1:-1:-1;9176:19:21;;9462:38:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9522:5:20;;;9515:13;;-1:-1:-1;;;;;9522:5:20;;;196:51:21;;9515:13:20;;-1:-1:-1;169:18:21;;-1:-1:-1;9515:13:20;;;;;;;9538:9;;;;;;;;;-1:-1:-1;;;;;9538:9:20;-1:-1:-1;;;;;9538:15:20;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9566:30;9577:9;;;;;;;;;-1:-1:-1;;;;;9577:9:20;-1:-1:-1;;;;;9577:16:20;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9566:10;:30::i;10355:261::-;10444:5;;10435:15;;-1:-1:-1;;;10435:15:20;;-1:-1:-1;;;;;10444:5:20;;;10435:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;10435:8:20;;169:18:21;;10435:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10460:9;;;;;;;;;-1:-1:-1;;;;;10460:9:20;-1:-1:-1;;;;;10460:15:20;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10536:5:20;;10527:15;;-1:-1:-1;;;10527:15:20;;-1:-1:-1;;;;;10536:5:20;;;10527:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;10527:8:20;;-1:-1:-1;169:18:21;;10527:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10552:28:20;;-1:-1:-1;;;10552:28:20;;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;10552:15:20;;-1:-1:-1;10552:28:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10590:9;;;;;;;;;-1:-1:-1;;;;;10590:9:20;-1:-1:-1;;;;;10590:17:20;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2907:134:6;2954:33;3018:16;2999:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2999:35:6;;;;;;;;;;;;;;;;;;;;;;;2907:134;:::o;11341:556:20:-;11437:5;;11428:15;;-1:-1:-1;;;11428:15:20;;-1:-1:-1;;;;;11437:5:20;;;11428:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;11428:8:20;;169:18:21;;11428:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11453:9;;;;;;;;;-1:-1:-1;;;;;11453:9:20;-1:-1:-1;;;;;11453:17:20;;840:7;11453:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;11535:7:20;;794:6;11543:15;:29;;;;:::i;:::-;:33;;11575:1;11543:33;:::i;:::-;11535:42;;;;;;;;;;;;;8274:25:21;;8262:2;8247:18;;8128:177;11535:42:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11588:23;11614:9;;;;;;;;;-1:-1:-1;;;;;11614:9:20;-1:-1:-1;;;;;11614:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11669:5;;11693:15;;-1:-1:-1;;;11693:15:20;;-1:-1:-1;;;;;11669:5:20;;;11693:15;;;196:51:21;;;11588:48:20;;-1:-1:-1;11669:13:20;;;-1:-1:-1;;;;;;;;;;;336:42:0;11693:8:20;;169:18:21;;11693:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11718:9;;;;;;;;;-1:-1:-1;;;;;11718:9:20;-1:-1:-1;;;;;11718:18:20;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11790:35;11799:9;;;;;;;;;-1:-1:-1;;;;;11799:9:20;-1:-1:-1;;;;;11799:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11823:1;11790:8;:35::i;:::-;11844:5;;11835:55;;-1:-1:-1;;;;;11844:5:20;:13;11859:30;11874:15;11859:12;:30;:::i;:::-;11835:8;:55::i;7401:393::-;7500:5;;7491:15;;-1:-1:-1;;;7491:15:20;;-1:-1:-1;;;;;7500:5:20;;;7491:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;7491:8:20;;169:18:21;;7491:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7516:9;;;;;;;;;-1:-1:-1;;;;;7516:9:20;-1:-1:-1;;;;;7516:17:20;;840:7;7516:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;7615:7:20;;794:6;7623:15;:29;;;;:::i;:::-;:40;;7655:8;7623:40;:::i;:::-;7615:49;;;;;;;;;;;;;8274:25:21;;8262:2;8247:18;;8128:177;7615:49:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7684:5:20;;7675:15;;-1:-1:-1;;;7675:15:20;;-1:-1:-1;;;;;7684:5:20;;;7675:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;7675:8:20;;-1:-1:-1;169:18:21;;7675:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7700:9;;;;;;;;;-1:-1:-1;;;;;7700:9:20;-1:-1:-1;;;;;7700:18:20;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7752:35;7761:9;;;;;;;;;-1:-1:-1;;;;;7761:9:20;-1:-1:-1;;;;;7761:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10030:319;10110:5;;10101:15;;-1:-1:-1;;;10101:15:20;;-1:-1:-1;;;;;10110:5:20;;;10101:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;10101:8:20;;169:18:21;;10101:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10126:9;;;;;;;;;-1:-1:-1;;;;;10126:9:20;-1:-1:-1;;;;;10126:15:20;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10187:5:20;;10178:15;;-1:-1:-1;;;10178:15:20;;-1:-1:-1;;;;;10187:5:20;;;10178:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;10178:8:20;;-1:-1:-1;169:18:21;;10178:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10203:38:20;;-1:-1:-1;;;10203:38:20;;10217:4;10203:38;;;9204:41:21;;;9261:18;;;9254:50;;;10229:5:20;9320:18:21;;;9313:50;9379:18;;;9372:50;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;10203:13:20;;-1:-1:-1;9176:19:21;;10203:38:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10265:5:20;;;10256:15;;-1:-1:-1;;;;;10265:5:20;;;196:51:21;;10256:15:20;;-1:-1:-1;169:18:21;;-1:-1:-1;10256:15:20;;;;;;;10281:9;;;;;;;;;-1:-1:-1;;;;;10281:9:20;-1:-1:-1;;;;;10281:17:20;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10311:31;10323:9;;;;;;;;;-1:-1:-1;;;;;10323:9:20;-1:-1:-1;;;;;10323:16:20;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3823:151:6;3872:42;3948:19;3926:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3926:41:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3823:151;:::o;5193:267:20:-;-1:-1:-1;;;;;;;;;;;5285:7:20;5293:29;794:6;5293:15;:29;:::i;:::-;:33;;5325:1;5293:33;:::i;:::-;5285:42;;;;;;;;;;;;;8274:25:21;;8262:2;8247:18;;8128:177;5285:42:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5347:5:20;;5338:15;;-1:-1:-1;;;5338:15:20;;-1:-1:-1;;;;;5347:5:20;;;5338:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;5338:8:20;;-1:-1:-1;169:18:21;;5338:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;5363:15:20;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9757:267;9854:5;;9845:15;;-1:-1:-1;;;9845:15:20;;-1:-1:-1;;;;;9854:5:20;;;9845:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;9845:8:20;;169:18:21;;9845:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9870:9;;;;;;;;;-1:-1:-1;;;;;9870:9:20;-1:-1:-1;;;;;9870:15:20;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9937:5:20;;9928:15;;-1:-1:-1;;;9928:15:20;;-1:-1:-1;;;;;9937:5:20;;;9928:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;9928:8:20;;-1:-1:-1;169:18:21;;9928:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9953:37:20;;-1:-1:-1;;;9953:37:20;;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;9953:15:20;;-1:-1:-1;9953:37:20;;;;;:::i;2383:171::-;2451:5;;2442:15;;-1:-1:-1;;;2442:15:20;;-1:-1:-1;;;;;2451:5:20;;;2442:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;2442:8:20;;169:18:21;;2442:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2467:41:20;;-1:-1:-1;;;2467:41:20;;10942:2:21;2467:41:20;;;10924:21:21;10981:2;10961:18;;;10954:30;-1:-1:-1;;;11000:18:21;;;10993:52;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;2467:15:20;;-1:-1:-1;11062:18:21;;2467:41:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2518:9;;;;;;;;;-1:-1:-1;;;;;2518:9:20;-1:-1:-1;;;;;2518:17:20;;2543:1;2518:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2789:305;2891:5;;2882:15;;-1:-1:-1;;;2882:15:20;;-1:-1:-1;;;;;2891:5:20;;;2882:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;2882:8:20;;169:18:21;;2882:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2907:9;;;;;;;;;-1:-1:-1;;;;;2907:9:20;-1:-1:-1;;;;;2907:15:20;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2982:5:20;;2973:15;;-1:-1:-1;;;2973:15:20;;-1:-1:-1;;;;;2982:5:20;;;2973:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;2973:8:20;;-1:-1:-1;169:18:21;;2973:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2998:37:20;;-1:-1:-1;;;2998:37:20;;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;2998:15:20;;-1:-1:-1;2998:37:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3045:9;;;;;;;;;-1:-1:-1;;;;;3045:9:20;-1:-1:-1;;;;;3045:17:20;;840:7;3045:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5950:517;6045:5;;6036:15;;-1:-1:-1;;;6036:15:20;;-1:-1:-1;;;;;6045:5:20;;;6036:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;6036:8:20;;169:18:21;;6036:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6061:9;;;;;;;;;-1:-1:-1;;;;;6061:9:20;-1:-1:-1;;;;;6061:17:20;;840:7;6061:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;6143:7:20;;794:6;6151:15;:29;;;;:::i;:::-;:33;;6183:1;6151:33;:::i;:::-;6143:42;;;;;;;;;;;;;8274:25:21;;8262:2;8247:18;;8128:177;6143:42:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6205:5:20;;6196:15;;-1:-1:-1;;;6196:15:20;;-1:-1:-1;;;;;6205:5:20;;;6196:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;6196:8:20;;-1:-1:-1;169:18:21;;6196:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6221:16;6240:9;6221:28;;6259:9;;;;;;;;;-1:-1:-1;;;;;6259:9:20;-1:-1:-1;;;;;6259:18:20;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6289:15;6318:9;6307:20;;:8;:20;:::i;:::-;6289:38;;6338:42;;;;;;;;;;;;;;-1:-1:-1;;;6338:42:20;;;6372:7;6338:11;:42::i;8933:219::-;8998:5;;8989:15;;-1:-1:-1;;;8989:15:20;;-1:-1:-1;;;;;8998:5:20;;;8989:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;8989:8:20;;169:18:21;;8989:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9014:38:20;;-1:-1:-1;;;9014:38:20;;9028:4;9014:38;;;9204:41:21;;;9261:18;;;9254:50;;;9040:5:20;9320:18:21;;;9313:50;9379:18;;;9372:50;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;9014:13:20;;-1:-1:-1;9176:19:21;;9014:38:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9095:5:20;;9088;;9067:34;;-1:-1:-1;;;;;9095:5:20;;;;-1:-1:-1;9088:5:20;;;-1:-1:-1;9067:34:20;;9095:5;;9067:34;9111:9;;9139:5;;9111:34;;-1:-1:-1;;;9111:34:20;;-1:-1:-1;;;;;9139:5:20;;;9111:34;;;196:51:21;9111:9:20;;;;;;:27;;169:18:21;;9111:34:20;;;;;;;;;;;;;;;;;;;;3684:133:6;3730:33;3794:16;3775:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3775:35:6;;;;;;;;;;;;;;;;;;;;;;3684:133;:::o;3385:141::-;3433:35;3501:18;3480:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3480:39:6;;;;;;;;;;;;;;;;;;;;;;3385:141;:::o;8288:259:20:-;8348:5;;8339:15;;-1:-1:-1;;;8339:15:20;;-1:-1:-1;;;;;8348:5:20;;;8339:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;8339:8:20;;169:18:21;;8339:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8364:38:20;;-1:-1:-1;;;8364:38:20;;8378:4;8364:38;;;9204:41:21;;;9261:18;;;9254:50;;;8390:5:20;9320:18:21;;;9313:50;9379:18;;;9372:50;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;8364:13:20;;-1:-1:-1;9176:19:21;;8364:38:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8445:5:20;;8438;;8417:34;;-1:-1:-1;;;;;8445:5:20;;;;-1:-1:-1;8438:5:20;;;-1:-1:-1;8417:34:20;;8445:5;;8417:34;8461:9;;8489:5;;8461:34;;-1:-1:-1;;;8461:34:20;;-1:-1:-1;;;;;8489:5:20;;;8461:34;;;196:51:21;8461:9:20;;;;;;:27;;169:18:21;;8461:34:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8506;8515:9;;;;;;;;;-1:-1:-1;;;;;8515:9:20;-1:-1:-1;;;;;8515:15:20;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8534:5;;-1:-1:-1;;;;;8534:5:20;8506:8;:34::i;13531:1543::-;13632:35;13641:9;;;;;;;;;-1:-1:-1;;;;;13641:9:20;-1:-1:-1;;;;;13641:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13632:35;13677:34;13686:9;;;;;;;;;-1:-1:-1;;;;;13686:9:20;-1:-1:-1;;;;;13686:15:20;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13677:34;13721:35;13733:9;;;;;;;;;-1:-1:-1;;;;;13733:9:20;-1:-1:-1;;;;;13733:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13721:35;13766:31;13778:9;;;;;;;;;-1:-1:-1;;;;;13778:9:20;-1:-1:-1;;;;;13778:16:20;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13766:31;13859:5;;13850:15;;-1:-1:-1;;;13850:15:20;;-1:-1:-1;;;;;13859:5:20;;;13850:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;13850:8:20;;169:18:21;;13850:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13875:9;;;;;;;;;-1:-1:-1;;;;;13875:9:20;-1:-1:-1;;;;;13875:17:20;;13900:7;13875:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13930:5:20;;13921:15;;-1:-1:-1;;;13921:15:20;;-1:-1:-1;;;;;13930:5:20;;;13921:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;13921:8:20;;-1:-1:-1;169:18:21;;;-1:-1:-1;13921:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13946:9;;;;;;;;;-1:-1:-1;;;;;13946:9:20;-1:-1:-1;;;;;13946:17:20;;13971:7;13946:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14001:5:20;;13992:15;;-1:-1:-1;;;13992:15:20;;-1:-1:-1;;;;;14001:5:20;;;13992:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;13992:8:20;;-1:-1:-1;169:18:21;;;-1:-1:-1;13992:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14017:9;;;;;;;;;-1:-1:-1;;;;;14017:9:20;-1:-1:-1;;;;;14017:17:20;;14042:7;14017:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14063:41;14072:9;;;;;;;;;-1:-1:-1;;;;;14072:9:20;-1:-1:-1;;;;;14072:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14096:7;14063:8;:41::i;:::-;14168:5;;14159:15;;-1:-1:-1;;;14159:15:20;;-1:-1:-1;;;;;14168:5:20;;;14159:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;14159:8:20;;169:18:21;;14159:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14184:9;;;;;;;;;-1:-1:-1;;;;;14184:9:20;-1:-1:-1;;;;;14184:15:20;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14211:30;14222:9;;;;;;;;;-1:-1:-1;;;;;14222:9:20;-1:-1:-1;;;;;14222:16:20;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14211:30;14313:5;;14304:15;;-1:-1:-1;;;14304:15:20;;-1:-1:-1;;;;;14313:5:20;;;14304:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;14304:8:20;;169:18:21;;14304:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14329:37:20;;-1:-1:-1;;;14329:37:20;;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;14329:15:20;;-1:-1:-1;14329:37:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14376:9;;;;;;;;;-1:-1:-1;;;;;14376:9:20;-1:-1:-1;;;;;14376:17:20;;14401:7;14376:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14458:5:20;;14449:15;;-1:-1:-1;;;14449:15:20;;-1:-1:-1;;;;;14458:5:20;;;14449:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;14449:8:20;;-1:-1:-1;169:18:21;;;-1:-1:-1;14449:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14474:9;;;;;;;;;-1:-1:-1;;;;;14474:9:20;-1:-1:-1;;;;;14474:17:20;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14503:31;14515:9;;;;;;;;;-1:-1:-1;;;;;14515:9:20;-1:-1:-1;;;;;14515:16:20;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14503:31;14592:5;;14583:15;;-1:-1:-1;;;14583:15:20;;-1:-1:-1;;;;;14592:5:20;;;14583:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;14583:8:20;;169:18:21;;14583:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14608:9:20;;14636:5;;14608:34;;-1:-1:-1;;;14608:34:20;;-1:-1:-1;;;;;14636:5:20;;;14608:34;;;196:51:21;14608:9:20;;;;;;-1:-1:-1;14608:27:20;;-1:-1:-1;169:18:21;;14608:34:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14652;14661:9;;;;;;;;;-1:-1:-1;;;;;14661:9:20;-1:-1:-1;;;;;14661:15:20;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14652:34;-1:-1:-1;;;;;;;;;;;14734:7:20;14742:29;794:6;14742:15;:29;:::i;:::-;:33;;14774:1;14742:33;:::i;:::-;14734:42;;;;;;;;;;;;;8274:25:21;;8262:2;8247:18;;8128:177;14734:42:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14786:34;14797:9;;;;;;;;;-1:-1:-1;;;;;14797:9:20;-1:-1:-1;;;;;14797:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14786:34;14896:5;;14919:15;;-1:-1:-1;;;14919:15:20;;-1:-1:-1;;;;;14896:5:20;;;14919:15;;;196:51:21;;;14896:13:20;;-1:-1:-1;;;;;;;;;;;336:42:0;14919:8:20;;169:18:21;;14919:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14944:9;;;;;;;;;-1:-1:-1;;;;;14944:9:20;-1:-1:-1;;;;;14944:18:20;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14974:35;14983:9;;;;;;;;;-1:-1:-1;;;;;14983:9:20;-1:-1:-1;;;;;14983:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14974:35;15028:5;;15019:48;;-1:-1:-1;;;;;15028:5:20;:13;15043:23;:13;15059:7;15043:23;:::i;9296:89::-;9347:31;9359:9;;;;;;;;;-1:-1:-1;;;;;9359:9:20;-1:-1:-1;;;;;9359:16:20;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1826:551;1916:5;;1907:15;;-1:-1:-1;;;1907:15:20;;-1:-1:-1;;;;;1916:5:20;;;1907:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;1907:8:20;;169:18:21;;1907:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1932:9;;;;;;;;;-1:-1:-1;;;;;1932:9:20;-1:-1:-1;;;;;1932:17:20;;840:7;1932:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2021:5:20;;2012:15;;-1:-1:-1;;;2012:15:20;;-1:-1:-1;;;;;2021:5:20;;;2012:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;2012:8:20;;-1:-1:-1;169:18:21;;;-1:-1:-1;2012:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2037:9:20;;;;;-1:-1:-1;;;;;2037:9:20;;-1:-1:-1;2037:17:20;;-1:-1:-1;2062:18:20;840:7;2079:1;2062:18;:::i;:::-;2037:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2130:5:20;;2121:15;;-1:-1:-1;;;2121:15:20;;-1:-1:-1;;;;;2130:5:20;;;2121:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;2121:8:20;;-1:-1:-1;169:18:21;;;-1:-1:-1;2121:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2146:9:20;;;;;-1:-1:-1;;;;;2146:9:20;;-1:-1:-1;2146:17:20;;-1:-1:-1;2171:18:20;840:7;2188:1;2171:18;:::i;:::-;2146:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2203:22;840:7;2310:1;2293:18;;;;:::i;:::-;2258;840:7;2275:1;2258:18;:::i;:::-;2228:49;;840:7;2228:49;:::i;:::-;:84;;;;:::i;:::-;2203:109;;2322:48;2331:9;;;;;;;;;-1:-1:-1;;;;;2331:9:20;-1:-1:-1;;;;;2331:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3193:186:6;3249:56;3346:26;3317:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3317:55:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8756:171:20;8832:5;;8823:15;;-1:-1:-1;;;8823:15:20;;-1:-1:-1;;;;;8832:5:20;;;8823:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;8823:8:20;;169:18:21;;8823:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8848:28:20;;-1:-1:-1;;;8848:28:20;;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;8848:15:20;;-1:-1:-1;8848:28:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8886:9:20;;8914:5;;8886:34;;-1:-1:-1;;;8886:34:20;;-1:-1:-1;;;;;8914:5:20;;;8886:34;;;196:51:21;8886:9:20;;;;;;-1:-1:-1;8886:27:20;;-1:-1:-1;169:18:21;;8886:34:20;14:239:21;16241:99:20;16298:35;16307:9;;;;;;;;;-1:-1:-1;;;;;16307:9:20;-1:-1:-1;;;;;16307:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4046:392;4146:5;;4137:15;;-1:-1:-1;;;4137:15:20;;-1:-1:-1;;;;;4146:5:20;;;4137:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;4137:8:20;;169:18:21;;4137:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4162:9;;;;;;;;;-1:-1:-1;;;;;4162:9:20;-1:-1:-1;;;;;4162:17:20;;840:7;4162:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;4244:7:20;;794:6;4252:15;:29;;;;:::i;:::-;:33;;4284:1;4252:33;:::i;:::-;4244:42;;;;;;;;;;;;;8274:25:21;;8262:2;8247:18;;8128:177;4244:42:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4346:5:20;;4337:15;;-1:-1:-1;;;4337:15:20;;-1:-1:-1;;;;;4346:5:20;;;4337:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;4337:8:20;;-1:-1:-1;169:18:21;;4337:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4362:39:20;;-1:-1:-1;;;4362:39:20;;11465:2:21;4362:39:20;;;11447:21:21;11504:2;11484:18;;;11477:30;-1:-1:-1;;;11523:18:21;;;11516:50;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;4362:15:20;;-1:-1:-1;11583:18:21;;4362:39:20;11264:343:21;7904:148:20;-1:-1:-1;;;;;;;;;;;7959:7:20;7967:29;794:6;7967:15;:29;:::i;:::-;:33;;7999:1;7967:33;:::i;:::-;7959:42;;;;;;;;;;;;;8274:25:21;;8262:2;8247:18;;8128:177;7959:42:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8011:34;8022:9;;;;;;;;;-1:-1:-1;;;;;8022:9:20;-1:-1:-1;;;;;8022:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10788:177;10849:5;;10840:15;;-1:-1:-1;;;10840:15:20;;-1:-1:-1;;;;;10849:5:20;;;10840:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;10840:8:20;;169:18:21;;10840:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10865:38:20;;-1:-1:-1;;;10865:38:20;;10879:4;10865:38;;;9204:41:21;;;9261:18;;;9254:50;;;10891:5:20;9320:18:21;;;9313:50;9379:18;;;9372:50;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;10865:13:20;;-1:-1:-1;9176:19:21;;10865:38:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10925:5:20;;;10918:13;;-1:-1:-1;;;;;10925:5:20;;;196:51:21;;10918:13:20;;-1:-1:-1;169:18:21;;-1:-1:-1;10918:13:20;;;;;;;10941:9;;;;;;;;;-1:-1:-1;;;;;10941:9:20;-1:-1:-1;;;;;10941:15:20;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8553:197;8634:5;;8625:15;;-1:-1:-1;;;8625:15:20;;-1:-1:-1;;;;;8634:5:20;;;8625:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;8625:8:20;;169:18:21;;8625:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8650:44:20;;-1:-1:-1;;;8650:44:20;;11813:2:21;8650:44:20;;;11795:21:21;11852:2;11832:18;;;11825:30;11891:27;11871:18;;;11864:55;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;8650:15:20;;-1:-1:-1;11936:18:21;;8650:44:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8704:9:20;;:39;;-1:-1:-1;;;8704:39:20;;8740:1;8704:39;;;196:51:21;8704:9:20;;;;-1:-1:-1;;;;;8704:9:20;;-1:-1:-1;8704:27:20;;-1:-1:-1;169:18:21;;8704:39:20;14:239:21;3047:140:6;3095:34;3162:18;3141:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15080:1022:20;15194:5;;15185:15;;-1:-1:-1;;;15185:15:20;;-1:-1:-1;;;;;15194:5:20;;;15185:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;15185:8:20;;169:18:21;;15185:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15210:38:20;;-1:-1:-1;;;15210:38:20;;15224:4;15210:38;;;9204:41:21;;;9261:18;;;9254:50;;;15236:5:20;9320:18:21;;;9313:50;9379:18;;;9372:50;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;15210:13:20;;-1:-1:-1;9176:19:21;;15210:38:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15273:5:20;;15263:32;;840:7;8274:25:21;;-1:-1:-1;;;;;15273:5:20;;;;-1:-1:-1;15263:32:20;;-1:-1:-1;8262:2:21;8247:18;15263:32:20;;;;;;;15305:9;;;;;;;;;-1:-1:-1;;;;;15305:9:20;-1:-1:-1;;;;;15305:17:20;;840:7;15305:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15397:5:20;;15388:15;;-1:-1:-1;;;15388:15:20;;-1:-1:-1;;;;;15397:5:20;;;15388:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;15388:8:20;;-1:-1:-1;169:18:21;;;-1:-1:-1;15388:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15413:38:20;;-1:-1:-1;;;15413:38:20;;15427:4;15413:38;;;9204:41:21;;;9261:18;;;9254:50;;;15439:5:20;9320:18:21;;;9313:50;9379:18;;;9372:50;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;15413:13:20;;-1:-1:-1;9176:19:21;;15413:38:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15494:5:20;;15487;;15466:34;;-1:-1:-1;;;;;15494:5:20;;;;-1:-1:-1;15487:5:20;;;-1:-1:-1;15466:34:20;;15494:5;;15466:34;15510:9;;15538:5;;15510:34;;-1:-1:-1;;;15510:34:20;;-1:-1:-1;;;;;15538:5:20;;;15510:34;;;196:51:21;15510:9:20;;;;;;:27;;169:18:21;;15510:34:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15581:5:20;;15572:15;;-1:-1:-1;;;15572:15:20;;-1:-1:-1;;;;;15581:5:20;;;15572:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;15572:8:20;;-1:-1:-1;169:18:21;;15572:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15597:38:20;;-1:-1:-1;;;15597:38:20;;15611:4;15597:38;;;9204:41:21;;;9261:18;;;9254:50;;;15623:5:20;9320:18:21;;;9313:50;9379:18;;;9372:50;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;15597:13:20;;-1:-1:-1;9176:19:21;;15597:38:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15657:5:20;;15650:13;;-1:-1:-1;;;;;15657:5:20;;;196:51:21;;15650:13:20;;-1:-1:-1;184:2:21;169:18;;-1:-1:-1;15650:13:20;;;;;;;15673:9;;;;;;;;;-1:-1:-1;;;;;15673:9:20;-1:-1:-1;;;;;15673:15:20;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15729:5:20;;15720:15;;-1:-1:-1;;;15720:15:20;;-1:-1:-1;;;;;15729:5:20;;;15720:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;15720:8:20;;-1:-1:-1;169:18:21;;15720:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15745:38:20;;-1:-1:-1;;;15745:38:20;;15759:4;15745:38;;;9204:41:21;;;9261:18;;;9254:50;;;15771:5:20;9320:18:21;;;9313:50;9379:18;;;9372:50;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;15745:13:20;;-1:-1:-1;9176:19:21;;15745:38:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15807:5:20;;15798:15;;-1:-1:-1;;;;;15807:5:20;;;196:51:21;;15798:15:20;;-1:-1:-1;184:2:21;169:18;;-1:-1:-1;15798:15:20;;;;;;;15823:9;;;;;;;;;-1:-1:-1;;;;;15823:9:20;-1:-1:-1;;;;;15823:17:20;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;336:42:0;-1:-1:-1;15882:7:20;;-1:-1:-1;15890:29:20;;-1:-1:-1;794:6:20;15890:15;:29;:::i;:::-;:33;;15922:1;15890:33;:::i;:::-;15882:42;;;;;;;;;;;;;8274:25:21;;8262:2;8247:18;;8128:177;15882:42:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15964:5:20;;15955:15;;-1:-1:-1;;;15955:15:20;;-1:-1:-1;;;;;15964:5:20;;;15955:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;15955:8:20;;-1:-1:-1;169:18:21;;15955:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15980:38:20;;-1:-1:-1;;;15980:38:20;;15994:4;15980:38;;;9204:41:21;;;9261:18;;;9254:50;;;16006:5:20;9320:18:21;;;9313:50;9379:18;;;9372:50;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;15980:13:20;;-1:-1:-1;9176:19:21;;15980:38:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16043:5:20;;16033:32;;840:7;8274:25:21;;-1:-1:-1;;;;;16043:5:20;;;;-1:-1:-1;16033:32:20;;-1:-1:-1;8262:2:21;8247:18;16033:32:20;;;;;;;;16075:9;;;;;;;;;-1:-1:-1;;;;;16075:9:20;-1:-1:-1;;;;;16075:18:20;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3577:463;3668:5;;3659:15;;-1:-1:-1;;;3659:15:20;;-1:-1:-1;;;;;3668:5:20;;;3659:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;3659:8:20;;169:18:21;;3659:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3684:9;;;;;;;;;-1:-1:-1;;;;;3684:9:20;-1:-1:-1;;;;;3684:17:20;;840:7;3684:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;3776:7:20;;794:6;3784:15;:29;;;;:::i;:::-;:33;;3816:1;3784:33;:::i;:::-;3776:42;;;;;;;;;;;;;8274:25:21;;8262:2;8247:18;;8128:177;3776:42:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3853:5:20;;3877:15;;-1:-1:-1;;;3877:15:20;;-1:-1:-1;;;;;3853:5:20;;;3877:15;;;196:51:21;;;3853:13:20;;-1:-1:-1;;;;;;;;;;;;336:42:0;-1:-1:-1;3877:8:20;;169:18:21;;3877:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3902:9;;;;;;;;;-1:-1:-1;;;;;3902:9:20;-1:-1:-1;;;;;3902:18:20;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3933:35;3942:9;;;;;;;;;-1:-1:-1;;;;;3942:9:20;-1:-1:-1;;;;;3942:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3933:35;3987:5;;3978:55;;-1:-1:-1;;;;;3987:5:20;:13;4002:30;840:7;4002:13;:30;:::i;3532:146:6:-;3580:40;3653:18;3632:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3632:39:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3632:39:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16541:119:20;16587:66;16596:9;;;;;;;;;-1:-1:-1;;;;;16596:9:20;-1:-1:-1;;;;;16596:23:20;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16623:29;794:6;16623:15;:29;:::i;12817:578::-;12925:5;;12916:15;;-1:-1:-1;;;12916:15:20;;-1:-1:-1;;;;;12925:5:20;;;12916:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;12916:8:20;;169:18:21;;12916:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12941:9;;;;;;;;;-1:-1:-1;;;;;12941:9:20;-1:-1:-1;;;;;12941:17:20;;840:7;12941:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13074:9;;;;;;;;;-1:-1:-1;;;;;13074:9:20;13051:33;;;;;:::i;:::-;-1:-1:-1;;;;;214:32:21;;;196:51;;184:2;169:18;13051:33:20;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13030:18:20;:54;;-1:-1:-1;;;;;;13030:54:20;-1:-1:-1;;;;;13030:54:20;;;;;;;;;13094:45;;-1:-1:-1;;;13094:45:20;;-1:-1:-1;;;;;;;;;;;336:42:0;13094:7:20;;:45;;13030:54;13131:7;;13094:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;336:42:0;-1:-1:-1;13179:7:20;;-1:-1:-1;13187:29:20;;-1:-1:-1;794:6:20;13187:15;:29;:::i;:::-;:33;;13219:1;13187:33;:::i;:::-;13179:42;;;;;;;;;;;;;8274:25:21;;8262:2;8247:18;;8128:177;13179:42:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13282:18:20;;13265:37;;-1:-1:-1;;;13265:37:20;;-1:-1:-1;;;;;13282:18:20;;;13265:37;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;13265:8:20;;-1:-1:-1;169:18:21;;13265:37:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13312:39:20;;-1:-1:-1;;;13312:39:20;;11465:2:21;13312:39:20;;;11447:21:21;11504:2;11484:18;;;11477:30;-1:-1:-1;;;11523:18:21;;;11516:50;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;13312:15:20;;-1:-1:-1;11583:18:21;;13312:39:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13361:18;;;;;;;;;-1:-1:-1;;;;;13361:18:20;-1:-1:-1;;;;;13361:25:20;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4792:395;4889:5;;4880:15;;-1:-1:-1;;;4880:15:20;;-1:-1:-1;;;;;4889:5:20;;;4880:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;4880:8:20;;169:18:21;;4880:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4905:9;;;;;;;;;-1:-1:-1;;;;;4905:9:20;-1:-1:-1;;;;;4905:17:20;;840:7;4905:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;4987:7:20;;794:6;4995:15;:29;;;;:::i;:::-;:33;;5027:1;4995:33;:::i;:::-;4987:42;;;;;;;;;;;;;8274:25:21;;8262:2;8247:18;;8128:177;4987:42:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5049:5:20;;5040:15;;-1:-1:-1;;;5040:15:20;;-1:-1:-1;;;;;5049:5:20;;;5040:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;5040:8:20;;-1:-1:-1;169:18:21;;5040:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5065:38:20;;-1:-1:-1;;;5065:38:20;;5079:4;5065:38;;;9204:41:21;;;9261:18;;;9254:50;;;5091:5:20;9320:18:21;;;9313:50;9379:18;;;9372:50;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;5065:13:20;;-1:-1:-1;9176:19:21;;5065:38:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5128:5:20;;;5118:32;;840:7;8274:25:21;;-1:-1:-1;;;;;5128:5:20;;;;-1:-1:-1;5118:32:20;;-1:-1:-1;8247:18:21;5118:32:20;8128:177:21;16346:189:20;16411:5;;16402:15;;-1:-1:-1;;;16402:15:20;;-1:-1:-1;;;;;16411:5:20;;;16402:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;16402:8:20;;169:18:21;;16402:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16427:9;;;;;;;;;-1:-1:-1;;;;;16427:9:20;-1:-1:-1;;;;;16427:17:20;;840:7;16427:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16480:48;16489:9;;;;;;;;;-1:-1:-1;;;;;16489:9:20;-1:-1:-1;;;;;16489:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;840:7;16480:8;:48::i;1572:248::-;1629:5;;1620:15;;-1:-1:-1;;;1620:15:20;;-1:-1:-1;;;;;1629:5:20;;;1620:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;1620:8:20;;169:18:21;;1620:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1645:9;;;;;;;;;-1:-1:-1;;;;;1645:9:20;-1:-1:-1;;;;;1645:17:20;;840:7;1645:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1698:48;1707:9;;;;;;;;;-1:-1:-1;;;;;1707:9:20;-1:-1:-1;;;;;1707:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1698:48;1765:5;;1756:57;;-1:-1:-1;;;;;1765:5:20;:13;1780:32;840:7;748:9;1780:32;:::i;2754:147:6:-;2803:40;2876:18;2855:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2855:39:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2855:39:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7018:377:20;7118:5;;7109:15;;-1:-1:-1;;;7109:15:20;;-1:-1:-1;;;;;7118:5:20;;;7109:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;7109:8:20;;169:18:21;;7109:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7134:9;;;;;;;;;-1:-1:-1;;;;;7134:9:20;-1:-1:-1;;;;;7134:17:20;;840:7;7134:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;7238:7:20;;7278:1;794:6;7246:15;:29;;;;:::i;:::-;:33;;;;:::i;:::-;7238:42;;;;;;;;;;;;;8274:25:21;;8262:2;8247:18;;8128:177;7238:42:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7300:5:20;;7291:15;;-1:-1:-1;;;7291:15:20;;-1:-1:-1;;;;;7300:5:20;;;7291:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;7291:8:20;;-1:-1:-1;169:18:21;;7291:15:20;14:239:21;2459:141:6;2508:34;2575:18;2554:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10622:160:20;10689:5;;10680:15;;-1:-1:-1;;;10680:15:20;;-1:-1:-1;;;;;10689:5:20;;;10680:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;10680:8:20;;169:18:21;;10680:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10705:41:20;;-1:-1:-1;;;10705:41:20;;12471:2:21;10705:41:20;;;12453:21:21;12510:2;12490:18;;;12483:30;-1:-1:-1;;;12529:18:21;;;12522:52;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;10705:15:20;;-1:-1:-1;12591:18:21;;10705:41:20;12270:345:21;1306:195:1;1365:7;;1345:4;;1365:7;;1361:134;;;-1:-1:-1;1395:4:1;;1306:195::o;1361:134::-;1437:33;;-1:-1:-1;;;1437:33:1;;1482:1;;-1:-1:-1;;;;;;;;;;;1437:7:1;;;:33;;219:28;;-1:-1:-1;;;1255:17:1;1437:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:47;;1430:54;;1306:195;:::o;11903:370:20:-;11966:22;12048:9;12043:165;12067:2;12063:1;:6;12043:165;;;12099:5;;12090:15;;-1:-1:-1;;;12090:15:20;;-1:-1:-1;;;;;12099:5:20;;;12090:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;12090:8:20;;169:18:21;;12090:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12119:9;;;;;;;;;-1:-1:-1;;;;;12119:9:20;-1:-1:-1;;;;;12119:17:20;;12144:9;12119:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12188:9;12170:27;;;;;:::i;:::-;;-1:-1:-1;12071:3:20;;;;:::i;:::-;;;;12043:165;;;;12218:48;12227:9;;;;;;;;;-1:-1:-1;;;;;12227:9:20;-1:-1:-1;;;;;12227:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17004:1199;17262:31;;-1:-1:-1;;;17262:31:20;;17120:4;;17166;;17212;;-1:-1:-1;;;;;;;;;;;336:42:0;17262:7:20;;:31;;17120:4;;17284:8;;17262:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17303:31:20;;-1:-1:-1;;;17303:31:20;;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;17303:7:20;;-1:-1:-1;17303:31:20;;17311:12;;17325:8;;17303:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17344:31:20;;-1:-1:-1;;;17344:31:20;;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;17344:7:20;;-1:-1:-1;17344:31:20;;17352:12;;17366:8;;17344:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17426:40;17435:12;-1:-1:-1;;;;;17435:20:20;;17457:8;17426;:40::i;:::-;17476;17485:12;-1:-1:-1;;;;;17485:20:20;;17507:8;17476;:40::i;:::-;17526;17535:12;-1:-1:-1;;;;;17535:20:20;;17557:8;17526;:40::i;:::-;17608:22;;-1:-1:-1;;;17608:22:20;;-1:-1:-1;;;;;214:32:21;;17608:22:20;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;17608:8:20;;169:18:21;;17608:22:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17640:9;;;;;;;;;-1:-1:-1;;;;;17640:9:20;-1:-1:-1;;;;;17640:17:20;;17665:7;17640:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17686:22:20;;-1:-1:-1;;;17686:22:20;;-1:-1:-1;;;;;214:32:21;;17686:22:20;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;17686:8:20;;-1:-1:-1;169:18:21;;;-1:-1:-1;17686:22:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17718:9;;;;;;;;;-1:-1:-1;;;;;17718:9:20;-1:-1:-1;;;;;17718:17:20;;17743:7;17718:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17764:22:20;;-1:-1:-1;;;17764:22:20;;-1:-1:-1;;;;;214:32:21;;17764:22:20;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;17764:8:20;;-1:-1:-1;169:18:21;;;-1:-1:-1;17764:22:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17796:9;;;;;;;;;-1:-1:-1;;;;;17796:9:20;-1:-1:-1;;;;;17796:17:20;;17821:7;17796:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17874:41;17883:9;;;;;;;;;-1:-1:-1;;;;;17883:9:20;-1:-1:-1;;;;;17883:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17874:41;-1:-1:-1;;;;;;;;;;;17968:7:20;17976:29;794:6;17976:15;:29;:::i;:::-;:33;;18008:1;17976:33;:::i;:::-;17968:42;;;;;;;;;;;;;8274:25:21;;8262:2;8247:18;;8128:177;17968:42:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18030:5:20;;18021:15;;-1:-1:-1;;;18021:15:20;;-1:-1:-1;;;;;18030:5:20;;;18021:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;18021:8:20;;-1:-1:-1;169:18:21;;18021:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18046:9:20;;:41;;-1:-1:-1;;;18046:41:20;;-1:-1:-1;;;;;214:32:21;;;18046:41:20;;;196:51:21;18046:9:20;;;;;;;;-1:-1:-1;18046:27:20;;-1:-1:-1;169:18:21;;18046:41:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18098:22:20;;-1:-1:-1;;;18098:22:20;;-1:-1:-1;;;;;214:32:21;;18098:22:20;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;18098:8:20;;-1:-1:-1;169:18:21;;18098:22:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18130:9;;;;;;;;;-1:-1:-1;;;;;18130:9:20;-1:-1:-1;;;;;18130:18:20;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18161:35;18170:9;;;;;;;;;-1:-1:-1;;;;;18170:9:20;-1:-1:-1;;;;;18170:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18161:35;17043:1160;;;17004:1199::o;6613:399::-;6712:5;;6703:15;;-1:-1:-1;;;6703:15:20;;-1:-1:-1;;;;;6712:5:20;;;6703:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;6703:8:20;;169:18:21;;6703:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6728:9;;;;;;;;;-1:-1:-1;;;;;6728:9:20;-1:-1:-1;;;;;6728:17:20;;840:7;6728:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;6826:7:20;;794:6;6834:15;:29;;;;:::i;2606:142:6:-;2655:35;2723:18;2702:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2702:39:6;;;;;;;;;;;;;;;;;;;;;;2606:142;:::o;5466:478:20:-;5572:5;;5563:15;;-1:-1:-1;;;5563:15:20;;-1:-1:-1;;;;;5572:5:20;;;5563:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;5563:8:20;;169:18:21;;5563:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5588:9;;;;;;;;;-1:-1:-1;;;;;5588:9:20;-1:-1:-1;;;;;5588:17:20;;840:7;5588:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5680:5:20;;5671:15;;-1:-1:-1;;;5671:15:20;;-1:-1:-1;;;;;5680:5:20;;;5671:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;5671:8:20;;-1:-1:-1;169:18:21;;;-1:-1:-1;5671:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5696:9;;;;;;;;;-1:-1:-1;;;;;5696:9:20;-1:-1:-1;;;;;5696:15:20;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;336:42:0;-1:-1:-1;5753:7:20;;-1:-1:-1;5761:29:20;;-1:-1:-1;794:6:20;5761:15;:29;:::i;:::-;:33;;5793:1;5761:33;:::i;:::-;5753:42;;;;;;;;;;;;;8274:25:21;;8262:2;8247:18;;8128:177;5753:42:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5854:5:20;;5845:15;;-1:-1:-1;;;5845:15:20;;-1:-1:-1;;;;;5854:5:20;;;5845:15;;;196:51:21;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;5845:8:20;;-1:-1:-1;169:18:21;;5845:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5870:37:20;;-1:-1:-1;;;5870:37:20;;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;5870:15:20;;-1:-1:-1;5870:37:20;;;;;:::i;16666:196::-;16800:55;16839:15;16811:9;;;;;;;;;-1:-1:-1;;;;;16811:9:20;-1:-1:-1;;;;;16811:23:20;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;16800:10;:55::i;2664:153:1:-;2755:5;2747:4;:13;2743:68;;2776:24;;-1:-1:-1;;;2776:24:1;;;;;13708:25:21;;;13749:18;;;13742:34;;;-1:-1:-1;;;;;;;;;;;2776:11:1;;;13681:18:21;;2776:24:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2664:153;;:::o;7139:145:15:-;7206:71;7269:2;7273;7222:54;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;7222:54:15;;;;;;;;;;;;;;-1:-1:-1;;;;;7222:54:15;-1:-1:-1;;;7222:54:15;;;7206:15;:71::i;13280:153:1:-;13371:5;13363:4;:13;13359:68;;13392:24;;-1:-1:-1;;;13392:24:1;;;;;13708:25:21;;;13749:18;;;13742:34;;;-1:-1:-1;;;;;;;;;;;13392:11:1;;;13681:18:21;;13392:24:1;13534:248:21;2048:125:1;2116:4;2112:55;;;2136:20;;-1:-1:-1;;;2136:20:1;;7030:14:21;;7023:22;2136:20:1;;;7005:41:21;-1:-1:-1;;;;;;;;;;;2136:14:1;;;6978:18:21;;2136:20:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4020:153;4111:5;-1:-1:-1;;;;;4103:13:1;:4;-1:-1:-1;;;;;4103:13:1;;4099:68;;4132:24;;-1:-1:-1;;;4132:24:1;;-1:-1:-1;;;;;14313:15:21;;;4132:24:1;;;14295:34:21;14365:15;;14345:18;;;14338:43;-1:-1:-1;;;;;;;;;;;4132:11:1;;;14230:18:21;;4132:24:1;14083:304:21;1764:124:1;1832:4;1827:55;;1852:19;;-1:-1:-1;;;1852:19:1;;7030:14:21;;7023:22;1852:19:1;;;7005:41:21;-1:-1:-1;;;;;;;;;;;1852:13:1;;;6978:18:21;;1852:19:1;6865:187:21;851:129:15;922:51;965:7;265:22;131:42;265:40;;594:1;571;541:7;535:14;510:2;501:7;497:16;461:14;434:5;402:211;381:246;367:270;180:463;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;258:658:21:-;429:2;481:21;;;551:13;;454:18;;;573:22;;;400:4;;429:2;652:15;;;;626:2;611:18;;;400:4;695:195;709:6;706:1;703:13;695:195;;;774:13;;-1:-1:-1;;;;;770:39:21;758:52;;865:15;;;;830:12;;;;806:1;724:9;695:195;;;-1:-1:-1;907:3:21;;258:658;-1:-1:-1;;;;;;258:658:21:o;921:423::-;963:3;1001:5;995:12;1028:6;1023:3;1016:19;1053:1;1063:162;1077:6;1074:1;1071:13;1063:162;;;1139:4;1195:13;;;1191:22;;1185:29;1167:11;;;1163:20;;1156:59;1092:12;1063:162;;;1067:3;1270:1;1263:4;1254:6;1249:3;1245:16;1241:27;1234:38;1333:4;1326:2;1322:7;1317:2;1309:6;1305:15;1301:29;1296:3;1292:39;1288:50;1281:57;;;921:423;;;;:::o;1349:1742::-;1582:2;1634:21;;;1704:13;;1607:18;;;1726:22;;;1553:4;;1582:2;1767;;1785:18;;;;1822:1;1865:15;;;1850:31;;1846:40;;1909:15;;;1553:4;;1973:1089;1989:6;1984:3;1981:15;1973:1089;;;-1:-1:-1;;2058:22:21;;;2054:36;2042:49;;2114:13;;2201:9;;-1:-1:-1;;;;;2197:35:21;2182:51;;2272:11;;2266:18;2304:15;;;2297:27;;;2385:19;;2154:15;;;2417:24;;;2598:21;;;;2464:2;2546:17;;;2534:30;;2530:39;;;2488:15;;;;2643:1;2657:296;2673:8;2668:3;2665:17;2657:296;;;2779:2;2775:7;2766:6;2758;2754:19;2750:33;2743:5;2736:48;2811:42;2846:6;2835:8;2829:15;2811:42;:::i;:::-;2882:17;;;;2801:52;-1:-1:-1;2925:14:21;;;;2701:1;2692:11;2657:296;;;-1:-1:-1;;;3040:12:21;;;;2976:6;-1:-1:-1;;3005:15:21;;;;2015:1;2006:11;1973:1089;;;-1:-1:-1;3079:6:21;;1349:1742;-1:-1:-1;;;;;;;;;;1349:1742:21:o;3096:461::-;3148:3;3186:5;3180:12;3213:6;3208:3;3201:19;3239:4;3268:2;3263:3;3259:12;3252:19;;3305:2;3298:5;3294:14;3326:1;3336:196;3350:6;3347:1;3344:13;3336:196;;;3415:13;;-1:-1:-1;;;;;;3411:40:21;3399:53;;3472:12;;;;3507:15;;;;3372:1;3365:9;3336:196;;;-1:-1:-1;3548:3:21;;3096:461;-1:-1:-1;;;;;3096:461:21:o;3562:1185::-;3780:4;3809:2;3849;3838:9;3834:18;3879:2;3868:9;3861:21;3902:6;3937;3931:13;3968:6;3960;3953:22;3994:2;3984:12;;4027:2;4016:9;4012:18;4005:25;;4089:2;4079:6;4076:1;4072:14;4061:9;4057:30;4053:39;4127:2;4119:6;4115:15;4148:1;4158:560;4172:6;4169:1;4166:13;4158:560;;;4237:22;;;-1:-1:-1;;4233:36:21;4221:49;;4293:13;;4339:9;;4361:18;;;4406:48;4438:15;;;4339:9;4406:48;:::i;:::-;4495:11;;;4489:18;4544:19;;;4527:15;;;4520:44;4489:18;4392:62;-1:-1:-1;4587:51:21;4392:62;4489:18;4587:51;:::i;:::-;4696:12;;;;4577:61;-1:-1:-1;;;4661:15:21;;;;4194:1;4187:9;4158:560;;;-1:-1:-1;4735:6:21;;3562:1185;-1:-1:-1;;;;;;;;3562:1185:21:o;4752:803::-;4914:4;4943:2;4983;4972:9;4968:18;5013:2;5002:9;4995:21;5036:6;5071;5065:13;5102:6;5094;5087:22;5140:2;5129:9;5125:18;5118:25;;5202:2;5192:6;5189:1;5185:14;5174:9;5170:30;5166:39;5152:53;;5240:2;5232:6;5228:15;5261:1;5271:255;5285:6;5282:1;5279:13;5271:255;;;5378:2;5374:7;5362:9;5354:6;5350:22;5346:36;5341:3;5334:49;5406:40;5439:6;5430;5424:13;5406:40;:::i;:::-;5396:50;-1:-1:-1;5504:12:21;;;;5469:15;;;;5307:1;5300:9;5271:255;;;-1:-1:-1;5543:6:21;;4752:803;-1:-1:-1;;;;;;;4752:803:21:o;5560:1073::-;5762:4;5791:2;5831;5820:9;5816:18;5861:2;5850:9;5843:21;5884:6;5919;5913:13;5950:6;5942;5935:22;5976:2;5966:12;;6009:2;5998:9;5994:18;5987:25;;6071:2;6061:6;6058:1;6054:14;6043:9;6039:30;6035:39;6109:2;6101:6;6097:15;6130:1;6140:464;6154:6;6151:1;6148:13;6140:464;;;6219:22;;;-1:-1:-1;;6215:36:21;6203:49;;6275:13;;6320:9;;-1:-1:-1;;;;;6316:35:21;6301:51;;6391:11;;6385:18;6423:15;;;6416:27;;;6466:58;6508:15;;;6385:18;6466:58;:::i;:::-;6582:12;;;;6456:68;-1:-1:-1;;6547:15:21;;;;6176:1;6169:9;6140:464;;7057:274;-1:-1:-1;;;;;7249:32:21;;;;7231:51;;7313:2;7298:18;;7291:34;7219:2;7204:18;;7057:274::o;7544:184::-;7614:6;7667:2;7655:9;7646:7;7642:23;7638:32;7635:52;;;7683:1;7680;7673:12;7635:52;-1:-1:-1;7706:16:21;;7544:184;-1:-1:-1;7544:184:21:o;7733:127::-;7794:10;7789:3;7785:20;7782:1;7775:31;7825:4;7822:1;7815:15;7849:4;7846:1;7839:15;7865:128;7932:9;;;7953:11;;;7950:37;;;7967:18;;:::i;:::-;7865:128;;;;:::o;7998:125::-;8063:9;;;8084:10;;;8081:36;;;8097:18;;:::i;8661:331::-;8862:2;8844:21;;;8901:1;8881:18;;;8874:29;-1:-1:-1;;;8934:2:21;8919:18;;8912:39;8983:2;8968:18;;8661:331::o;9433:277::-;9500:6;9553:2;9541:9;9532:7;9528:23;9524:32;9521:52;;;9569:1;9566;9559:12;9521:52;9601:9;9595:16;9654:5;9647:13;9640:21;9633:5;9630:32;9620:60;;9676:1;9673;9666:12;9620:60;9699:5;9433:277;-1:-1:-1;;;9433:277:21:o;9715:290::-;9785:6;9838:2;9826:9;9817:7;9813:23;9809:32;9806:52;;;9854:1;9851;9844:12;9806:52;9880:16;;-1:-1:-1;;;;;9925:31:21;;9915:42;;9905:70;;9971:1;9968;9961:12;10010:380;10089:1;10085:12;;;;10132;;;10153:61;;10207:4;10199:6;10195:17;10185:27;;10153:61;10260:2;10252:6;10249:14;10229:18;10226:38;10223:161;;10306:10;10301:3;10297:20;10294:1;10287:31;10341:4;10338:1;10331:15;10369:4;10366:1;10359:15;10223:161;;10010:380;;;:::o;10395:341::-;10596:2;10578:21;;;10635:2;10615:18;;;10608:30;-1:-1:-1;;;10669:2:21;10654:18;;10647:48;10727:2;10712:18;;10395:341::o;11091:168::-;11164:9;;;11195;;11212:15;;;11206:22;;11192:37;11182:71;;11233:18;;:::i;13088:135::-;13127:3;13148:17;;;13145:43;;13168:18;;:::i;:::-;-1:-1:-1;13215:1:21;13204:13;;13088:135::o;13787:291::-;13964:2;13953:9;13946:21;13927:4;13984:45;14025:2;14014:9;14010:18;14002:6;13984:45;:::i;:::-;13976:53;;14065:6;14060:2;14049:9;14045:18;14038:34;13787:291;;;;;:::o","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSelectors()":"b0464fdc","excludeSenders()":"1ed7831c","failed()":"ba414fa6","piggyBank()":"b7d5d4c0","reentrancyAttacker()":"0577a356","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testDeposit_EventEmission()":"1a47df23","testDeposit_GasSnapshot()":"0487fe57","testDeposit_MultipleUsers()":"58a07d23","testDeposit_PausedContract_Reverts()":"31e80b58","testDeposit_Success()":"9fc77f1d","testDeposit_ZeroAmount_Reverts()":"30f9c006","testEdgeCase_MaxUint256Deposit()":"00ce984f","testEdgeCase_MultipleSmallDeposits()":"c8b96d44","testEdgeCase_OverWithdraw()":"259cb21e","testGetBalance_EmptyContract()":"72d9e978","testGetBalance_WithDeposits()":"9e448c67","testGetUnlockTime()":"91de35c7","testGetUnlockTime_AfterDeployment()":"f0dde3ec","testIntegration_EventSequence()":"85706671","testIntegration_FullDepositWithdrawFlow()":"556ea933","testIsUnlocked_AfterUnlock()":"7e6bc79b","testIsUnlocked_BeforeUnlock()":"17f9fd78","testMultiUserFixture()":"ca05fdd7","testOwnership_EventEmission()":"3517377d","testOwnership_InitialOwner()":"19af867e","testOwnership_NonOwnerTransfer_Reverts()":"6fc908c5","testOwnership_Transfer()":"5104ebf4","testOwnership_TransferToZeroAddress_Reverts()":"847b9869","testPause_AlreadyPaused_Reverts()":"2e350219","testPause_EventEmission()":"84108d92","testPause_InitialState()":"57cd4873","testPause_NonOwner_Reverts()":"13a710d3","testPause_Success()":"1d4349ae","testReentrancy_ExternalCallProtection()":"9872fe29","testTimeLock_ExactUnlockTime()":"dc5984c2","testTimeLock_JustBeforeUnlock()":"b3c3225a","testTimeLock_LongAfterUnlock()":"2799b795","testUnpause_EventEmission()":"15cdd99d","testUnpause_NonOwner_Reverts()":"1dabed05","testUnpause_NotPaused_Reverts()":"b878e85f","testUnpause_Success()":"2a5a1be7","testWithdraw_BeforeUnlock_Reverts()":"11af395a","testWithdraw_EmptyContract_Reverts()":"2b789425","testWithdraw_EventEmission()":"99c27583","testWithdraw_GasSnapshot()":"33bb13cd","testWithdraw_NotOwner_Reverts()":"7787b455","testWithdraw_PausedContract_Reverts()":"e90b559c","testWithdraw_Success()":"864fd756"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"piggyBank\",\"outputs\":[{\"internalType\":\"contract PiggyBank\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reentrancyAttacker\",\"outputs\":[{\"internalType\":\"contract ReentrancyAttacker\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"artifact\",\"type\":\"string\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzArtifactSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testDeposit_EventEmission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testDeposit_GasSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testDeposit_MultipleUsers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testDeposit_PausedContract_Reverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testDeposit_Success\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testDeposit_ZeroAmount_Reverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testEdgeCase_MaxUint256Deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testEdgeCase_MultipleSmallDeposits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testEdgeCase_OverWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGetBalance_EmptyContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGetBalance_WithDeposits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGetUnlockTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGetUnlockTime_AfterDeployment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testIntegration_EventSequence\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testIntegration_FullDepositWithdrawFlow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testIsUnlocked_AfterUnlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testIsUnlocked_BeforeUnlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testMultiUserFixture\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testOwnership_EventEmission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testOwnership_InitialOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testOwnership_NonOwnerTransfer_Reverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testOwnership_Transfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testOwnership_TransferToZeroAddress_Reverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testPause_AlreadyPaused_Reverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testPause_EventEmission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testPause_InitialState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testPause_NonOwner_Reverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testPause_Success\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testReentrancy_ExternalCallProtection\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testTimeLock_ExactUnlockTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testTimeLock_JustBeforeUnlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testTimeLock_LongAfterUnlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testUnpause_EventEmission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testUnpause_NonOwner_Reverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testUnpause_NotPaused_Reverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testUnpause_Success\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testWithdraw_BeforeUnlock_Reverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testWithdraw_EmptyContract_Reverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testWithdraw_EventEmission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testWithdraw_GasSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testWithdraw_NotOwner_Reverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testWithdraw_PausedContract_Reverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testWithdraw_Success\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/PiggyBank.t.sol\":\"PiggyBankTest\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4b2a5a85e045dcf6a082700c7252e43854c2eed88f860aaa18ec1e85218ae2bf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://98d060ed5be569a92d908fc358149039dc8f833d61973aa1b9d1d8235676bf6d\",\"dweb:/ipfs/QmaWQpn5dJmbMS5skwmPPMeUWZG35BLkignPpcA3zyagEs\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xd8eec16034b53b52c90a3d720e121ce7d30d64cc57d854db7d817d5b382dda43\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://612780755e32668c7e3b747d94d16c7291101144e084dd9ee563f071711e99e3\",\"dweb:/ipfs/QmQgtFJXEmDtSHT7tZQTMbb6PCDpq5UDYFvrBnWk1Xo2SY\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xae394f477769a38276d98d4854bc865fc8d281edbd4e72167507adb8236812aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34a0e609a4ec617b5c349f5e89a3352810cc5e4d3adaf939b32a27e4a5e46de2\",\"dweb:/ipfs/QmPfjimWAGGb6rzDjNMtLeZ93JJbCJJMov5gaNKyTy1doe\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x0fa6ec03602648b62cce41aab2096e6b7e052f2846075d967b6958dd586db746\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cd84e2ca9c1eaed6b76768cc12bb8c1af8289170ea8b7706f58d516460d79c41\",\"dweb:/ipfs/QmQ7BK7co6DE4eWUqMyv11s5eHYkS1tyx8tDSZGZVtf2aK\"]},\"lib/forge-std/src/StdConstants.sol\":{\"keccak256\":\"0x319ccdabfa2c0b2428301445873270ffea20f0e039d4fd5e6eeba65158e4e534\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b633f9d3a719e1d035ce7daa6cc051ddf89a72d34200d14cec37728e245cdabc\",\"dweb:/ipfs/QmRP7HQJpHMx1CsFrY8tXVVx1DQmi2dcb2BoGfiWaA923r\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x4dab3021edfa9511bbdd80c48f060ef62eaf457f99eaf841f561fc2557d9a08d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07668628673174cf8f27f8f4e1f862bab775013ec247eb34f698c5005f229391\",\"dweb:/ipfs/QmPJsiiYwmCZXMsHmQv5tg8VF3CAhNdat7WnKLTWZZH2v5\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xbc0132abe1c2accc2867c0f03667afffdf92f3e95a581bb03c9557eaa38ea500\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb6fab37dc73c219cfbb7b4f4998bcf7677ca5397a867e850f40232192073974\",\"dweb:/ipfs/QmUHsbVdp9SKmgek7ZfPcLTKrpZFXpqaqt4sVejzxGEQL3\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x04102de0a79398e4bdea57b7a4818655b4cc66d6f81d1cff08bf428cd0b384cd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53edc6c8f7f67cafc0129f039637c77d979880f7f1947defea31e8f0c05095bc\",\"dweb:/ipfs/QmUKXJd1vFCkxxrkXNLURdXrx2apoyWQFrFb5UqNkjdHVi\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdToml.sol\":{\"keccak256\":\"0x58a72c765ed3f7ff6b105509689658795b8a3739b8931772a497155878381861\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4a3746f4fabaeb980bd77d9e091d3904ee38a6c0e191bfa8ba6874c6f8558a3\",\"dweb:/ipfs/QmUfFDMEn461FgGEXt5HicyGD54sc28sLaQ9JRWDMBKed8\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0xb2469a902a326074034c4f7081d868113db0edbb7cf48b86528af2d6b07295f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1430a81c4978be875e2a3b31a8bfa4e1438fecd327f23771b690d64db63c020a\",\"dweb:/ipfs/QmW6aB2u1LNaRgGQFwjV7L7UbxsRg63iJ7AuujPouEa4cT\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x3dda6083a83dfa3e8526e97bcc28e862ee2442dd58fe94d5c426d65b8e38f73c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33f8c02e4dabdab86a6825125856446a8657eacd712318b51b7818e4a6f6e3f4\",\"dweb:/ipfs/QmRKSjVnrk54yr8wTK2e6QxRjiuba2H8HJSKunHAkdo7RG\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x6f235e293b4406784ff3bd89b2e4d51d0922918cf6825e7a7a09413606932e39\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://afc4fceb24a18596a239e82eb354c41d9a4e28d3fc56fcce04146af2c692b1b9\",\"dweb:/ipfs/QmQCHSAb5k9KQW9kEzeoPdirSknkWso4q4t5CSVFLNnMLB\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57\",\"dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d\",\"dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab\",\"dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3\"]},\"src/PiggyBank.sol\":{\"keccak256\":\"0x5cb45b9eedeffd9dc7753efa95d5ea29b8ee14fad582b778dabd672cdd8f4644\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86156887f596da77b4278af95d23bc4fbe5506db76103bc6a51a439a5ef2f3d4\",\"dweb:/ipfs/Qma3i5f819qgPRnwmVW938DtqhujEmxGyLtnVah9UDaaaW\"]},\"test/PiggyBank.t.sol\":{\"keccak256\":\"0xe5d618407c794a746028a94ba0c99097e2cdfb7d2a01dda210d09e71bc38c0ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9111c04d039ba160af4fa8cc206252febe2818ae1e5c11b015178a65487dd354\",\"dweb:/ipfs/QmSYSUUvKmBB5t7yV2mwi3QUQpkDgRCLSahnxVBQeLgNK2\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"depositor","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Deposited","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[{"internalType":"address","name":"withdrawer","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Withdrawn","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"excludedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"piggyBank","outputs":[{"internalType":"contract PiggyBank","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"reentrancyAttacker","outputs":[{"internalType":"contract ReentrancyAttacker","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzArtifactSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"string","name":"artifact","type":"string"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testDeposit_EventEmission"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testDeposit_GasSnapshot"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testDeposit_MultipleUsers"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testDeposit_PausedContract_Reverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testDeposit_Success"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testDeposit_ZeroAmount_Reverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testEdgeCase_MaxUint256Deposit"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testEdgeCase_MultipleSmallDeposits"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testEdgeCase_OverWithdraw"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testGetBalance_EmptyContract"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testGetBalance_WithDeposits"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testGetUnlockTime"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testGetUnlockTime_AfterDeployment"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testIntegration_EventSequence"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testIntegration_FullDepositWithdrawFlow"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testIsUnlocked_AfterUnlock"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testIsUnlocked_BeforeUnlock"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testMultiUserFixture"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testOwnership_EventEmission"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testOwnership_InitialOwner"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testOwnership_NonOwnerTransfer_Reverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testOwnership_Transfer"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testOwnership_TransferToZeroAddress_Reverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testPause_AlreadyPaused_Reverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testPause_EventEmission"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testPause_InitialState"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testPause_NonOwner_Reverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testPause_Success"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testReentrancy_ExternalCallProtection"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testTimeLock_ExactUnlockTime"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testTimeLock_JustBeforeUnlock"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testTimeLock_LongAfterUnlock"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testUnpause_EventEmission"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testUnpause_NonOwner_Reverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testUnpause_NotPaused_Reverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testUnpause_Success"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testWithdraw_BeforeUnlock_Reverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testWithdraw_EmptyContract_Reverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testWithdraw_EventEmission"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testWithdraw_GasSnapshot"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testWithdraw_NotOwner_Reverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testWithdraw_PausedContract_Reverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testWithdraw_Success"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/PiggyBank.t.sol":"PiggyBankTest"},"evmVersion":"shanghai","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4b2a5a85e045dcf6a082700c7252e43854c2eed88f860aaa18ec1e85218ae2bf","urls":["bzz-raw://98d060ed5be569a92d908fc358149039dc8f833d61973aa1b9d1d8235676bf6d","dweb:/ipfs/QmaWQpn5dJmbMS5skwmPPMeUWZG35BLkignPpcA3zyagEs"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xd8eec16034b53b52c90a3d720e121ce7d30d64cc57d854db7d817d5b382dda43","urls":["bzz-raw://612780755e32668c7e3b747d94d16c7291101144e084dd9ee563f071711e99e3","dweb:/ipfs/QmQgtFJXEmDtSHT7tZQTMbb6PCDpq5UDYFvrBnWk1Xo2SY"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xae394f477769a38276d98d4854bc865fc8d281edbd4e72167507adb8236812aa","urls":["bzz-raw://34a0e609a4ec617b5c349f5e89a3352810cc5e4d3adaf939b32a27e4a5e46de2","dweb:/ipfs/QmPfjimWAGGb6rzDjNMtLeZ93JJbCJJMov5gaNKyTy1doe"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0x0fa6ec03602648b62cce41aab2096e6b7e052f2846075d967b6958dd586db746","urls":["bzz-raw://cd84e2ca9c1eaed6b76768cc12bb8c1af8289170ea8b7706f58d516460d79c41","dweb:/ipfs/QmQ7BK7co6DE4eWUqMyv11s5eHYkS1tyx8tDSZGZVtf2aK"],"license":"MIT"},"lib/forge-std/src/StdConstants.sol":{"keccak256":"0x319ccdabfa2c0b2428301445873270ffea20f0e039d4fd5e6eeba65158e4e534","urls":["bzz-raw://b633f9d3a719e1d035ce7daa6cc051ddf89a72d34200d14cec37728e245cdabc","dweb:/ipfs/QmRP7HQJpHMx1CsFrY8tXVVx1DQmi2dcb2BoGfiWaA923r"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x4dab3021edfa9511bbdd80c48f060ef62eaf457f99eaf841f561fc2557d9a08d","urls":["bzz-raw://07668628673174cf8f27f8f4e1f862bab775013ec247eb34f698c5005f229391","dweb:/ipfs/QmPJsiiYwmCZXMsHmQv5tg8VF3CAhNdat7WnKLTWZZH2v5"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0xbc0132abe1c2accc2867c0f03667afffdf92f3e95a581bb03c9557eaa38ea500","urls":["bzz-raw://eb6fab37dc73c219cfbb7b4f4998bcf7677ca5397a867e850f40232192073974","dweb:/ipfs/QmUHsbVdp9SKmgek7ZfPcLTKrpZFXpqaqt4sVejzxGEQL3"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x04102de0a79398e4bdea57b7a4818655b4cc66d6f81d1cff08bf428cd0b384cd","urls":["bzz-raw://53edc6c8f7f67cafc0129f039637c77d979880f7f1947defea31e8f0c05095bc","dweb:/ipfs/QmUKXJd1vFCkxxrkXNLURdXrx2apoyWQFrFb5UqNkjdHVi"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdToml.sol":{"keccak256":"0x58a72c765ed3f7ff6b105509689658795b8a3739b8931772a497155878381861","urls":["bzz-raw://b4a3746f4fabaeb980bd77d9e091d3904ee38a6c0e191bfa8ba6874c6f8558a3","dweb:/ipfs/QmUfFDMEn461FgGEXt5HicyGD54sc28sLaQ9JRWDMBKed8"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0xb2469a902a326074034c4f7081d868113db0edbb7cf48b86528af2d6b07295f8","urls":["bzz-raw://1430a81c4978be875e2a3b31a8bfa4e1438fecd327f23771b690d64db63c020a","dweb:/ipfs/QmW6aB2u1LNaRgGQFwjV7L7UbxsRg63iJ7AuujPouEa4cT"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x3dda6083a83dfa3e8526e97bcc28e862ee2442dd58fe94d5c426d65b8e38f73c","urls":["bzz-raw://33f8c02e4dabdab86a6825125856446a8657eacd712318b51b7818e4a6f6e3f4","dweb:/ipfs/QmRKSjVnrk54yr8wTK2e6QxRjiuba2H8HJSKunHAkdo7RG"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x6f235e293b4406784ff3bd89b2e4d51d0922918cf6825e7a7a09413606932e39","urls":["bzz-raw://afc4fceb24a18596a239e82eb354c41d9a4e28d3fc56fcce04146af2c692b1b9","dweb:/ipfs/QmQCHSAb5k9KQW9kEzeoPdirSknkWso4q4t5CSVFLNnMLB"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5","urls":["bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57","dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f","urls":["bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d","dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11","urls":["bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab","dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3"],"license":"MIT"},"src/PiggyBank.sol":{"keccak256":"0x5cb45b9eedeffd9dc7753efa95d5ea29b8ee14fad582b778dabd672cdd8f4644","urls":["bzz-raw://86156887f596da77b4278af95d23bc4fbe5506db76103bc6a51a439a5ef2f3d4","dweb:/ipfs/Qma3i5f819qgPRnwmVW938DtqhujEmxGyLtnVah9UDaaaW"],"license":"MIT"},"test/PiggyBank.t.sol":{"keccak256":"0xe5d618407c794a746028a94ba0c99097e2cdfb7d2a01dda210d09e71bc38c0ca","urls":["bzz-raw://9111c04d039ba160af4fa8cc206252febe2818ae1e5c11b015178a65487dd354","dweb:/ipfs/QmSYSUUvKmBB5t7yV2mwi3QUQpkDgRCLSahnxVBQeLgNK2"],"license":"MIT"}},"version":1},"id":20} \ No newline at end of file +{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSelectors","inputs":[],"outputs":[{"name":"excludedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"piggyBank","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract PiggyBank"}],"stateMutability":"view"},{"type":"function","name":"reentrancyAttacker","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ReentrancyAttacker"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzArtifactSelector[]","components":[{"name":"artifact","type":"string","internalType":"string"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testDeposit_EventEmission","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testDeposit_GasSnapshot","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testDeposit_MultipleUsers","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testDeposit_PausedContract_Reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testDeposit_Success","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testDeposit_Validation_MaxUint256","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testDeposit_Validation_PausedContract","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testDeposit_Validation_ZeroAmount","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testDeposit_ZeroAmount_Reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testEdgeCase_MaxUint256Deposit","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testEdgeCase_MultipleSmallDeposits","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testEdgeCase_OverWithdraw","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testGetBalance_EmptyContract","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testGetBalance_WithDeposits","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testGetUnlockTime","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testGetUnlockTime_AfterDeployment","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testIntegration_EventSequence","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testIntegration_FullDepositWithdrawFlow","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testIsUnlocked_AfterUnlock","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testIsUnlocked_BeforeUnlock","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testMultiUserFixture","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testOwnership_EventEmission","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testOwnership_InitialOwner","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testOwnership_NonOwnerTransfer_Reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testOwnership_Transfer","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testOwnership_TransferToZeroAddress_Reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testOwnership_Validation_NonOwner","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testOwnership_Validation_ZeroAddress","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPause_AlreadyPaused_Reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPause_EventEmission","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPause_InitialState","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPause_NonOwner_Reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPause_Success","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPause_Validation_AlreadyPaused","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPause_Validation_NonOwner","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testReentrancy_ExternalCallProtection","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTimeLock_ExactUnlockTime","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTimeLock_JustBeforeUnlock","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTimeLock_LongAfterUnlock","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testUnpause_EventEmission","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testUnpause_NonOwner_Reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testUnpause_NotPaused_Reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testUnpause_Success","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testUnpause_Validation_NonOwner","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testUnpause_Validation_NotPaused","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testWithdraw_BeforeUnlock_Reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testWithdraw_EmptyContract_Reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testWithdraw_EventEmission","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testWithdraw_GasSnapshot","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testWithdraw_NotOwner_Reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testWithdraw_PausedContract_Reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testWithdraw_Success","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testWithdraw_Validation_OnlyOwner","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testWithdraw_Validation_PausedContract","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testWithdraw_Validation_TimeLock","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Deposited","inputs":[{"name":"depositor","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Withdrawn","inputs":[{"name":"withdrawer","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x6080604052600c8054600160ff199182168117909255601f8054909116909117905534801561002c575f80fd5b50618cbf806200003b5f395ff3fe608060405234801562000010575f80fd5b506004361062000457575f3560e01c806372d9e9781162000243578063b0464fdc1162000143578063dc5984c211620000c3578063f09778ee116200008f578063f09778ee14620004f2578063f0dde3ec146200071f578063f19df0761462000729578063f3ce07af14620005fb578063fa7626d41462000733575f80fd5b8063dc5984c2146200070b578063e20c9f711462000715578063e90b559c1462000529578063ebba3137146200045b575f80fd5b8063b878e85f116200010f578063b878e85f146200069b578063ba414fa614620006dc578063c67a4d1a14620004b6578063c8b96d4414620006f7578063ca05fdd71462000701575f80fd5b8063b0464fdc14620006a5578063b3c3225a14620006af578063b5508aa914620006b9578063b7d5d4c014620006c3575f80fd5b80638c905b8c11620001cf5780639872fe29116200019b5780639872fe29146200067357806399c27583146200067d5780639e448c6714620006875780639fc77f1d1462000691578063b0269b77146200069b575f80fd5b80638c905b8c14620005745780638e0527c41462000619578063916a17c6146200065057806391de35c71462000669575f80fd5b8063847b9869116200020f578063847b9869146200061957806385226c81146200062357806385706671146200063c578063864fd7561462000646575f80fd5b806372d9e97814620005f15780637787b45514620005fb5780637e6bc79b146200060557806384108d92146200060f575f80fd5b80632ade3880116200035b5780634a2122dd11620002db57806358a07d2311620002a757806358a07d2314620005ce57806365dc9f36146200056a57806366d9a9a014620005d857806367136dec14620004ac5780636fc908c514620005a6575f80fd5b80634a2122dd14620005a65780635104ebf414620005b0578063556ea93314620005ba57806357cd487314620005c4575f80fd5b806331e80b58116200032757806331e80b58146200057457806333bb13cd146200057e5780633517377d14620005885780633e5e3c2314620005925780633f7286f4146200059c575f80fd5b80632ade3880146200053d5780632b78942514620005565780632e350219146200056057806330f9c006146200056a575f80fd5b806319af867e11620003e75780631ed7831c11620003b35780631ed7831c14620004fc578063259cb21e14620005155780632799b795146200051f5780632a385c4a14620005295780632a5a1be71462000533575f80fd5b806319af867e14620004d45780631a47df2314620004de5780631d4349ae14620004e85780631dabed0514620004f2575f80fd5b806311af395a116200042757806311af395a14620004ac57806313a710d314620004b657806315cdd99d14620004c057806317f9fd7814620004ca575f80fd5b8062ce984f146200045b5780630487fe5714620004675780630577a35614620004715780630a9254e414620004a2575b5f80fd5b6200046562000741565b005b620004656200090a565b60255462000485906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6200046562000a3d565b6200046562000d9f565b6200046562000fd1565b62000465620010e7565b620004656200131a565b620004656200139e565b620004656200142c565b62000465620015bf565b62000465620017be565b62000506620019a1565b60405162000499919062007228565b6200046562001a03565b6200046562001d58565b6200046562001fde565b620004656200229d565b620005476200253d565b604051620004999190620072bb565b6200046562002685565b62000465620027b2565b6200046562002918565b6200046562002a51565b6200046562002c3d565b6200046562002eb4565b6200050662003016565b6200050662003076565b62000465620030d6565b62000465620031d8565b62000465620033de565b6200046562003f08565b6200046562003f5e565b620005e26200428a565b604051620004999190620073c5565b62000465620043fa565b6200046562004450565b620004656200466f565b6200046562004743565b62000465620048a9565b6200062d620049cf565b6040516200049991906200744e565b6200046562004aa4565b620004656200529c565b6200065a62005549565b604051620004999190620074b2565b620004656200562e565b62000465620056b9565b6200046562005a1f565b6200046562005c9e565b6200046562005e00565b6200046562005f5c565b6200065a6200601d565b6200046562006102565b6200062d620062a2565b601f54620004859061010090046001600160a01b031681565b620006e662006377565b604051901515815260200162000499565b6200046562006434565b620004656200659c565b6200046562006c80565b6200050662006d85565b6200046562006de5565b6200046562006e69565b601f54620006e69060ff1681565b60215460405163c88a5e6d60e01b81525f19915f8051602062008c6a8339815191529163c88a5e6d9162000786916001600160a01b0390911690859060040162007523565b5f604051808303815f87803b1580156200079e575f80fd5b505af1158015620007b1573d5f803e3d5ffd5b505060215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b15801562000806575f80fd5b505af115801562000819573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b1580156200086c575f80fd5b505af11580156200087f573d5f803e3d5ffd5b505050505062000907601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa158015620008da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200090091906200753c565b8262006ff7565b50565b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b1580156200095b575f80fd5b505af11580156200096e573d5f803e3d5ffd5b505050505f5a9050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620009cd575f80fd5b505af1158015620009e0573d5f803e3d5ffd5b50505050505f5a620009f3908362007568565b905062000a2a604051806040016040528060118152602001702232b837b9b4ba1033b0b9903ab9b2b21d60791b8152508262007066565b62000a3981620186a0620070af565b5050565b602080546001600160a01b031990811660019081179092556021805482166002179055602280548216600317905560238054821660049081179091556024805490921660051790915560405163c88a5e6d60e01b81525f8051602062008c6a8339815191529263c88a5e6d9262000ac09268056bc75e2d63100000910162007523565b5f604051808303815f87803b15801562000ad8575f80fd5b505af115801562000aeb573d5f803e3d5ffd5b505060215460405163c88a5e6d60e01b81525f8051602062008c6a833981519152935063c88a5e6d925062000b38916001600160a01b03169068056bc75e2d631000009060040162007523565b5f604051808303815f87803b15801562000b50575f80fd5b505af115801562000b63573d5f803e3d5ffd5b505060225460405163c88a5e6d60e01b81525f8051602062008c6a833981519152935063c88a5e6d925062000bb0916001600160a01b03169068056bc75e2d631000009060040162007523565b5f604051808303815f87803b15801562000bc8575f80fd5b505af115801562000bdb573d5f803e3d5ffd5b505060235460405163c88a5e6d60e01b81525f8051602062008c6a833981519152935063c88a5e6d925062000c28916001600160a01b03169068056bc75e2d631000009060040162007523565b5f604051808303815f87803b15801562000c40575f80fd5b505af115801562000c53573d5f803e3d5ffd5b505060245460405163c88a5e6d60e01b81525f8051602062008c6a833981519152935063c88a5e6d925062000ca0916001600160a01b03169068056bc75e2d631000009060040162007523565b5f604051808303815f87803b15801562000cb8575f80fd5b505af115801562000ccb573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b15801562000d20575f80fd5b505af115801562000d33573d5f803e3d5ffd5b50505050620151804262000d48919062007584565b60405162000d56906200720c565b908152602001604051809103905ff08015801562000d76573d5f803e3d5ffd5b50601f60016101000a8154816001600160a01b0302191690836001600160a01b03160217905550565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562000df0575f80fd5b505af115801562000e03573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562000e5e575f80fd5b505af115801562000e71573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152935063ca669fa7925060240190505b5f604051808303815f87803b15801562000ec9575f80fd5b505af115801562000edc573d5f803e3d5ffd5b505060405163f28dceb360e01b815260206004820152601760248201527f506967677942616e6b3a205374696c6c206c6f636b656400000000000000000060448201525f8051602062008c6a833981519152925063f28dceb391506064015b5f604051808303815f87803b15801562000f53575f80fd5b505af115801562000f66573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000fb8575f80fd5b505af115801562000fcb573d5f803e3d5ffd5b50505050565b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562001022575f80fd5b505af115801562001035573d5f803e3d5ffd5b505060405163f28dceb360e01b81525f8051602062008c6a833981519152925063f28dceb391506200106a906004016200759a565b5f604051808303815f87803b15801562001082575f80fd5b505af115801562001095573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000fb8575f80fd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562001138575f80fd5b505af11580156200114b573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156200119d575f80fd5b505af1158015620011b0573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b15801562001205575f80fd5b505af115801562001218573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f8051602062008c6a833981519152925063491cc7c291506084015f604051808303815f87803b15801562001275575f80fd5b505af115801562001288573d5f803e3d5ffd5b5050602080546040516001600160a01b0390911681527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa935001905060405180910390a1601f60019054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000fb8575f80fd5b6200139c601f60019054906101000a90046001600160a01b03166001600160a01b0316638380edb76040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001370573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620013969190620075bd565b620070f1565b565b6200139c601f60019054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620013f4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200141a9190620075e5565b6020546001600160a01b031662007151565b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b1580156200147d575f80fd5b505af115801562001490573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f8051602062008c6a833981519152925063491cc7c291506084015f604051808303815f87803b158015620014ed575f80fd5b505af115801562001500573d5f803e3d5ffd5b5050602154604051670de0b6b3a764000081526001600160a01b0390911692507f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4915060200160405180910390a2601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620015a5575f80fd5b505af1158015620015b8573d5f803e3d5ffd5b5050505050565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562001610575f80fd5b505af115801562001623573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f8051602062008c6a833981519152925063491cc7c291506084015f604051808303815f87803b15801562001680575f80fd5b505af115801562001693573d5f803e3d5ffd5b5050602080546040516001600160a01b0390911681527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258935001905060405180910390a1601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562001725575f80fd5b505af115801562001738573d5f803e3d5ffd5b505050506200139c601f60019054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001792573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620017b89190620075bd565b620071ae565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b1580156200180f575f80fd5b505af115801562001822573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562001874575f80fd5b505af115801562001887573d5f803e3d5ffd5b505060215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b158015620018dc575f80fd5b505af1158015620018ef573d5f803e3d5ffd5b505060405163f28dceb360e01b81525f8051602062008c6a833981519152925063f28dceb3915062001924906004016200759a565b5f604051808303815f87803b1580156200193c575f80fd5b505af11580156200194f573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000fb8575f80fd5b60606016805480602002602001604051908101604052809291908181526020018280548015620019f957602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311620019da575b5050505050905090565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562001a54575f80fd5b505af115801562001a67573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562001ac2575f80fd5b505af115801562001ad5573d5f803e3d5ffd5b50505050505f8051602062008c6a8339815191526001600160a01b031663e5d6bf02620151804262001b08919062007584565b62001b1590600162007584565b6040518263ffffffff1660e01b815260040162001b3491815260200190565b5f604051808303815f87803b15801562001b4c575f80fd5b505af115801562001b5f573d5f803e3d5ffd5b505050505f601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001bb6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001bdc91906200753c565b60205460405163ca669fa760e01b81526001600160a01b03909116600482018190529192509031905f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562001c35575f80fd5b505af115801562001c48573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562001c9a575f80fd5b505af115801562001cad573d5f803e3d5ffd5b5050505062001d34601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001d07573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001d2d91906200753c565b5f62006ff7565b60205462000a39906001600160a01b03163162001d52848462007584565b62006ff7565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562001da9575f80fd5b505af115801562001dbc573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562001e17575f80fd5b505af115801562001e2a573d5f803e3d5ffd5b50505050505f8051602062008c6a8339815191526001600160a01b031663e5d6bf02620151804262001e5d919062007584565b62001e6d906301e1338062007584565b6040518263ffffffff1660e01b815260040162001e8c91815260200190565b5f604051808303815f87803b15801562001ea4575f80fd5b505af115801562001eb7573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b15801562001f0c575f80fd5b505af115801562001f1f573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562001f71575f80fd5b505af115801562001f84573d5f803e3d5ffd5b505050506200139c601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001d07573d5f803e3d5ffd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b1580156200202f575f80fd5b505af115801562002042573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b1580156200209d575f80fd5b505af1158015620020b0573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152935063ca669fa7925060240190505f604051808303815f87803b15801562002107575f80fd5b505af11580156200211a573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156200216c575f80fd5b505af11580156200217f573d5f803e3d5ffd5b505f8051602062008c6a833981519152925063e5d6bf029150620021a99050620151804262007584565b620021b690600162007584565b6040518263ffffffff1660e01b8152600401620021d591815260200190565b5f604051808303815f87803b158015620021ed575f80fd5b505af115801562002200573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b15801562002255575f80fd5b505af115801562002268573d5f803e3d5ffd5b505060405163f28dceb360e01b81525f8051602062008c6a833981519152925063f28dceb3915062000f3b906004016200760d565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b158015620022ee575f80fd5b505af115801562002301573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562002353575f80fd5b505af115801562002366573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b158015620023bb575f80fd5b505af1158015620023ce573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f8051602062008c6a833981519152925063491cc7c291506084015f604051808303815f87803b1580156200242b575f80fd5b505af11580156200243e573d5f803e3d5ffd5b5050602080546040516001600160a01b0390911681527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa935001905060405180910390a1601f60019054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015620024d0575f80fd5b505af1158015620024e3573d5f803e3d5ffd5b505050506200139c601f60019054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001370573d5f803e3d5ffd5b6060601e805480602002602001604051908101604052809291908181526020015f905b828210156200267c575f84815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562002664578382905f5260205f20018054620025d29062007639565b80601f0160208091040260200160405190810160405280929190818152602001828054620026009062007639565b80156200264f5780601f1062002625576101008083540402835291602001916200264f565b820191905f5260205f20905b8154815290600101906020018083116200263157829003601f168201915b505050505081526020019060010190620025b2565b50505050815250508152602001906001019062002560565b50505050905090565b5f8051602062008c6a83398151915263e5d6bf02620026a8620151804262007584565b620026b590600162007584565b6040518263ffffffff1660e01b8152600401620026d491815260200190565b5f604051808303815f87803b158015620026ec575f80fd5b505af1158015620026ff573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b15801562002754575f80fd5b505af115801562002767573d5f803e3d5ffd5b505050505f8051602062008c6a8339815191526001600160a01b031663f48448146040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000f53575f80fd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562002803575f80fd5b505af115801562002816573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562002868575f80fd5b505af11580156200287b573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b158015620028d0575f80fd5b505af1158015620028e3573d5f803e3d5ffd5b505060405163f28dceb360e01b81525f8051602062008c6a833981519152925063f28dceb391506200106a906004016200760d565b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562002969575f80fd5b505af11580156200297c573d5f803e3d5ffd5b505060405163f28dceb360e01b81526020600482015260166024820152754d757374206465706f73697420736f6d657468696e6760501b60448201525f8051602062008c6a833981519152925063f28dceb391506064015f604051808303815f87803b158015620029eb575f80fd5b505af1158015620029fe573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db05f6040518263ffffffff1660e01b81526004015f604051808303818588803b158015620015a5575f80fd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562002aa2575f80fd5b505af115801562002ab5573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562002b07575f80fd5b505af115801562002b1a573d5f803e3d5ffd5b505060215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b15801562002b6f575f80fd5b505af115801562002b82573d5f803e3d5ffd5b505060405163f28dceb360e01b81525f8051602062008c6a833981519152925063f28dceb3915062002bb7906004016200760d565b5f604051808303815f87803b15801562002bcf575f80fd5b505af115801562002be2573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620015a5575f80fd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562002c8e575f80fd5b505af115801562002ca1573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562002cfc575f80fd5b505af115801562002d0f573d5f803e3d5ffd5b50505050505f8051602062008c6a8339815191526001600160a01b031663e5d6bf02620151804262002d42919062007584565b62002d4f90600162007584565b6040518263ffffffff1660e01b815260040162002d6e91815260200190565b5f604051808303815f87803b15801562002d86575f80fd5b505af115801562002d99573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b15801562002dee575f80fd5b505af115801562002e01573d5f803e3d5ffd5b505050505f5a9050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562002e57575f80fd5b505af115801562002e6a573d5f803e3d5ffd5b505050505f5a62002e7c908362007568565b905062000a2a604051806040016040528060128152602001712bb4ba34323930bb9033b0b9903ab9b2b21d60711b8152508262007066565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562002f05575f80fd5b505af115801562002f18573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f8051602062008c6a833981519152925063491cc7c291506084015f604051808303815f87803b15801562002f75575f80fd5b505af115801562002f88573d5f803e3d5ffd5b50506021546020546040516001600160a01b039283169450911691507f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3601f5460215460405163f2fde38b60e01b81526001600160a01b039182166004820152610100909204169063f2fde38b906024015b5f604051808303815f87803b15801562000fb8575f80fd5b60606018805480602002602001604051908101604052809291908181526020018280548015620019f957602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311620019da575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015620019f957602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311620019da575050505050905090565b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562003127575f80fd5b505af11580156200313a573d5f803e3d5ffd5b505060405163f28dceb360e01b81525f8051602062008c6a833981519152925063f28dceb391506200316f906004016200759a565b5f604051808303815f87803b15801562003187575f80fd5b505af11580156200319a573d5f803e3d5ffd5b5050601f5460225460405163f2fde38b60e01b81526001600160a01b03918216600482015261010090920416925063f2fde38b915060240162002ffe565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562003229575f80fd5b505af11580156200323c573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f8051602062008c6a833981519152925063491cc7c291506084015f604051808303815f87803b15801562003299575f80fd5b505af1158015620032ac573d5f803e3d5ffd5b50506021546020546040516001600160a01b039283169450911691507f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3601f5460215460405163f2fde38b60e01b81526001600160a01b039182166004820152610100909204169063f2fde38b906024015f604051808303815f87803b15801562003339575f80fd5b505af11580156200334c573d5f803e3d5ffd5b505050506200139c601f60019054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620033a6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620033cc9190620075e5565b6021546001600160a01b031662007151565b62003434601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001d07573d5f803e3d5ffd5b6200348a601f60019054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620013f4573d5f803e3d5ffd5b620034e0601f60019054906101000a90046001600160a01b03166001600160a01b0316638380edb76040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001370573d5f803e3d5ffd5b62003536601f60019054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001370573d5f803e3d5ffd5b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562003587575f80fd5b505af11580156200359a573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620035f5575f80fd5b505af115801562003608573d5f803e3d5ffd5b505060225460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152935063ca669fa7925060240190505f604051808303815f87803b1580156200365f575f80fd5b505af115801562003672573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0671bc16d674ec800006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620036cd575f80fd5b505af1158015620036e0573d5f803e3d5ffd5b505060235460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152935063ca669fa7925060240190505f604051808303815f87803b15801562003737575f80fd5b505af11580156200374a573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db06729a2241af62c00006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620037a5575f80fd5b505af1158015620037b8573d5f803e3d5ffd5b505050505062003848601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003813573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200383991906200753c565b6753444835ec58000062006ff7565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562003899575f80fd5b505af1158015620038ac573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b158015620038fe575f80fd5b505af115801562003911573d5f803e3d5ffd5b505050506200396b601f60019054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001792573d5f803e3d5ffd5b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b158015620039bc575f80fd5b505af1158015620039cf573d5f803e3d5ffd5b505060405163f28dceb360e01b81525f8051602062008c6a833981519152925063f28dceb3915062003a04906004016200760d565b5f604051808303815f87803b15801562003a1c575f80fd5b505af115801562003a2f573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562003a8a575f80fd5b505af115801562003a9d573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152935063ca669fa7925060240190505f604051808303815f87803b15801562003af4575f80fd5b505af115801562003b07573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562003b59575f80fd5b505af115801562003b6c573d5f803e3d5ffd5b5050505062003bc6601f60019054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001370573d5f803e3d5ffd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562003c17575f80fd5b505af115801562003c2a573d5f803e3d5ffd5b5050601f5460215460405163f2fde38b60e01b81526001600160a01b03918216600482015261010090920416925063f2fde38b91506024015f604051808303815f87803b15801562003c7a575f80fd5b505af115801562003c8d573d5f803e3d5ffd5b5050505062003ce7601f60019054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620033a6573d5f803e3d5ffd5b5f8051602062008c6a83398151915263e5d6bf0262003d0a620151804262007584565b62003d1790600162007584565b6040518263ffffffff1660e01b815260040162003d3691815260200190565b5f604051808303815f87803b15801562003d4e575f80fd5b505af115801562003d61573d5f803e3d5ffd5b5050505062003dbb601f60019054906101000a90046001600160a01b03166001600160a01b0316638380edb76040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001792573d5f803e3d5ffd5b60215460405163ca669fa760e01b81526001600160a01b039091166004820181905231905f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562003e10575f80fd5b505af115801562003e23573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562003e75575f80fd5b505af115801562003e88573d5f803e3d5ffd5b5050505062003ee2601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001d07573d5f803e3d5ffd5b60215462000907906001600160a01b03163162001d52836753444835ec58000062007584565b6200139c601f60019054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001370573d5f803e3d5ffd5b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562003faf575f80fd5b505af115801562003fc2573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b1580156200401d575f80fd5b505af115801562004030573d5f803e3d5ffd5b505060225460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152935063ca669fa7925060240190505f604051808303815f87803b15801562004087575f80fd5b505af11580156200409a573d5f803e3d5ffd5b5050601f5461010090046001600160a01b0316915063d0e30db09050620040cb670de0b6b3a7640000600262007673565b6040518263ffffffff1660e01b81526004015f604051808303818588803b158015620040f5575f80fd5b505af115801562004108573d5f803e3d5ffd5b505060235460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152935063ca669fa7925060240190505f604051808303815f87803b1580156200415f575f80fd5b505af115801562004172573d5f803e3d5ffd5b5050601f5461010090046001600160a01b0316915063d0e30db09050620041a3670de0b6b3a7640000600362007673565b6040518263ffffffff1660e01b81526004015f604051808303818588803b158015620041cd575f80fd5b505af1158015620041e0573d5f803e3d5ffd5b50505050505f670de0b6b3a76400006003620041fd919062007673565b62004212670de0b6b3a7640000600262007673565b6200422690670de0b6b3a764000062007584565b62004232919062007584565b905062000907601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa158015620008da573d5f803e3d5ffd5b6060601b805480602002602001604051908101604052809291908181526020015f905b828210156200267c578382905f5260205f2090600202016040518060400160405290815f82018054620042e09062007639565b80601f01602080910402602001604051908101604052809291908181526020018280546200430e9062007639565b80156200435d5780601f1062004333576101008083540402835291602001916200435d565b820191905f5260205f20905b8154815290600101906020018083116200433f57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015620043e157602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620043a25790505b50505050508152505081526020019060010190620042ad565b6200139c601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001d07573d5f803e3d5ffd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b158015620044a1575f80fd5b505af1158015620044b4573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b1580156200450f575f80fd5b505af115801562004522573d5f803e3d5ffd5b50505050505f8051602062008c6a8339815191526001600160a01b031663e5d6bf02620151804262004555919062007584565b6200456290600162007584565b6040518263ffffffff1660e01b81526004016200458191815260200190565b5f604051808303815f87803b15801562004599575f80fd5b505af1158015620045ac573d5f803e3d5ffd5b505060215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b15801562004601575f80fd5b505af115801562004614573d5f803e3d5ffd5b505060405163f28dceb360e01b81526020600482015260146024820152732834b3b3bca130b7359d102737ba1037bbb732b960611b60448201525f8051602062008c6a833981519152925063f28dceb3915060640162000f3b565b5f8051602062008c6a83398151915263e5d6bf0262004692620151804262007584565b6200469f90600162007584565b6040518263ffffffff1660e01b8152600401620046be91815260200190565b5f604051808303815f87803b158015620046d6575f80fd5b505af1158015620046e9573d5f803e3d5ffd5b505050506200139c601f60019054906101000a90046001600160a01b03166001600160a01b0316638380edb76040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001792573d5f803e3d5ffd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562004794575f80fd5b505af1158015620047a7573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f8051602062008c6a833981519152925063491cc7c291506084015f604051808303815f87803b15801562004804575f80fd5b505af115801562004817573d5f803e3d5ffd5b5050602080546040516001600160a01b0390911681527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258935001905060405180910390a1601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000fb8575f80fd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b158015620048fa575f80fd5b505af11580156200490d573d5f803e3d5ffd5b505060405163f28dceb360e01b815260206004820152601960248201527f4e6577206f776e6572206973207a65726f20616464726573730000000000000060448201525f8051602062008c6a833981519152925063f28dceb391506064015f604051808303815f87803b15801562004983575f80fd5b505af115801562004996573d5f803e3d5ffd5b5050601f5460405163f2fde38b60e01b81525f60048201526101009091046001600160a01b0316925063f2fde38b915060240162002ffe565b6060601a805480602002602001604051908101604052809291908181526020015f905b828210156200267c578382905f5260205f2001805462004a129062007639565b80601f016020809104026020016040519081016040528092919081815260200182805462004a409062007639565b801562004a8f5780601f1062004a655761010080835404028352916020019162004a8f565b820191905f5260205f20905b81548152906001019060200180831162004a7157829003601f168201915b505050505081526020019060010190620049f2565b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562004af5575f80fd5b505af115801562004b08573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f8051602062008c6a833981519152925063491cc7c291506084015f604051808303815f87803b15801562004b65575f80fd5b505af115801562004b78573d5f803e3d5ffd5b5050602154604051670de0b6b3a764000081526001600160a01b0390911692507f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4915060200160405180910390a2601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562004c1d575f80fd5b505af115801562004c30573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152935063ca669fa7925060240190505f604051808303815f87803b15801562004c87575f80fd5b505af115801562004c9a573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f8051602062008c6a833981519152925063491cc7c291506084015f604051808303815f87803b15801562004cf7575f80fd5b505af115801562004d0a573d5f803e3d5ffd5b50506021546020546040516001600160a01b039283169450911691507f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3601f5460215460405163f2fde38b60e01b81526001600160a01b039182166004820152610100909204169063f2fde38b906024015f604051808303815f87803b15801562004d97575f80fd5b505af115801562004daa573d5f803e3d5ffd5b505060215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b15801562004dff575f80fd5b505af115801562004e12573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f8051602062008c6a833981519152925063491cc7c291506084015f604051808303815f87803b15801562004e6f575f80fd5b505af115801562004e82573d5f803e3d5ffd5b50506021546040516001600160a01b0390911681527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589250602001905060405180910390a1601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562004f15575f80fd5b505af115801562004f28573d5f803e3d5ffd5b505060215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b15801562004f7d575f80fd5b505af115801562004f90573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f8051602062008c6a833981519152925063491cc7c291506084015f604051808303815f87803b15801562004fed575f80fd5b505af115801562005000573d5f803e3d5ffd5b50506021546040516001600160a01b0390911681527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9250602001905060405180910390a1601f60019054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562005093575f80fd5b505af1158015620050a6573d5f803e3d5ffd5b505f8051602062008c6a833981519152925063e5d6bf029150620050d09050620151804262007584565b620050dd90600162007584565b6040518263ffffffff1660e01b8152600401620050fc91815260200190565b5f604051808303815f87803b15801562005114575f80fd5b505af115801562005127573d5f803e3d5ffd5b505060215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b1580156200517c575f80fd5b505af11580156200518f573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f8051602062008c6a833981519152925063491cc7c291506084015f604051808303815f87803b158015620051ec575f80fd5b505af1158015620051ff573d5f803e3d5ffd5b5050602154604051670de0b6b3a764000081526001600160a01b0390911692507f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d591506020015b60405180910390a2601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000fb8575f80fd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b158015620052ed575f80fd5b505af115801562005300573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b1580156200535b575f80fd5b505af11580156200536e573d5f803e3d5ffd5b50505050505f8051602062008c6a8339815191526001600160a01b031663e5d6bf026201518042620053a1919062007584565b620053ae90600162007584565b6040518263ffffffff1660e01b8152600401620053cd91815260200190565b5f604051808303815f87803b158015620053e5575f80fd5b505af1158015620053f8573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b03909116600482018190523192505f8051602062008c6a833981519152915063ca669fa7906024015f604051808303815f87803b15801562005451575f80fd5b505af115801562005464573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015620054b6575f80fd5b505af1158015620054c9573d5f803e3d5ffd5b5050505062005523601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001d07573d5f803e3d5ffd5b60205462000907906001600160a01b03163162001d52670de0b6b3a76400008462007584565b6060601d805480602002602001604051908101604052809291908181526020015f905b828210156200267c575f8481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200561557602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620055d65790505b505050505081525050815260200190600101906200556c565b6200139c601f60019054906101000a90046001600160a01b03166001600160a01b031663602bc62b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562005684573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620056aa91906200753c565b62001d52620151804262007584565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b1580156200570a575f80fd5b505af11580156200571d573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562005778575f80fd5b505af11580156200578b573d5f803e3d5ffd5b5050505050601f60019054906101000a90046001600160a01b0316604051620057b4906200721a565b6001600160a01b039091168152602001604051809103905ff080158015620057de573d5f803e3d5ffd5b50602580546001600160a01b0319166001600160a01b0392909216918217905560405163c88a5e6d60e01b81525f8051602062008c6a8339815191529163c88a5e6d916200583a9190670de0b6b3a76400009060040162007523565b5f604051808303815f87803b15801562005852575f80fd5b505af115801562005865573d5f803e3d5ffd5b505f8051602062008c6a833981519152925063e5d6bf0291506200588f9050620151804262007584565b6200589c90600162007584565b6040518263ffffffff1660e01b8152600401620058bb91815260200190565b5f604051808303815f87803b158015620058d3575f80fd5b505af1158015620058e6573d5f803e3d5ffd5b505060255460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b1580156200593b575f80fd5b505af11580156200594e573d5f803e3d5ffd5b505060405163f28dceb360e01b81526020600482015260146024820152732834b3b3bca130b7359d102737ba1037bbb732b960611b60448201525f8051602062008c6a833981519152925063f28dceb391506064015f604051808303815f87803b158015620059bb575f80fd5b505af1158015620059ce573d5f803e3d5ffd5b5050505060255f9054906101000a90046001600160a01b03166001600160a01b0316639e5faafc6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000fb8575f80fd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562005a70575f80fd5b505af115801562005a83573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562005ade575f80fd5b505af115801562005af1573d5f803e3d5ffd5b50505050505f8051602062008c6a8339815191526001600160a01b031663e5d6bf02620151804262005b24919062007584565b62005b3190600162007584565b6040518263ffffffff1660e01b815260040162005b5091815260200190565b5f604051808303815f87803b15801562005b68575f80fd5b505af115801562005b7b573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b15801562005bd0575f80fd5b505af115801562005be3573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f8051602062008c6a833981519152925063491cc7c291506084015f604051808303815f87803b15801562005c40575f80fd5b505af115801562005c53573d5f803e3d5ffd5b505060208054604051670de0b6b3a764000081526001600160a01b0390911693507f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d592500162005246565b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562005cef575f80fd5b505af115801562005d02573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562005d5d575f80fd5b505af115801562005d70573d5f803e3d5ffd5b50505050506200139c601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562005dcb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062005df191906200753c565b670de0b6b3a764000062006ff7565b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562005e51575f80fd5b505af115801562005e64573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562005ebf575f80fd5b505af115801562005ed2573d5f803e3d5ffd5b505050505062005f2d601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562005dcb573d5f803e3d5ffd5b6021546200139c906001600160a01b03163162001d52670de0b6b3a764000068056bc75e2d6310000062007568565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562005fad575f80fd5b505af115801562005fc0573d5f803e3d5ffd5b505060405163f28dceb360e01b815260206004820152601660248201527510dbdb9d1c9858dd081a5cc81b9bdd081c185d5cd95960521b60448201525f8051602062008c6a833981519152925063f28dceb3915060640162001924565b6060601c805480602002602001604051908101604052809291908181526020015f905b828210156200267c575f8481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620060e957602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620060aa5790505b5050505050815250508152602001906001019062006040565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562006153575f80fd5b505af115801562006166573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620061c1575f80fd5b505af1158015620061d4573d5f803e3d5ffd5b50505050505f8051602062008c6a8339815191526001600160a01b031663e5d6bf026001620151804262006209919062007584565b62006215919062007568565b6040518263ffffffff1660e01b81526004016200623491815260200190565b5f604051808303815f87803b1580156200624c575f80fd5b505af11580156200625f573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa7915060240162000eb1565b60606019805480602002602001604051908101604052809291908181526020015f905b828210156200267c578382905f5260205f20018054620062e59062007639565b80601f0160208091040260200160405190810160405280929190818152602001828054620063139062007639565b8015620063625780601f10620063385761010080835404028352916020019162006362565b820191905f5260205f20905b8154815290600101906020018083116200634457829003601f168201915b505050505081526020019060010190620062c5565b6008545f9060ff16156200638b5750600190565b604051630667f9d760e41b81525f905f8051602062008c6a8339815191529063667f9d7090620063eb907f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d906519985a5b195960d21b9060040162007523565b602060405180830381865afa15801562006407573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200642d91906200753c565b1415905090565b5f805b600a811015620065455760215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562006492575f80fd5b505af1158015620064a5573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db067016345785d8a00006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562006500575f80fd5b505af115801562006513573d5f803e3d5ffd5b505050505067016345785d8a0000826200652e919062007584565b9150806200653c816200768d565b91505062006437565b5062000907601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa158015620008da573d5f803e3d5ffd5b60405163c88a5e6d60e01b81526010906020906030905f8051602062008c6a8339815191529063c88a5e6d90620065e2908690678ac7230489e800009060040162007523565b5f604051808303815f87803b158015620065fa575f80fd5b505af11580156200660d573d5f803e3d5ffd5b505060405163c88a5e6d60e01b81525f8051602062008c6a833981519152925063c88a5e6d91506200664e908590678ac7230489e800009060040162007523565b5f604051808303815f87803b15801562006666575f80fd5b505af115801562006679573d5f803e3d5ffd5b505060405163c88a5e6d60e01b81525f8051602062008c6a833981519152925063c88a5e6d9150620066ba908490678ac7230489e800009060040162007523565b5f604051808303815f87803b158015620066d2575f80fd5b505af1158015620066e5573d5f803e3d5ffd5b5050505062006707836001600160a01b031631678ac7230489e8000062006ff7565b62006725826001600160a01b031631678ac7230489e8000062006ff7565b62006743816001600160a01b031631678ac7230489e8000062006ff7565b60405163ca669fa760e01b81526001600160a01b03841660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562006790575f80fd5b505af1158015620067a3573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620067fe575f80fd5b505af115801562006811573d5f803e3d5ffd5b505060405163ca669fa760e01b81526001600160a01b03861660048201525f8051602062008c6a833981519152935063ca669fa7925060240190505f604051808303815f87803b15801562006864575f80fd5b505af115801562006877573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0671bc16d674ec800006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620068d2575f80fd5b505af1158015620068e5573d5f803e3d5ffd5b505060405163ca669fa760e01b81526001600160a01b03851660048201525f8051602062008c6a833981519152935063ca669fa7925060240190505f604051808303815f87803b15801562006938575f80fd5b505af11580156200694b573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db06729a2241af62c00006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620069a6575f80fd5b505af1158015620069b9573d5f803e3d5ffd5b505050505062006a14601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003813573d5f803e3d5ffd5b5f8051602062008c6a83398151915263e5d6bf0262006a37620151804262007584565b62006a4490600162007584565b6040518263ffffffff1660e01b815260040162006a6391815260200190565b5f604051808303815f87803b15801562006a7b575f80fd5b505af115801562006a8e573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b15801562006ae3575f80fd5b505af115801562006af6573d5f803e3d5ffd5b5050601f5460405163f2fde38b60e01b81526001600160a01b038781166004830152610100909204909116925063f2fde38b91506024015f604051808303815f87803b15801562006b45575f80fd5b505af115801562006b58573d5f803e3d5ffd5b505060405163ca669fa760e01b81526001600160a01b03861660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b15801562006ba9575f80fd5b505af115801562006bbc573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562006c0e575f80fd5b505af115801562006c21573d5f803e3d5ffd5b5050505062006c7b601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001d07573d5f803e3d5ffd5b505050565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562006cd1575f80fd5b505af115801562006ce4573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562006d3f575f80fd5b505af115801562006d52573d5f803e3d5ffd5b50505050505f8051602062008c6a8339815191526001600160a01b031663e5d6bf02620151804262001e6d919062007584565b60606015805480602002602001604051908101604052809291908181526020018280548015620019f957602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311620019da575050505050905090565b6200139c42601f60019054906101000a90046001600160a01b03166001600160a01b031663602bc62b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562006e3c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062006e6291906200753c565b11620071ae565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562006eba575f80fd5b505af115801562006ecd573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562006f1f575f80fd5b505af115801562006f32573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b15801562006f87575f80fd5b505af115801562006f9a573d5f803e3d5ffd5b505060405163f28dceb360e01b815260206004820152601660248201527510dbdb9d1c9858dd081a5cc81b9bdd081c185d5cd95960521b60448201525f8051602062008c6a833981519152925063f28dceb391506064016200106a565b80821462000a395760405163260a5b1560e21b815260048101839052602481018290525f8051602062008c6a833981519152906398296c54906044015b5f6040518083038186803b1580156200704b575f80fd5b505afa1580156200705e573d5f803e3d5ffd5b505050505050565b62000a3982826040516024016200707f929190620076a8565b60408051601f198184030181529190526020810180516001600160e01b0316632d839cb360e21b179052620071e8565b80821062000a395760405163b12fc00560e01b815260048101839052602481018290525f8051602062008c6a8339815191529063b12fc0059060440162007034565b8015620009075760405163a598288560e01b815281151560048201525f8051602062008c6a8339815191529063a5982885906024015b5f6040518083038186803b1580156200713e575f80fd5b505afa158015620015b8573d5f803e3d5ffd5b806001600160a01b0316826001600160a01b03161462000a39576040516328a9b0fb60e11b81526001600160a01b038084166004830152821660248201525f8051602062008c6a8339815191529063515361f69060440162007034565b806200090757604051630c9fd58160e01b815281151560048201525f8051602062008c6a83398151915290630c9fd5819060240162007127565b62000907815f6a636f6e736f6c652e6c6f6790505f80835160208501845afa505050565b61139a80620076cc83390190565b6102048062008a6683390190565b602080825282518282018190525f9190848201906040850190845b818110156200726a5783516001600160a01b03168352928401929184019160010162007243565b50909695505050505050565b5f81518084525f5b818110156200729c576020818501810151868301820152016200727e565b505f602082860101526020601f19601f83011685010191505092915050565b602080825282518282018190525f919060409081850190600581811b8701840188860187805b858110156200737057603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200735957605f198985030183526200734684865162007276565b948e01949350918d019160010162007327565b505050978a019794505091880191600101620072e1565b50919a9950505050505050505050565b5f8151808452602080850194508084015f5b83811015620073ba5781516001600160e01b0319168752958201959082019060010162007392565b509495945050505050565b5f6020808301818452808551808352604092508286019150828160051b8701018488015f5b838110156200744057888303603f1901855281518051878552620074118886018262007276565b91890151858303868b01529190506200742b818362007380565b968901969450505090860190600101620073ea565b509098975050505050505050565b5f602080830181845280855180835260408601915060408160051b87010192508387015f5b82811015620074a557603f198886030184526200749285835162007276565b9450928501929085019060010162007473565b5092979650505050505050565b5f6020808301818452808551808352604092508286019150828160051b8701018488015f5b838110156200744057888303603f19018552815180516001600160a01b031684528701518784018790526200750f8785018262007380565b9588019593505090860190600101620074d7565b6001600160a01b03929092168252602082015260400190565b5f602082840312156200754d575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156200757e576200757e62007554565b92915050565b808201808211156200757e576200757e62007554565b6020808252600990820152682737ba1037bbb732b960b91b604082015260600190565b5f60208284031215620075ce575f80fd5b81518015158114620075de575f80fd5b9392505050565b5f60208284031215620075f6575f80fd5b81516001600160a01b0381168114620075de575f80fd5b60208082526012908201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b604082015260600190565b600181811c908216806200764e57607f821691505b6020821081036200766d57634e487b7160e01b5f52602260045260245ffd5b50919050565b80820281158282048414176200757e576200757e62007554565b5f60018201620076a157620076a162007554565b5060010190565b604081525f620076bc604083018562007276565b9050826020830152939250505056fe608060405260405161139a38038061139a833981016040819052610022916100c4565b80428111610042576040516251339b60e31b815260040160405180910390fd5b6100506309660180426100db565b8111156100705760405163fce05cc760e01b815260040160405180910390fd5b5f80546001600160a01b03191633908117825560018490556002805460ff191690556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35050610100565b5f602082840312156100d4575f80fd5b5051919050565b808201808211156100fa57634e487b7160e01b5f52601160045260245ffd5b92915050565b61128d8061010d5f395ff3fe608060405260043610610207575f3560e01c80637cf4309011610117578063b488355f1161009f578063dac6270d1161006e578063dac6270d14610603578063dfe6b5d614610617578063f2fde38b14610661578063fa78668f14610680578063fc7e286d1461069757610259565b8063b488355f14610599578063bc394350146105b8578063d0e30db0146105dc578063d9c5e6d7146105e457610259565b8063853828b6116100e6578063853828b6146104dd5780638da5cb5b146104f157806399b20eaf14610527578063a338df381461053b578063b3a7834d1461055a57610259565b80637cf430901461048c5780637d882097146104a05780638380edb7146104b55780638456cb59146104c957610259565b80633ccfd60b1161019a5780635c975abb116101695780635c975abb1461040a578063602bc62b146104235780636046462714610437578063729c3e0e1461044c57806378dee4171461047757610259565b80633ccfd60b146103b05780633f4ba83a146103c45780633ff03207146103d85780634c34a982146103ee57610259565b80631ea30fef116101d65780631ea30fef14610341578063240be9441461035b578063251c1aa3146103865780632bf6c5bc1461039b57610259565b80630905f560146102b25780630945d42c146102e757806312065fe01461030657806319262d301461032257610259565b3661025957306001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b158015610245575f80fd5b505af1158015610257573d5f803e3d5ffd5b005b60405162461bcd60e51b815260206004820152602360248201527f506967677942616e6b3a204469726563742063616c6c73206e6f7420616c6c6f6044820152621dd95960ea1b60648201526084015b60405180910390fd5b3480156102bd575f80fd5b506002546102d290600160a81b900460ff1681565b60405190151581526020015b60405180910390f35b3480156102f2575f80fd5b506102576103013660046111b2565b6106c2565b348015610311575f80fd5b50475b6040519081526020016102de565b34801561032d575f80fd5b506102d261033c3660046111c9565b6107a7565b34801561034c575f80fd5b5061031466038d7ea4c6800081565b348015610366575f80fd5b506103146103753660046111c9565b60056020525f908152604090205481565b348015610391575f80fd5b5061031460015481565b3480156103a6575f80fd5b5061031460035481565b3480156103bb575f80fd5b506102576107f9565b3480156103cf575f80fd5b50610257610941565b3480156103e3575f80fd5b506103146201518081565b3480156103f9575f80fd5b50610314683635c9adc5dea0000081565b348015610415575f80fd5b506002546102d29060ff1681565b34801561042e575f80fd5b50600154610314565b348015610442575f80fd5b5061031460085481565b348015610457575f80fd5b506103146104663660046111c9565b60066020525f908152604090205481565b348015610482575f80fd5b5061031460095481565b348015610497575f80fd5b506103146109f7565b3480156104ab575f80fd5b5061031460075481565b3480156104c0575f80fd5b506102d2610a31565b3480156104d4575f80fd5b50610257610a4f565b3480156104e8575f80fd5b50610257610b03565b3480156104fc575f80fd5b505f5461050f906001600160a01b031681565b6040516001600160a01b0390911681526020016102de565b348015610532575f80fd5b50610257610c77565b348015610546575f80fd5b506102576105553660046111c9565b610ce8565b348015610565575f80fd5b506105796105743660046111c9565b610dbb565b6040805194855260208501939093529183015260608201526080016102de565b3480156105a4575f80fd5b506103146105b33660046111c9565b610e14565b3480156105c3575f80fd5b5060025461050f9061010090046001600160a01b031681565b610257610e5e565b3480156105ef575f80fd5b506102576105fe3660046111b2565b610fda565b34801561060e575f80fd5b506103146110cc565b348015610622575f80fd5b5060075460085460095460025460408051948552602085019390935291830152600160a81b900460ff161515606082015247608082015260a0016102de565b34801561066c575f80fd5b5061025761067b3660046111c9565b6110e9565b34801561068b575f80fd5b50610314630966018081565b3480156106a2575f80fd5b506103146106b13660046111c9565b60046020525f908152604090205481565b5f546001600160a01b031633146106eb5760405162461bcd60e51b81526004016102a9906111ef565b5f546001600160a01b0316331461071557604051631a93c53360e11b815260040160405180910390fd5b66038d7ea4c6800081101561073d576040516345556f1f60e01b815260040160405180910390fd5b60075481101561075f576040516251339b60e31b815260040160405180910390fd5b60408051683635c9adc5dea0000080825260208201849052917f88d01455e50f0b0da01a455a4547346410a2fd66ffdc7241a4c280d6089c4257910160405180910390a15050565b6002545f9060ff161580156107d257506001600160a01b0382165f9081526004602052604090205415155b80156107f35750600154421015806107f35750600254600160a81b900460ff165b92915050565b60025460ff161561081d5760405163012f773760e11b815260040160405180910390fd5b5f546001600160a01b03163314610847576040516363fc43ab60e11b815260040160405180910390fd5b60015442101561086a57604051632d4f9b0560e01b815260040160405180910390fd5b475f81900361088c5760405163870817fd60e01b815260040160405180910390fd5b8060085f82825461089d9190611231565b909155505060405181815233907f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d59060200160405180910390a26040515f90339083908381818185875af1925050503d805f8114610916576040519150601f19603f3d011682016040523d82523d5f602084013e61091b565b606091505b505090508061093d576040516340d812e160e01b815260040160405180910390fd5b5050565b5f546001600160a01b0316331461096a5760405162461bcd60e51b81526004016102a9906111ef565b5f546001600160a01b0316331461099457604051631a93c53360e11b815260040160405180910390fd5b60025460ff166109b757604051631a93c53360e11b815260040160405180910390fd5b6002805460ff191690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6002545f90600160a81b900460ff161580610a1457506003544210155b15610a1e57505f90565b42600354610a2c9190611244565b905090565b5f60015442101580610a2c575050600254600160a81b900460ff1690565b5f546001600160a01b03163314610a785760405162461bcd60e51b81526004016102a9906111ef565b5f546001600160a01b03163314610aa257604051631a93c53360e11b815260040160405180910390fd5b60025460ff1615610ac65760405163012f773760e11b815260040160405180910390fd5b6002805460ff191660011790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016109ed565b60025460ff1615610b275760405163012f773760e11b815260040160405180910390fd5b600154421015610b4a57604051632d4f9b0560e01b815260040160405180910390fd5b335f9081526004602052604081205490819003610b7a5760405163e68effe160e01b815260040160405180910390fd5b335f90815260046020526040812081905560088054839290610b9d908490611231565b909155505060405181815233907f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d59060200160405180910390a26040515f90339083908381818185875af1925050503d805f8114610c16576040519150601f19603f3d011682016040523d82523d5f602084013e610c1b565b606091505b5050905080610c3d576040516340d812e160e01b815260040160405180910390fd5b60405182815233907f23d6711a1d031134a36921253c75aa59e967d38e369ac625992824315e204f20906020015b60405180910390a25050565b60025461010090046001600160a01b03163314610ca757604051631a93c53360e11b815260040160405180910390fd5b6002805460ff60a81b191690555f6003556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020016109ed565b5f546001600160a01b03163314610d115760405162461bcd60e51b81526004016102a9906111ef565b5f546001600160a01b03163314610d3b57604051631a93c53360e11b815260040160405180910390fd5b6001600160a01b038116610d6257604051631a93c53360e11b815260040160405180910390fd5b600280546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907fc0cf06c8aac34052209a818a44d0ad3d4ed78bde060b69f7a4ce24560ad51068905f90a35050565b6001600160a01b0381165f90815260046020908152604080832054600583528184205460069093529083205460015491939091421015610e0a5742600154610e039190611244565b9050610e0d565b505f5b9193509193565b6001600160a01b0381165f90815260046020526040812054683635c9adc5dea000008110610e4457505f92915050565b610e5781683635c9adc5dea00000611244565b9392505050565b60025460ff1615610e825760405163012f773760e11b815260040160405180910390fd5b5f3411610eca5760405162461bcd60e51b81526020600482015260166024820152754d757374206465706f73697420736f6d657468696e6760501b60448201526064016102a9565b66038d7ea4c68000341015610f155760405162461bcd60e51b815260206004820152601160248201527011195c1bdcda5d081d1bdbc81cdb585b1b607a1b60448201526064016102a9565b335f9081526004602052604081205490610f2f3483611231565b9050683635c9adc5dea00000811115610f805760405162461bcd60e51b8152602060048201526013602482015272088cae0dee6d2e840caf0c6cacac8e640dac2f606b1b60448201526064016102a9565b335f90815260046020526040812082905560078054349290610fa3908490611231565b909155505060405134815233907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c490602001610c6b565b60025461010090046001600160a01b0316331461100a57604051631a93c53360e11b815260040160405180910390fd5b60025460ff161561102e5760405163012f773760e11b815260040160405180910390fd5b8042811161104e576040516251339b60e31b815260040160405180910390fd5b61105c630966018042611231565b81111561107c5760405163fce05cc760e01b815260040160405180910390fd5b60028054600384905560ff60ff60a81b0119166001600160a81b0117905560405182815233907f16ea6c4a0ff7e3a4c096560a5a71632e344907cd03af0f6e655b409a61d549ef90602001610c6b565b5f60015442106110db57505f90565b42600154610a2c9190611244565b5f546001600160a01b031633146111125760405162461bcd60e51b81526004016102a9906111ef565b5f546001600160a01b0316331461113c57604051631a93c53360e11b815260040160405180910390fd5b6001600160a01b03811661116357604051631a93c53360e11b815260040160405180910390fd5b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156111c2575f80fd5b5035919050565b5f602082840312156111d9575f80fd5b81356001600160a01b0381168114610e57575f80fd5b6020808252601490820152732834b3b3bca130b7359d102737ba1037bbb732b960611b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156107f3576107f361121d565b818103818111156107f3576107f361121d56fea2646970667358221220b40737dd7e59556a572d59ae42ceb25b10310ea5ddcf3f662a816b1b1e7cc06a64736f6c63430008140033608060405234801561000f575f80fd5b5060405161020438038061020483398101604081905261002e91610052565b5f80546001600160a01b0319166001600160a01b039290921691909117905561007f565b5f60208284031215610062575f80fd5b81516001600160a01b0381168114610078575f80fd5b9392505050565b6101788061008c5f395ff3fe60806040526004361061002b575f3560e01c80639e5faafc1461009d578063d4b83992146100b1575f80fd5b36610099575f546001600160a01b03163115610097575f805460408051633ccfd60b60e01b815290516001600160a01b0390921692633ccfd60b9260048084019382900301818387803b158015610080575f80fd5b505af1158015610092573d5f803e3d5ffd5b505050505b005b5f80fd5b3480156100a8575f80fd5b506100976100eb565b3480156100bc575f80fd5b505f546100cf906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b5f805460408051633ccfd60b60e01b815290516001600160a01b0390921692633ccfd60b9260048084019382900301818387803b15801561012a575f80fd5b505af115801561013c573d5f803e3d5ffd5b5050505056fea2646970667358221220eb5a8cf24cd188092560acca67568fbe331fff34d6967966f8705f2fd4df86f964736f6c634300081400330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12da26469706673582212207fce3804af797a534df7878a887f9e8dd29aa5ba0ce3d99ec8bd97fb71a1634e64736f6c63430008140033","sourceMap":"119:21388:20:-:0;;;3160:44:2;;;3200:4;-1:-1:-1;;3160:44:2;;;;;;;;1065:26:13;;;;;;;;;;;119:21388:20;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801562000010575f80fd5b506004361062000457575f3560e01c806372d9e9781162000243578063b0464fdc1162000143578063dc5984c211620000c3578063f09778ee116200008f578063f09778ee14620004f2578063f0dde3ec146200071f578063f19df0761462000729578063f3ce07af14620005fb578063fa7626d41462000733575f80fd5b8063dc5984c2146200070b578063e20c9f711462000715578063e90b559c1462000529578063ebba3137146200045b575f80fd5b8063b878e85f116200010f578063b878e85f146200069b578063ba414fa614620006dc578063c67a4d1a14620004b6578063c8b96d4414620006f7578063ca05fdd71462000701575f80fd5b8063b0464fdc14620006a5578063b3c3225a14620006af578063b5508aa914620006b9578063b7d5d4c014620006c3575f80fd5b80638c905b8c11620001cf5780639872fe29116200019b5780639872fe29146200067357806399c27583146200067d5780639e448c6714620006875780639fc77f1d1462000691578063b0269b77146200069b575f80fd5b80638c905b8c14620005745780638e0527c41462000619578063916a17c6146200065057806391de35c71462000669575f80fd5b8063847b9869116200020f578063847b9869146200061957806385226c81146200062357806385706671146200063c578063864fd7561462000646575f80fd5b806372d9e97814620005f15780637787b45514620005fb5780637e6bc79b146200060557806384108d92146200060f575f80fd5b80632ade3880116200035b5780634a2122dd11620002db57806358a07d2311620002a757806358a07d2314620005ce57806365dc9f36146200056a57806366d9a9a014620005d857806367136dec14620004ac5780636fc908c514620005a6575f80fd5b80634a2122dd14620005a65780635104ebf414620005b0578063556ea93314620005ba57806357cd487314620005c4575f80fd5b806331e80b58116200032757806331e80b58146200057457806333bb13cd146200057e5780633517377d14620005885780633e5e3c2314620005925780633f7286f4146200059c575f80fd5b80632ade3880146200053d5780632b78942514620005565780632e350219146200056057806330f9c006146200056a575f80fd5b806319af867e11620003e75780631ed7831c11620003b35780631ed7831c14620004fc578063259cb21e14620005155780632799b795146200051f5780632a385c4a14620005295780632a5a1be71462000533575f80fd5b806319af867e14620004d45780631a47df2314620004de5780631d4349ae14620004e85780631dabed0514620004f2575f80fd5b806311af395a116200042757806311af395a14620004ac57806313a710d314620004b657806315cdd99d14620004c057806317f9fd7814620004ca575f80fd5b8062ce984f146200045b5780630487fe5714620004675780630577a35614620004715780630a9254e414620004a2575b5f80fd5b6200046562000741565b005b620004656200090a565b60255462000485906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6200046562000a3d565b6200046562000d9f565b6200046562000fd1565b62000465620010e7565b620004656200131a565b620004656200139e565b620004656200142c565b62000465620015bf565b62000465620017be565b62000506620019a1565b60405162000499919062007228565b6200046562001a03565b6200046562001d58565b6200046562001fde565b620004656200229d565b620005476200253d565b604051620004999190620072bb565b6200046562002685565b62000465620027b2565b6200046562002918565b6200046562002a51565b6200046562002c3d565b6200046562002eb4565b6200050662003016565b6200050662003076565b62000465620030d6565b62000465620031d8565b62000465620033de565b6200046562003f08565b6200046562003f5e565b620005e26200428a565b604051620004999190620073c5565b62000465620043fa565b6200046562004450565b620004656200466f565b6200046562004743565b62000465620048a9565b6200062d620049cf565b6040516200049991906200744e565b6200046562004aa4565b620004656200529c565b6200065a62005549565b604051620004999190620074b2565b620004656200562e565b62000465620056b9565b6200046562005a1f565b6200046562005c9e565b6200046562005e00565b6200046562005f5c565b6200065a6200601d565b6200046562006102565b6200062d620062a2565b601f54620004859061010090046001600160a01b031681565b620006e662006377565b604051901515815260200162000499565b6200046562006434565b620004656200659c565b6200046562006c80565b6200050662006d85565b6200046562006de5565b6200046562006e69565b601f54620006e69060ff1681565b60215460405163c88a5e6d60e01b81525f19915f8051602062008c6a8339815191529163c88a5e6d9162000786916001600160a01b0390911690859060040162007523565b5f604051808303815f87803b1580156200079e575f80fd5b505af1158015620007b1573d5f803e3d5ffd5b505060215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b15801562000806575f80fd5b505af115801562000819573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b1580156200086c575f80fd5b505af11580156200087f573d5f803e3d5ffd5b505050505062000907601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa158015620008da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200090091906200753c565b8262006ff7565b50565b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b1580156200095b575f80fd5b505af11580156200096e573d5f803e3d5ffd5b505050505f5a9050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620009cd575f80fd5b505af1158015620009e0573d5f803e3d5ffd5b50505050505f5a620009f3908362007568565b905062000a2a604051806040016040528060118152602001702232b837b9b4ba1033b0b9903ab9b2b21d60791b8152508262007066565b62000a3981620186a0620070af565b5050565b602080546001600160a01b031990811660019081179092556021805482166002179055602280548216600317905560238054821660049081179091556024805490921660051790915560405163c88a5e6d60e01b81525f8051602062008c6a8339815191529263c88a5e6d9262000ac09268056bc75e2d63100000910162007523565b5f604051808303815f87803b15801562000ad8575f80fd5b505af115801562000aeb573d5f803e3d5ffd5b505060215460405163c88a5e6d60e01b81525f8051602062008c6a833981519152935063c88a5e6d925062000b38916001600160a01b03169068056bc75e2d631000009060040162007523565b5f604051808303815f87803b15801562000b50575f80fd5b505af115801562000b63573d5f803e3d5ffd5b505060225460405163c88a5e6d60e01b81525f8051602062008c6a833981519152935063c88a5e6d925062000bb0916001600160a01b03169068056bc75e2d631000009060040162007523565b5f604051808303815f87803b15801562000bc8575f80fd5b505af115801562000bdb573d5f803e3d5ffd5b505060235460405163c88a5e6d60e01b81525f8051602062008c6a833981519152935063c88a5e6d925062000c28916001600160a01b03169068056bc75e2d631000009060040162007523565b5f604051808303815f87803b15801562000c40575f80fd5b505af115801562000c53573d5f803e3d5ffd5b505060245460405163c88a5e6d60e01b81525f8051602062008c6a833981519152935063c88a5e6d925062000ca0916001600160a01b03169068056bc75e2d631000009060040162007523565b5f604051808303815f87803b15801562000cb8575f80fd5b505af115801562000ccb573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b15801562000d20575f80fd5b505af115801562000d33573d5f803e3d5ffd5b50505050620151804262000d48919062007584565b60405162000d56906200720c565b908152602001604051809103905ff08015801562000d76573d5f803e3d5ffd5b50601f60016101000a8154816001600160a01b0302191690836001600160a01b03160217905550565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562000df0575f80fd5b505af115801562000e03573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562000e5e575f80fd5b505af115801562000e71573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152935063ca669fa7925060240190505b5f604051808303815f87803b15801562000ec9575f80fd5b505af115801562000edc573d5f803e3d5ffd5b505060405163f28dceb360e01b815260206004820152601760248201527f506967677942616e6b3a205374696c6c206c6f636b656400000000000000000060448201525f8051602062008c6a833981519152925063f28dceb391506064015b5f604051808303815f87803b15801562000f53575f80fd5b505af115801562000f66573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000fb8575f80fd5b505af115801562000fcb573d5f803e3d5ffd5b50505050565b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562001022575f80fd5b505af115801562001035573d5f803e3d5ffd5b505060405163f28dceb360e01b81525f8051602062008c6a833981519152925063f28dceb391506200106a906004016200759a565b5f604051808303815f87803b15801562001082575f80fd5b505af115801562001095573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000fb8575f80fd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562001138575f80fd5b505af11580156200114b573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156200119d575f80fd5b505af1158015620011b0573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b15801562001205575f80fd5b505af115801562001218573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f8051602062008c6a833981519152925063491cc7c291506084015f604051808303815f87803b15801562001275575f80fd5b505af115801562001288573d5f803e3d5ffd5b5050602080546040516001600160a01b0390911681527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa935001905060405180910390a1601f60019054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000fb8575f80fd5b6200139c601f60019054906101000a90046001600160a01b03166001600160a01b0316638380edb76040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001370573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620013969190620075bd565b620070f1565b565b6200139c601f60019054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620013f4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200141a9190620075e5565b6020546001600160a01b031662007151565b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b1580156200147d575f80fd5b505af115801562001490573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f8051602062008c6a833981519152925063491cc7c291506084015f604051808303815f87803b158015620014ed575f80fd5b505af115801562001500573d5f803e3d5ffd5b5050602154604051670de0b6b3a764000081526001600160a01b0390911692507f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4915060200160405180910390a2601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620015a5575f80fd5b505af1158015620015b8573d5f803e3d5ffd5b5050505050565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562001610575f80fd5b505af115801562001623573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f8051602062008c6a833981519152925063491cc7c291506084015f604051808303815f87803b15801562001680575f80fd5b505af115801562001693573d5f803e3d5ffd5b5050602080546040516001600160a01b0390911681527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258935001905060405180910390a1601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562001725575f80fd5b505af115801562001738573d5f803e3d5ffd5b505050506200139c601f60019054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001792573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620017b89190620075bd565b620071ae565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b1580156200180f575f80fd5b505af115801562001822573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562001874575f80fd5b505af115801562001887573d5f803e3d5ffd5b505060215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b158015620018dc575f80fd5b505af1158015620018ef573d5f803e3d5ffd5b505060405163f28dceb360e01b81525f8051602062008c6a833981519152925063f28dceb3915062001924906004016200759a565b5f604051808303815f87803b1580156200193c575f80fd5b505af11580156200194f573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000fb8575f80fd5b60606016805480602002602001604051908101604052809291908181526020018280548015620019f957602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311620019da575b5050505050905090565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562001a54575f80fd5b505af115801562001a67573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562001ac2575f80fd5b505af115801562001ad5573d5f803e3d5ffd5b50505050505f8051602062008c6a8339815191526001600160a01b031663e5d6bf02620151804262001b08919062007584565b62001b1590600162007584565b6040518263ffffffff1660e01b815260040162001b3491815260200190565b5f604051808303815f87803b15801562001b4c575f80fd5b505af115801562001b5f573d5f803e3d5ffd5b505050505f601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001bb6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001bdc91906200753c565b60205460405163ca669fa760e01b81526001600160a01b03909116600482018190529192509031905f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562001c35575f80fd5b505af115801562001c48573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562001c9a575f80fd5b505af115801562001cad573d5f803e3d5ffd5b5050505062001d34601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001d07573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001d2d91906200753c565b5f62006ff7565b60205462000a39906001600160a01b03163162001d52848462007584565b62006ff7565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562001da9575f80fd5b505af115801562001dbc573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562001e17575f80fd5b505af115801562001e2a573d5f803e3d5ffd5b50505050505f8051602062008c6a8339815191526001600160a01b031663e5d6bf02620151804262001e5d919062007584565b62001e6d906301e1338062007584565b6040518263ffffffff1660e01b815260040162001e8c91815260200190565b5f604051808303815f87803b15801562001ea4575f80fd5b505af115801562001eb7573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b15801562001f0c575f80fd5b505af115801562001f1f573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562001f71575f80fd5b505af115801562001f84573d5f803e3d5ffd5b505050506200139c601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001d07573d5f803e3d5ffd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b1580156200202f575f80fd5b505af115801562002042573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b1580156200209d575f80fd5b505af1158015620020b0573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152935063ca669fa7925060240190505f604051808303815f87803b15801562002107575f80fd5b505af11580156200211a573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156200216c575f80fd5b505af11580156200217f573d5f803e3d5ffd5b505f8051602062008c6a833981519152925063e5d6bf029150620021a99050620151804262007584565b620021b690600162007584565b6040518263ffffffff1660e01b8152600401620021d591815260200190565b5f604051808303815f87803b158015620021ed575f80fd5b505af115801562002200573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b15801562002255575f80fd5b505af115801562002268573d5f803e3d5ffd5b505060405163f28dceb360e01b81525f8051602062008c6a833981519152925063f28dceb3915062000f3b906004016200760d565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b158015620022ee575f80fd5b505af115801562002301573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562002353575f80fd5b505af115801562002366573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b158015620023bb575f80fd5b505af1158015620023ce573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f8051602062008c6a833981519152925063491cc7c291506084015f604051808303815f87803b1580156200242b575f80fd5b505af11580156200243e573d5f803e3d5ffd5b5050602080546040516001600160a01b0390911681527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa935001905060405180910390a1601f60019054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015620024d0575f80fd5b505af1158015620024e3573d5f803e3d5ffd5b505050506200139c601f60019054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001370573d5f803e3d5ffd5b6060601e805480602002602001604051908101604052809291908181526020015f905b828210156200267c575f84815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562002664578382905f5260205f20018054620025d29062007639565b80601f0160208091040260200160405190810160405280929190818152602001828054620026009062007639565b80156200264f5780601f1062002625576101008083540402835291602001916200264f565b820191905f5260205f20905b8154815290600101906020018083116200263157829003601f168201915b505050505081526020019060010190620025b2565b50505050815250508152602001906001019062002560565b50505050905090565b5f8051602062008c6a83398151915263e5d6bf02620026a8620151804262007584565b620026b590600162007584565b6040518263ffffffff1660e01b8152600401620026d491815260200190565b5f604051808303815f87803b158015620026ec575f80fd5b505af1158015620026ff573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b15801562002754575f80fd5b505af115801562002767573d5f803e3d5ffd5b505050505f8051602062008c6a8339815191526001600160a01b031663f48448146040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000f53575f80fd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562002803575f80fd5b505af115801562002816573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562002868575f80fd5b505af11580156200287b573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b158015620028d0575f80fd5b505af1158015620028e3573d5f803e3d5ffd5b505060405163f28dceb360e01b81525f8051602062008c6a833981519152925063f28dceb391506200106a906004016200760d565b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562002969575f80fd5b505af11580156200297c573d5f803e3d5ffd5b505060405163f28dceb360e01b81526020600482015260166024820152754d757374206465706f73697420736f6d657468696e6760501b60448201525f8051602062008c6a833981519152925063f28dceb391506064015f604051808303815f87803b158015620029eb575f80fd5b505af1158015620029fe573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db05f6040518263ffffffff1660e01b81526004015f604051808303818588803b158015620015a5575f80fd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562002aa2575f80fd5b505af115801562002ab5573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562002b07575f80fd5b505af115801562002b1a573d5f803e3d5ffd5b505060215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b15801562002b6f575f80fd5b505af115801562002b82573d5f803e3d5ffd5b505060405163f28dceb360e01b81525f8051602062008c6a833981519152925063f28dceb3915062002bb7906004016200760d565b5f604051808303815f87803b15801562002bcf575f80fd5b505af115801562002be2573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620015a5575f80fd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562002c8e575f80fd5b505af115801562002ca1573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562002cfc575f80fd5b505af115801562002d0f573d5f803e3d5ffd5b50505050505f8051602062008c6a8339815191526001600160a01b031663e5d6bf02620151804262002d42919062007584565b62002d4f90600162007584565b6040518263ffffffff1660e01b815260040162002d6e91815260200190565b5f604051808303815f87803b15801562002d86575f80fd5b505af115801562002d99573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b15801562002dee575f80fd5b505af115801562002e01573d5f803e3d5ffd5b505050505f5a9050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562002e57575f80fd5b505af115801562002e6a573d5f803e3d5ffd5b505050505f5a62002e7c908362007568565b905062000a2a604051806040016040528060128152602001712bb4ba34323930bb9033b0b9903ab9b2b21d60711b8152508262007066565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562002f05575f80fd5b505af115801562002f18573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f8051602062008c6a833981519152925063491cc7c291506084015f604051808303815f87803b15801562002f75575f80fd5b505af115801562002f88573d5f803e3d5ffd5b50506021546020546040516001600160a01b039283169450911691507f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3601f5460215460405163f2fde38b60e01b81526001600160a01b039182166004820152610100909204169063f2fde38b906024015b5f604051808303815f87803b15801562000fb8575f80fd5b60606018805480602002602001604051908101604052809291908181526020018280548015620019f957602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311620019da575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015620019f957602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311620019da575050505050905090565b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562003127575f80fd5b505af11580156200313a573d5f803e3d5ffd5b505060405163f28dceb360e01b81525f8051602062008c6a833981519152925063f28dceb391506200316f906004016200759a565b5f604051808303815f87803b15801562003187575f80fd5b505af11580156200319a573d5f803e3d5ffd5b5050601f5460225460405163f2fde38b60e01b81526001600160a01b03918216600482015261010090920416925063f2fde38b915060240162002ffe565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562003229575f80fd5b505af11580156200323c573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f8051602062008c6a833981519152925063491cc7c291506084015f604051808303815f87803b15801562003299575f80fd5b505af1158015620032ac573d5f803e3d5ffd5b50506021546020546040516001600160a01b039283169450911691507f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3601f5460215460405163f2fde38b60e01b81526001600160a01b039182166004820152610100909204169063f2fde38b906024015f604051808303815f87803b15801562003339575f80fd5b505af11580156200334c573d5f803e3d5ffd5b505050506200139c601f60019054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620033a6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620033cc9190620075e5565b6021546001600160a01b031662007151565b62003434601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001d07573d5f803e3d5ffd5b6200348a601f60019054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620013f4573d5f803e3d5ffd5b620034e0601f60019054906101000a90046001600160a01b03166001600160a01b0316638380edb76040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001370573d5f803e3d5ffd5b62003536601f60019054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001370573d5f803e3d5ffd5b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562003587575f80fd5b505af11580156200359a573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620035f5575f80fd5b505af115801562003608573d5f803e3d5ffd5b505060225460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152935063ca669fa7925060240190505f604051808303815f87803b1580156200365f575f80fd5b505af115801562003672573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0671bc16d674ec800006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620036cd575f80fd5b505af1158015620036e0573d5f803e3d5ffd5b505060235460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152935063ca669fa7925060240190505f604051808303815f87803b15801562003737575f80fd5b505af11580156200374a573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db06729a2241af62c00006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620037a5575f80fd5b505af1158015620037b8573d5f803e3d5ffd5b505050505062003848601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003813573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200383991906200753c565b6753444835ec58000062006ff7565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562003899575f80fd5b505af1158015620038ac573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b158015620038fe575f80fd5b505af115801562003911573d5f803e3d5ffd5b505050506200396b601f60019054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001792573d5f803e3d5ffd5b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b158015620039bc575f80fd5b505af1158015620039cf573d5f803e3d5ffd5b505060405163f28dceb360e01b81525f8051602062008c6a833981519152925063f28dceb3915062003a04906004016200760d565b5f604051808303815f87803b15801562003a1c575f80fd5b505af115801562003a2f573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562003a8a575f80fd5b505af115801562003a9d573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152935063ca669fa7925060240190505f604051808303815f87803b15801562003af4575f80fd5b505af115801562003b07573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562003b59575f80fd5b505af115801562003b6c573d5f803e3d5ffd5b5050505062003bc6601f60019054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001370573d5f803e3d5ffd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562003c17575f80fd5b505af115801562003c2a573d5f803e3d5ffd5b5050601f5460215460405163f2fde38b60e01b81526001600160a01b03918216600482015261010090920416925063f2fde38b91506024015f604051808303815f87803b15801562003c7a575f80fd5b505af115801562003c8d573d5f803e3d5ffd5b5050505062003ce7601f60019054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620033a6573d5f803e3d5ffd5b5f8051602062008c6a83398151915263e5d6bf0262003d0a620151804262007584565b62003d1790600162007584565b6040518263ffffffff1660e01b815260040162003d3691815260200190565b5f604051808303815f87803b15801562003d4e575f80fd5b505af115801562003d61573d5f803e3d5ffd5b5050505062003dbb601f60019054906101000a90046001600160a01b03166001600160a01b0316638380edb76040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001792573d5f803e3d5ffd5b60215460405163ca669fa760e01b81526001600160a01b039091166004820181905231905f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562003e10575f80fd5b505af115801562003e23573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562003e75575f80fd5b505af115801562003e88573d5f803e3d5ffd5b5050505062003ee2601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001d07573d5f803e3d5ffd5b60215462000907906001600160a01b03163162001d52836753444835ec58000062007584565b6200139c601f60019054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001370573d5f803e3d5ffd5b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562003faf575f80fd5b505af115801562003fc2573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b1580156200401d575f80fd5b505af115801562004030573d5f803e3d5ffd5b505060225460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152935063ca669fa7925060240190505f604051808303815f87803b15801562004087575f80fd5b505af11580156200409a573d5f803e3d5ffd5b5050601f5461010090046001600160a01b0316915063d0e30db09050620040cb670de0b6b3a7640000600262007673565b6040518263ffffffff1660e01b81526004015f604051808303818588803b158015620040f5575f80fd5b505af115801562004108573d5f803e3d5ffd5b505060235460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152935063ca669fa7925060240190505f604051808303815f87803b1580156200415f575f80fd5b505af115801562004172573d5f803e3d5ffd5b5050601f5461010090046001600160a01b0316915063d0e30db09050620041a3670de0b6b3a7640000600362007673565b6040518263ffffffff1660e01b81526004015f604051808303818588803b158015620041cd575f80fd5b505af1158015620041e0573d5f803e3d5ffd5b50505050505f670de0b6b3a76400006003620041fd919062007673565b62004212670de0b6b3a7640000600262007673565b6200422690670de0b6b3a764000062007584565b62004232919062007584565b905062000907601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa158015620008da573d5f803e3d5ffd5b6060601b805480602002602001604051908101604052809291908181526020015f905b828210156200267c578382905f5260205f2090600202016040518060400160405290815f82018054620042e09062007639565b80601f01602080910402602001604051908101604052809291908181526020018280546200430e9062007639565b80156200435d5780601f1062004333576101008083540402835291602001916200435d565b820191905f5260205f20905b8154815290600101906020018083116200433f57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015620043e157602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620043a25790505b50505050508152505081526020019060010190620042ad565b6200139c601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001d07573d5f803e3d5ffd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b158015620044a1575f80fd5b505af1158015620044b4573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b1580156200450f575f80fd5b505af115801562004522573d5f803e3d5ffd5b50505050505f8051602062008c6a8339815191526001600160a01b031663e5d6bf02620151804262004555919062007584565b6200456290600162007584565b6040518263ffffffff1660e01b81526004016200458191815260200190565b5f604051808303815f87803b15801562004599575f80fd5b505af1158015620045ac573d5f803e3d5ffd5b505060215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b15801562004601575f80fd5b505af115801562004614573d5f803e3d5ffd5b505060405163f28dceb360e01b81526020600482015260146024820152732834b3b3bca130b7359d102737ba1037bbb732b960611b60448201525f8051602062008c6a833981519152925063f28dceb3915060640162000f3b565b5f8051602062008c6a83398151915263e5d6bf0262004692620151804262007584565b6200469f90600162007584565b6040518263ffffffff1660e01b8152600401620046be91815260200190565b5f604051808303815f87803b158015620046d6575f80fd5b505af1158015620046e9573d5f803e3d5ffd5b505050506200139c601f60019054906101000a90046001600160a01b03166001600160a01b0316638380edb76040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001792573d5f803e3d5ffd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562004794575f80fd5b505af1158015620047a7573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f8051602062008c6a833981519152925063491cc7c291506084015f604051808303815f87803b15801562004804575f80fd5b505af115801562004817573d5f803e3d5ffd5b5050602080546040516001600160a01b0390911681527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258935001905060405180910390a1601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000fb8575f80fd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b158015620048fa575f80fd5b505af11580156200490d573d5f803e3d5ffd5b505060405163f28dceb360e01b815260206004820152601960248201527f4e6577206f776e6572206973207a65726f20616464726573730000000000000060448201525f8051602062008c6a833981519152925063f28dceb391506064015f604051808303815f87803b15801562004983575f80fd5b505af115801562004996573d5f803e3d5ffd5b5050601f5460405163f2fde38b60e01b81525f60048201526101009091046001600160a01b0316925063f2fde38b915060240162002ffe565b6060601a805480602002602001604051908101604052809291908181526020015f905b828210156200267c578382905f5260205f2001805462004a129062007639565b80601f016020809104026020016040519081016040528092919081815260200182805462004a409062007639565b801562004a8f5780601f1062004a655761010080835404028352916020019162004a8f565b820191905f5260205f20905b81548152906001019060200180831162004a7157829003601f168201915b505050505081526020019060010190620049f2565b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562004af5575f80fd5b505af115801562004b08573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f8051602062008c6a833981519152925063491cc7c291506084015f604051808303815f87803b15801562004b65575f80fd5b505af115801562004b78573d5f803e3d5ffd5b5050602154604051670de0b6b3a764000081526001600160a01b0390911692507f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4915060200160405180910390a2601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562004c1d575f80fd5b505af115801562004c30573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152935063ca669fa7925060240190505f604051808303815f87803b15801562004c87575f80fd5b505af115801562004c9a573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f8051602062008c6a833981519152925063491cc7c291506084015f604051808303815f87803b15801562004cf7575f80fd5b505af115801562004d0a573d5f803e3d5ffd5b50506021546020546040516001600160a01b039283169450911691507f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3601f5460215460405163f2fde38b60e01b81526001600160a01b039182166004820152610100909204169063f2fde38b906024015f604051808303815f87803b15801562004d97575f80fd5b505af115801562004daa573d5f803e3d5ffd5b505060215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b15801562004dff575f80fd5b505af115801562004e12573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f8051602062008c6a833981519152925063491cc7c291506084015f604051808303815f87803b15801562004e6f575f80fd5b505af115801562004e82573d5f803e3d5ffd5b50506021546040516001600160a01b0390911681527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589250602001905060405180910390a1601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562004f15575f80fd5b505af115801562004f28573d5f803e3d5ffd5b505060215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b15801562004f7d575f80fd5b505af115801562004f90573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f8051602062008c6a833981519152925063491cc7c291506084015f604051808303815f87803b15801562004fed575f80fd5b505af115801562005000573d5f803e3d5ffd5b50506021546040516001600160a01b0390911681527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9250602001905060405180910390a1601f60019054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562005093575f80fd5b505af1158015620050a6573d5f803e3d5ffd5b505f8051602062008c6a833981519152925063e5d6bf029150620050d09050620151804262007584565b620050dd90600162007584565b6040518263ffffffff1660e01b8152600401620050fc91815260200190565b5f604051808303815f87803b15801562005114575f80fd5b505af115801562005127573d5f803e3d5ffd5b505060215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b1580156200517c575f80fd5b505af11580156200518f573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f8051602062008c6a833981519152925063491cc7c291506084015f604051808303815f87803b158015620051ec575f80fd5b505af1158015620051ff573d5f803e3d5ffd5b5050602154604051670de0b6b3a764000081526001600160a01b0390911692507f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d591506020015b60405180910390a2601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000fb8575f80fd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b158015620052ed575f80fd5b505af115801562005300573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b1580156200535b575f80fd5b505af11580156200536e573d5f803e3d5ffd5b50505050505f8051602062008c6a8339815191526001600160a01b031663e5d6bf026201518042620053a1919062007584565b620053ae90600162007584565b6040518263ffffffff1660e01b8152600401620053cd91815260200190565b5f604051808303815f87803b158015620053e5575f80fd5b505af1158015620053f8573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b03909116600482018190523192505f8051602062008c6a833981519152915063ca669fa7906024015f604051808303815f87803b15801562005451575f80fd5b505af115801562005464573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015620054b6575f80fd5b505af1158015620054c9573d5f803e3d5ffd5b5050505062005523601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001d07573d5f803e3d5ffd5b60205462000907906001600160a01b03163162001d52670de0b6b3a76400008462007584565b6060601d805480602002602001604051908101604052809291908181526020015f905b828210156200267c575f8481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200561557602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620055d65790505b505050505081525050815260200190600101906200556c565b6200139c601f60019054906101000a90046001600160a01b03166001600160a01b031663602bc62b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562005684573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620056aa91906200753c565b62001d52620151804262007584565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b1580156200570a575f80fd5b505af11580156200571d573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562005778575f80fd5b505af11580156200578b573d5f803e3d5ffd5b5050505050601f60019054906101000a90046001600160a01b0316604051620057b4906200721a565b6001600160a01b039091168152602001604051809103905ff080158015620057de573d5f803e3d5ffd5b50602580546001600160a01b0319166001600160a01b0392909216918217905560405163c88a5e6d60e01b81525f8051602062008c6a8339815191529163c88a5e6d916200583a9190670de0b6b3a76400009060040162007523565b5f604051808303815f87803b15801562005852575f80fd5b505af115801562005865573d5f803e3d5ffd5b505f8051602062008c6a833981519152925063e5d6bf0291506200588f9050620151804262007584565b6200589c90600162007584565b6040518263ffffffff1660e01b8152600401620058bb91815260200190565b5f604051808303815f87803b158015620058d3575f80fd5b505af1158015620058e6573d5f803e3d5ffd5b505060255460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b1580156200593b575f80fd5b505af11580156200594e573d5f803e3d5ffd5b505060405163f28dceb360e01b81526020600482015260146024820152732834b3b3bca130b7359d102737ba1037bbb732b960611b60448201525f8051602062008c6a833981519152925063f28dceb391506064015f604051808303815f87803b158015620059bb575f80fd5b505af1158015620059ce573d5f803e3d5ffd5b5050505060255f9054906101000a90046001600160a01b03166001600160a01b0316639e5faafc6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000fb8575f80fd5b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562005a70575f80fd5b505af115801562005a83573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562005ade575f80fd5b505af115801562005af1573d5f803e3d5ffd5b50505050505f8051602062008c6a8339815191526001600160a01b031663e5d6bf02620151804262005b24919062007584565b62005b3190600162007584565b6040518263ffffffff1660e01b815260040162005b5091815260200190565b5f604051808303815f87803b15801562005b68575f80fd5b505af115801562005b7b573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b15801562005bd0575f80fd5b505af115801562005be3573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f8051602062008c6a833981519152925063491cc7c291506084015f604051808303815f87803b15801562005c40575f80fd5b505af115801562005c53573d5f803e3d5ffd5b505060208054604051670de0b6b3a764000081526001600160a01b0390911693507f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d592500162005246565b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562005cef575f80fd5b505af115801562005d02573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562005d5d575f80fd5b505af115801562005d70573d5f803e3d5ffd5b50505050506200139c601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562005dcb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062005df191906200753c565b670de0b6b3a764000062006ff7565b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562005e51575f80fd5b505af115801562005e64573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562005ebf575f80fd5b505af115801562005ed2573d5f803e3d5ffd5b505050505062005f2d601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562005dcb573d5f803e3d5ffd5b6021546200139c906001600160a01b03163162001d52670de0b6b3a764000068056bc75e2d6310000062007568565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562005fad575f80fd5b505af115801562005fc0573d5f803e3d5ffd5b505060405163f28dceb360e01b815260206004820152601660248201527510dbdb9d1c9858dd081a5cc81b9bdd081c185d5cd95960521b60448201525f8051602062008c6a833981519152925063f28dceb3915060640162001924565b6060601c805480602002602001604051908101604052809291908181526020015f905b828210156200267c575f8481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620060e957602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620060aa5790505b5050505050815250508152602001906001019062006040565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562006153575f80fd5b505af115801562006166573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620061c1575f80fd5b505af1158015620061d4573d5f803e3d5ffd5b50505050505f8051602062008c6a8339815191526001600160a01b031663e5d6bf026001620151804262006209919062007584565b62006215919062007568565b6040518263ffffffff1660e01b81526004016200623491815260200190565b5f604051808303815f87803b1580156200624c575f80fd5b505af11580156200625f573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa7915060240162000eb1565b60606019805480602002602001604051908101604052809291908181526020015f905b828210156200267c578382905f5260205f20018054620062e59062007639565b80601f0160208091040260200160405190810160405280929190818152602001828054620063139062007639565b8015620063625780601f10620063385761010080835404028352916020019162006362565b820191905f5260205f20905b8154815290600101906020018083116200634457829003601f168201915b505050505081526020019060010190620062c5565b6008545f9060ff16156200638b5750600190565b604051630667f9d760e41b81525f905f8051602062008c6a8339815191529063667f9d7090620063eb907f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d906519985a5b195960d21b9060040162007523565b602060405180830381865afa15801562006407573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200642d91906200753c565b1415905090565b5f805b600a811015620065455760215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562006492575f80fd5b505af1158015620064a5573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db067016345785d8a00006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562006500575f80fd5b505af115801562006513573d5f803e3d5ffd5b505050505067016345785d8a0000826200652e919062007584565b9150806200653c816200768d565b91505062006437565b5062000907601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa158015620008da573d5f803e3d5ffd5b60405163c88a5e6d60e01b81526010906020906030905f8051602062008c6a8339815191529063c88a5e6d90620065e2908690678ac7230489e800009060040162007523565b5f604051808303815f87803b158015620065fa575f80fd5b505af11580156200660d573d5f803e3d5ffd5b505060405163c88a5e6d60e01b81525f8051602062008c6a833981519152925063c88a5e6d91506200664e908590678ac7230489e800009060040162007523565b5f604051808303815f87803b15801562006666575f80fd5b505af115801562006679573d5f803e3d5ffd5b505060405163c88a5e6d60e01b81525f8051602062008c6a833981519152925063c88a5e6d9150620066ba908490678ac7230489e800009060040162007523565b5f604051808303815f87803b158015620066d2575f80fd5b505af1158015620066e5573d5f803e3d5ffd5b5050505062006707836001600160a01b031631678ac7230489e8000062006ff7565b62006725826001600160a01b031631678ac7230489e8000062006ff7565b62006743816001600160a01b031631678ac7230489e8000062006ff7565b60405163ca669fa760e01b81526001600160a01b03841660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562006790575f80fd5b505af1158015620067a3573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620067fe575f80fd5b505af115801562006811573d5f803e3d5ffd5b505060405163ca669fa760e01b81526001600160a01b03861660048201525f8051602062008c6a833981519152935063ca669fa7925060240190505f604051808303815f87803b15801562006864575f80fd5b505af115801562006877573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0671bc16d674ec800006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620068d2575f80fd5b505af1158015620068e5573d5f803e3d5ffd5b505060405163ca669fa760e01b81526001600160a01b03851660048201525f8051602062008c6a833981519152935063ca669fa7925060240190505f604051808303815f87803b15801562006938575f80fd5b505af11580156200694b573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db06729a2241af62c00006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620069a6575f80fd5b505af1158015620069b9573d5f803e3d5ffd5b505050505062006a14601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003813573d5f803e3d5ffd5b5f8051602062008c6a83398151915263e5d6bf0262006a37620151804262007584565b62006a4490600162007584565b6040518263ffffffff1660e01b815260040162006a6391815260200190565b5f604051808303815f87803b15801562006a7b575f80fd5b505af115801562006a8e573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b15801562006ae3575f80fd5b505af115801562006af6573d5f803e3d5ffd5b5050601f5460405163f2fde38b60e01b81526001600160a01b038781166004830152610100909204909116925063f2fde38b91506024015f604051808303815f87803b15801562006b45575f80fd5b505af115801562006b58573d5f803e3d5ffd5b505060405163ca669fa760e01b81526001600160a01b03861660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b15801562006ba9575f80fd5b505af115801562006bbc573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562006c0e575f80fd5b505af115801562006c21573d5f803e3d5ffd5b5050505062006c7b601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001d07573d5f803e3d5ffd5b505050565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562006cd1575f80fd5b505af115801562006ce4573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562006d3f575f80fd5b505af115801562006d52573d5f803e3d5ffd5b50505050505f8051602062008c6a8339815191526001600160a01b031663e5d6bf02620151804262001e6d919062007584565b60606015805480602002602001604051908101604052809291908181526020018280548015620019f957602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311620019da575050505050905090565b6200139c42601f60019054906101000a90046001600160a01b03166001600160a01b031663602bc62b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562006e3c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062006e6291906200753c565b11620071ae565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a8339815191529063ca669fa7906024015f604051808303815f87803b15801562006eba575f80fd5b505af115801562006ecd573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562006f1f575f80fd5b505af115801562006f32573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062008c6a833981519152925063ca669fa791506024015f604051808303815f87803b15801562006f87575f80fd5b505af115801562006f9a573d5f803e3d5ffd5b505060405163f28dceb360e01b815260206004820152601660248201527510dbdb9d1c9858dd081a5cc81b9bdd081c185d5cd95960521b60448201525f8051602062008c6a833981519152925063f28dceb391506064016200106a565b80821462000a395760405163260a5b1560e21b815260048101839052602481018290525f8051602062008c6a833981519152906398296c54906044015b5f6040518083038186803b1580156200704b575f80fd5b505afa1580156200705e573d5f803e3d5ffd5b505050505050565b62000a3982826040516024016200707f929190620076a8565b60408051601f198184030181529190526020810180516001600160e01b0316632d839cb360e21b179052620071e8565b80821062000a395760405163b12fc00560e01b815260048101839052602481018290525f8051602062008c6a8339815191529063b12fc0059060440162007034565b8015620009075760405163a598288560e01b815281151560048201525f8051602062008c6a8339815191529063a5982885906024015b5f6040518083038186803b1580156200713e575f80fd5b505afa158015620015b8573d5f803e3d5ffd5b806001600160a01b0316826001600160a01b03161462000a39576040516328a9b0fb60e11b81526001600160a01b038084166004830152821660248201525f8051602062008c6a8339815191529063515361f69060440162007034565b806200090757604051630c9fd58160e01b815281151560048201525f8051602062008c6a83398151915290630c9fd5819060240162007127565b62000907815f6a636f6e736f6c652e6c6f6790505f80835160208501845afa505050565b61139a80620076cc83390190565b6102048062008a6683390190565b602080825282518282018190525f9190848201906040850190845b818110156200726a5783516001600160a01b03168352928401929184019160010162007243565b50909695505050505050565b5f81518084525f5b818110156200729c576020818501810151868301820152016200727e565b505f602082860101526020601f19601f83011685010191505092915050565b602080825282518282018190525f919060409081850190600581811b8701840188860187805b858110156200737057603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b818110156200735957605f198985030183526200734684865162007276565b948e01949350918d019160010162007327565b505050978a019794505091880191600101620072e1565b50919a9950505050505050505050565b5f8151808452602080850194508084015f5b83811015620073ba5781516001600160e01b0319168752958201959082019060010162007392565b509495945050505050565b5f6020808301818452808551808352604092508286019150828160051b8701018488015f5b838110156200744057888303603f1901855281518051878552620074118886018262007276565b91890151858303868b01529190506200742b818362007380565b968901969450505090860190600101620073ea565b509098975050505050505050565b5f602080830181845280855180835260408601915060408160051b87010192508387015f5b82811015620074a557603f198886030184526200749285835162007276565b9450928501929085019060010162007473565b5092979650505050505050565b5f6020808301818452808551808352604092508286019150828160051b8701018488015f5b838110156200744057888303603f19018552815180516001600160a01b031684528701518784018790526200750f8785018262007380565b9588019593505090860190600101620074d7565b6001600160a01b03929092168252602082015260400190565b5f602082840312156200754d575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156200757e576200757e62007554565b92915050565b808201808211156200757e576200757e62007554565b6020808252600990820152682737ba1037bbb732b960b91b604082015260600190565b5f60208284031215620075ce575f80fd5b81518015158114620075de575f80fd5b9392505050565b5f60208284031215620075f6575f80fd5b81516001600160a01b0381168114620075de575f80fd5b60208082526012908201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b604082015260600190565b600181811c908216806200764e57607f821691505b6020821081036200766d57634e487b7160e01b5f52602260045260245ffd5b50919050565b80820281158282048414176200757e576200757e62007554565b5f60018201620076a157620076a162007554565b5060010190565b604081525f620076bc604083018562007276565b9050826020830152939250505056fe608060405260405161139a38038061139a833981016040819052610022916100c4565b80428111610042576040516251339b60e31b815260040160405180910390fd5b6100506309660180426100db565b8111156100705760405163fce05cc760e01b815260040160405180910390fd5b5f80546001600160a01b03191633908117825560018490556002805460ff191690556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35050610100565b5f602082840312156100d4575f80fd5b5051919050565b808201808211156100fa57634e487b7160e01b5f52601160045260245ffd5b92915050565b61128d8061010d5f395ff3fe608060405260043610610207575f3560e01c80637cf4309011610117578063b488355f1161009f578063dac6270d1161006e578063dac6270d14610603578063dfe6b5d614610617578063f2fde38b14610661578063fa78668f14610680578063fc7e286d1461069757610259565b8063b488355f14610599578063bc394350146105b8578063d0e30db0146105dc578063d9c5e6d7146105e457610259565b8063853828b6116100e6578063853828b6146104dd5780638da5cb5b146104f157806399b20eaf14610527578063a338df381461053b578063b3a7834d1461055a57610259565b80637cf430901461048c5780637d882097146104a05780638380edb7146104b55780638456cb59146104c957610259565b80633ccfd60b1161019a5780635c975abb116101695780635c975abb1461040a578063602bc62b146104235780636046462714610437578063729c3e0e1461044c57806378dee4171461047757610259565b80633ccfd60b146103b05780633f4ba83a146103c45780633ff03207146103d85780634c34a982146103ee57610259565b80631ea30fef116101d65780631ea30fef14610341578063240be9441461035b578063251c1aa3146103865780632bf6c5bc1461039b57610259565b80630905f560146102b25780630945d42c146102e757806312065fe01461030657806319262d301461032257610259565b3661025957306001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b158015610245575f80fd5b505af1158015610257573d5f803e3d5ffd5b005b60405162461bcd60e51b815260206004820152602360248201527f506967677942616e6b3a204469726563742063616c6c73206e6f7420616c6c6f6044820152621dd95960ea1b60648201526084015b60405180910390fd5b3480156102bd575f80fd5b506002546102d290600160a81b900460ff1681565b60405190151581526020015b60405180910390f35b3480156102f2575f80fd5b506102576103013660046111b2565b6106c2565b348015610311575f80fd5b50475b6040519081526020016102de565b34801561032d575f80fd5b506102d261033c3660046111c9565b6107a7565b34801561034c575f80fd5b5061031466038d7ea4c6800081565b348015610366575f80fd5b506103146103753660046111c9565b60056020525f908152604090205481565b348015610391575f80fd5b5061031460015481565b3480156103a6575f80fd5b5061031460035481565b3480156103bb575f80fd5b506102576107f9565b3480156103cf575f80fd5b50610257610941565b3480156103e3575f80fd5b506103146201518081565b3480156103f9575f80fd5b50610314683635c9adc5dea0000081565b348015610415575f80fd5b506002546102d29060ff1681565b34801561042e575f80fd5b50600154610314565b348015610442575f80fd5b5061031460085481565b348015610457575f80fd5b506103146104663660046111c9565b60066020525f908152604090205481565b348015610482575f80fd5b5061031460095481565b348015610497575f80fd5b506103146109f7565b3480156104ab575f80fd5b5061031460075481565b3480156104c0575f80fd5b506102d2610a31565b3480156104d4575f80fd5b50610257610a4f565b3480156104e8575f80fd5b50610257610b03565b3480156104fc575f80fd5b505f5461050f906001600160a01b031681565b6040516001600160a01b0390911681526020016102de565b348015610532575f80fd5b50610257610c77565b348015610546575f80fd5b506102576105553660046111c9565b610ce8565b348015610565575f80fd5b506105796105743660046111c9565b610dbb565b6040805194855260208501939093529183015260608201526080016102de565b3480156105a4575f80fd5b506103146105b33660046111c9565b610e14565b3480156105c3575f80fd5b5060025461050f9061010090046001600160a01b031681565b610257610e5e565b3480156105ef575f80fd5b506102576105fe3660046111b2565b610fda565b34801561060e575f80fd5b506103146110cc565b348015610622575f80fd5b5060075460085460095460025460408051948552602085019390935291830152600160a81b900460ff161515606082015247608082015260a0016102de565b34801561066c575f80fd5b5061025761067b3660046111c9565b6110e9565b34801561068b575f80fd5b50610314630966018081565b3480156106a2575f80fd5b506103146106b13660046111c9565b60046020525f908152604090205481565b5f546001600160a01b031633146106eb5760405162461bcd60e51b81526004016102a9906111ef565b5f546001600160a01b0316331461071557604051631a93c53360e11b815260040160405180910390fd5b66038d7ea4c6800081101561073d576040516345556f1f60e01b815260040160405180910390fd5b60075481101561075f576040516251339b60e31b815260040160405180910390fd5b60408051683635c9adc5dea0000080825260208201849052917f88d01455e50f0b0da01a455a4547346410a2fd66ffdc7241a4c280d6089c4257910160405180910390a15050565b6002545f9060ff161580156107d257506001600160a01b0382165f9081526004602052604090205415155b80156107f35750600154421015806107f35750600254600160a81b900460ff165b92915050565b60025460ff161561081d5760405163012f773760e11b815260040160405180910390fd5b5f546001600160a01b03163314610847576040516363fc43ab60e11b815260040160405180910390fd5b60015442101561086a57604051632d4f9b0560e01b815260040160405180910390fd5b475f81900361088c5760405163870817fd60e01b815260040160405180910390fd5b8060085f82825461089d9190611231565b909155505060405181815233907f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d59060200160405180910390a26040515f90339083908381818185875af1925050503d805f8114610916576040519150601f19603f3d011682016040523d82523d5f602084013e61091b565b606091505b505090508061093d576040516340d812e160e01b815260040160405180910390fd5b5050565b5f546001600160a01b0316331461096a5760405162461bcd60e51b81526004016102a9906111ef565b5f546001600160a01b0316331461099457604051631a93c53360e11b815260040160405180910390fd5b60025460ff166109b757604051631a93c53360e11b815260040160405180910390fd5b6002805460ff191690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6002545f90600160a81b900460ff161580610a1457506003544210155b15610a1e57505f90565b42600354610a2c9190611244565b905090565b5f60015442101580610a2c575050600254600160a81b900460ff1690565b5f546001600160a01b03163314610a785760405162461bcd60e51b81526004016102a9906111ef565b5f546001600160a01b03163314610aa257604051631a93c53360e11b815260040160405180910390fd5b60025460ff1615610ac65760405163012f773760e11b815260040160405180910390fd5b6002805460ff191660011790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016109ed565b60025460ff1615610b275760405163012f773760e11b815260040160405180910390fd5b600154421015610b4a57604051632d4f9b0560e01b815260040160405180910390fd5b335f9081526004602052604081205490819003610b7a5760405163e68effe160e01b815260040160405180910390fd5b335f90815260046020526040812081905560088054839290610b9d908490611231565b909155505060405181815233907f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d59060200160405180910390a26040515f90339083908381818185875af1925050503d805f8114610c16576040519150601f19603f3d011682016040523d82523d5f602084013e610c1b565b606091505b5050905080610c3d576040516340d812e160e01b815260040160405180910390fd5b60405182815233907f23d6711a1d031134a36921253c75aa59e967d38e369ac625992824315e204f20906020015b60405180910390a25050565b60025461010090046001600160a01b03163314610ca757604051631a93c53360e11b815260040160405180910390fd5b6002805460ff60a81b191690555f6003556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020016109ed565b5f546001600160a01b03163314610d115760405162461bcd60e51b81526004016102a9906111ef565b5f546001600160a01b03163314610d3b57604051631a93c53360e11b815260040160405180910390fd5b6001600160a01b038116610d6257604051631a93c53360e11b815260040160405180910390fd5b600280546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907fc0cf06c8aac34052209a818a44d0ad3d4ed78bde060b69f7a4ce24560ad51068905f90a35050565b6001600160a01b0381165f90815260046020908152604080832054600583528184205460069093529083205460015491939091421015610e0a5742600154610e039190611244565b9050610e0d565b505f5b9193509193565b6001600160a01b0381165f90815260046020526040812054683635c9adc5dea000008110610e4457505f92915050565b610e5781683635c9adc5dea00000611244565b9392505050565b60025460ff1615610e825760405163012f773760e11b815260040160405180910390fd5b5f3411610eca5760405162461bcd60e51b81526020600482015260166024820152754d757374206465706f73697420736f6d657468696e6760501b60448201526064016102a9565b66038d7ea4c68000341015610f155760405162461bcd60e51b815260206004820152601160248201527011195c1bdcda5d081d1bdbc81cdb585b1b607a1b60448201526064016102a9565b335f9081526004602052604081205490610f2f3483611231565b9050683635c9adc5dea00000811115610f805760405162461bcd60e51b8152602060048201526013602482015272088cae0dee6d2e840caf0c6cacac8e640dac2f606b1b60448201526064016102a9565b335f90815260046020526040812082905560078054349290610fa3908490611231565b909155505060405134815233907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c490602001610c6b565b60025461010090046001600160a01b0316331461100a57604051631a93c53360e11b815260040160405180910390fd5b60025460ff161561102e5760405163012f773760e11b815260040160405180910390fd5b8042811161104e576040516251339b60e31b815260040160405180910390fd5b61105c630966018042611231565b81111561107c5760405163fce05cc760e01b815260040160405180910390fd5b60028054600384905560ff60ff60a81b0119166001600160a81b0117905560405182815233907f16ea6c4a0ff7e3a4c096560a5a71632e344907cd03af0f6e655b409a61d549ef90602001610c6b565b5f60015442106110db57505f90565b42600154610a2c9190611244565b5f546001600160a01b031633146111125760405162461bcd60e51b81526004016102a9906111ef565b5f546001600160a01b0316331461113c57604051631a93c53360e11b815260040160405180910390fd5b6001600160a01b03811661116357604051631a93c53360e11b815260040160405180910390fd5b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156111c2575f80fd5b5035919050565b5f602082840312156111d9575f80fd5b81356001600160a01b0381168114610e57575f80fd5b6020808252601490820152732834b3b3bca130b7359d102737ba1037bbb732b960611b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156107f3576107f361121d565b818103818111156107f3576107f361121d56fea2646970667358221220b40737dd7e59556a572d59ae42ceb25b10310ea5ddcf3f662a816b1b1e7cc06a64736f6c63430008140033608060405234801561000f575f80fd5b5060405161020438038061020483398101604081905261002e91610052565b5f80546001600160a01b0319166001600160a01b039290921691909117905561007f565b5f60208284031215610062575f80fd5b81516001600160a01b0381168114610078575f80fd5b9392505050565b6101788061008c5f395ff3fe60806040526004361061002b575f3560e01c80639e5faafc1461009d578063d4b83992146100b1575f80fd5b36610099575f546001600160a01b03163115610097575f805460408051633ccfd60b60e01b815290516001600160a01b0390921692633ccfd60b9260048084019382900301818387803b158015610080575f80fd5b505af1158015610092573d5f803e3d5ffd5b505050505b005b5f80fd5b3480156100a8575f80fd5b506100976100eb565b3480156100bc575f80fd5b505f546100cf906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b5f805460408051633ccfd60b60e01b815290516001600160a01b0390921692633ccfd60b9260048084019382900301818387803b15801561012a575f80fd5b505af115801561013c573d5f803e3d5ffd5b5050505056fea2646970667358221220eb5a8cf24cd188092560acca67568fbe331fff34d6967966f8705f2fd4df86f964736f6c634300081400330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12da26469706673582212207fce3804af797a534df7878a887f9e8dd29aa5ba0ce3d99ec8bd97fb71a1634e64736f6c63430008140033","sourceMap":"119:21388:20:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12233:305;;;:::i;:::-;;3054:344;;;:::i;12720:44::-;;;;;-1:-1:-1;;;;;12720:44:20;;;;;;-1:-1:-1;;;;;214:32:22;;;196:51;;184:2;169:18;12720:44:20;;;;;;;;875:543;;;:::i;4398:342::-;;;:::i;9563:142::-;;;:::i;10925:236::-;;;:::i;7754:98::-;;;:::i;8140:96::-;;;:::i;2514:223::-;;;:::i;9345:212::-;;;:::i;10309:261::-;;;:::i;2907:134:6:-;;;:::i;:::-;;;;;;;:::i;11295:556:20:-;;;:::i;7355:393::-;;;:::i;21024:481::-;;;:::i;9984:319::-;;;:::i;3823:151:6:-;;;:::i;:::-;;;;;;;:::i;5147:267:20:-;;;:::i;9711:::-;;;:::i;2337:171::-;;;:::i;2743:305::-;;;:::i;5904:517::-;;;:::i;8887:219::-;;;:::i;3684:133:6:-;;;:::i;3385:141::-;;;:::i;19668:166:20:-;;;:::i;8242:259::-;;;:::i;13485:1543::-;;;:::i;9250:89::-;;;:::i;1804:527::-;;;:::i;3193:186:6:-;;;:::i;:::-;;;;;;;:::i;16195:99:20:-;;;:::i;4000:392::-;;;:::i;7858:148::-;;;:::i;10742:177::-;;;:::i;8507:197::-;;;:::i;3047:140:6:-;;;:::i;:::-;;;;;;;:::i;15034:1022:20:-;;;:::i;3531:463::-;;;:::i;3532:146:6:-;;;:::i;:::-;;;;;;;:::i;16495:119:20:-;;;:::i;12771:578::-;;;:::i;4746:395::-;;;:::i;16300:189::-;;;:::i;1550:248::-;;;:::i;20541:163::-;;;:::i;2754:147:6:-;;;:::i;6972:377:20:-;;;:::i;2459:141:6:-;;;:::i;156:26:20:-;;;;;;;;-1:-1:-1;;;;;156:26:20;;;1306:195:1;;;:::i;:::-;;;7038:14:22;;7031:22;7013:41;;7001:2;6986:18;1306:195:1;6873:187:22;11857:370:20;;;:::i;16958:1199::-;;;:::i;6567:399::-;;;:::i;2606:142:6:-;;;:::i;16620:196:20:-;;;:::i;20261:274::-;;;:::i;1065:26:13:-;;;;;;;;;12233:305:20;12390:5;;12382:24;;-1:-1:-1;;;12382:24:20;;-1:-1:-1;;12355:17:20;-1:-1:-1;;;;;;;;;;;336:42:0;12382:7:20;;:24;;-1:-1:-1;;;;;12390:5:20;;;;12355:17;;12382:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12426:5:20;;12417:15;;-1:-1:-1;;;12417:15:20;;-1:-1:-1;;;;;12426:5:20;;;12417:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;12417:8:20;;-1:-1:-1;169:18:22;;12417:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12442:9;;;;;;;;;-1:-1:-1;;;;;12442:9:20;-1:-1:-1;;;;;12442:17:20;;12467:8;12442:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12489:42;12498:9;;;;;;;;;-1:-1:-1;;;;;12498:9:20;-1:-1:-1;;;;;12498:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12522:8;12489;:42::i;:::-;12282:256;12233:305::o;3054:344::-;3115:5;;3106:15;;-1:-1:-1;;;3106:15:20;;-1:-1:-1;;;;;3115:5:20;;;3106:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;3106:8:20;;169:18:22;;3106:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3131:16;3150:9;3131:28;;3169:9;;;;;;;;;-1:-1:-1;;;;;3169:9:20;-1:-1:-1;;;;;3169:17:20;;818:7;3169:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3221:15;3250:9;3239:20;;:8;:20;:::i;:::-;3221:38;;3270:41;;;;;;;;;;;;;;-1:-1:-1;;;3270:41:20;;;3303:7;3270:11;:41::i;:::-;3366:25;3375:7;3384:6;3366:8;:25::i;:::-;3096:302;;3054:344::o;875:543::-;940:5;:20;;-1:-1:-1;;;;;;940:20:20;;;956:3;940:20;;;;;;970:5;:20;;;;986:3;970:20;;;1000:5;:20;;;;1016:3;1000:20;;;1030:5;:20;;;;1046:3;1030:20;;;;;;1060:8;:23;;;;;1079:3;1060:23;;;;1094:31;;-1:-1:-1;;;1094:31:20;;-1:-1:-1;;;;;;;;;;;336:42:0;1094:7:20;;:31;;726:9;;1094:31;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1143:5:20;;1135:31;;-1:-1:-1;;;1135:31:20;;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;1135:7:20;;-1:-1:-1;1135:31:20;;-1:-1:-1;;;;;1143:5:20;;726:9;;1135:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1184:5:20;;1176:31;;-1:-1:-1;;;1176:31:20;;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;1176:7:20;;-1:-1:-1;1176:31:20;;-1:-1:-1;;;;;1184:5:20;;726:9;;1176:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1225:5:20;;1217:31;;-1:-1:-1;;;1217:31:20;;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;1217:7:20;;-1:-1:-1;1217:31:20;;-1:-1:-1;;;;;1225:5:20;;726:9;;1217:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1266:8:20;;1258:34;;-1:-1:-1;;;1258:34:20;;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;1258:7:20;;-1:-1:-1;1258:34:20;;-1:-1:-1;;;;;1266:8:20;;726:9;;1258:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1339:5:20;;1330:15;;-1:-1:-1;;;1330:15:20;;-1:-1:-1;;;;;1339:5:20;;;1330:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;1330:8:20;;-1:-1:-1;169:18:22;;1330:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;772:6;1381:15;:29;;;;:::i;:::-;1367:44;;;;;:::i;:::-;8282:25:22;;;8270:2;8255:18;1367:44:20;;;;;;;;;;;;;;;;;;;;;;;1355:9;;:56;;;;;-1:-1:-1;;;;;1355:56:20;;;;;-1:-1:-1;;;;;1355:56:20;;;;;;875:543::o;4398:342::-;4502:5;;4493:15;;-1:-1:-1;;;4493:15:20;;-1:-1:-1;;;;;4502:5:20;;;4493:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;4493:8:20;;169:18:22;;4493:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4518:9;;;;;;;;;-1:-1:-1;;;;;4518:9:20;-1:-1:-1;;;;;4518:17:20;;818:7;4518:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4645:5:20;;4636:15;;-1:-1:-1;;;4636:15:20;;-1:-1:-1;;;;;4645:5:20;;;4636:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;4636:8:20;;-1:-1:-1;169:18:22;;;-1:-1:-1;4636:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4661:42:20;;-1:-1:-1;;;4661:42:20;;8519:2:22;4661:42:20;;;8501:21:22;8558:2;8538:18;;;8531:30;8597:25;8577:18;;;8570:53;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;4661:15:20;;-1:-1:-1;8640:18:22;;4661:42:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4713:9;;;;;;;;;-1:-1:-1;;;;;4713:9:20;-1:-1:-1;;;;;4713:18:20;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4398:342::o;9563:142::-;9627:5;;9618:15;;-1:-1:-1;;;9618:15:20;;-1:-1:-1;;;;;9627:5:20;;;9618:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;9618:8:20;;169:18:22;;9618:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9643:28:20;;-1:-1:-1;;;9643:28:20;;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;9643:15:20;;-1:-1:-1;9643:28:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9681:9;;;;;;;;;-1:-1:-1;;;;;9681:9:20;-1:-1:-1;;;;;9681:15:20;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10925:236;10988:5;;10979:15;;-1:-1:-1;;;10979:15:20;;-1:-1:-1;;;;;10988:5:20;;;10979:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;10979:8:20;;169:18:22;;10979:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11004:9;;;;;;;;;-1:-1:-1;;;;;11004:9:20;-1:-1:-1;;;;;11004:15:20;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11041:5:20;;11032:15;;-1:-1:-1;;;11032:15:20;;-1:-1:-1;;;;;11041:5:20;;;11032:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;11032:8:20;;-1:-1:-1;169:18:22;;11032:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11057:38:20;;-1:-1:-1;;;11057:38:20;;11071:4;11057:38;;;9212:41:22;;;9269:18;;;9262:50;;;11083:5:20;9328:18:22;;;9321:50;9387:18;;;9380:50;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;11057:13:20;;-1:-1:-1;9184:19:22;;11057:38:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11119:5:20;;;11110:15;;-1:-1:-1;;;;;11119:5:20;;;196:51:22;;11110:15:20;;-1:-1:-1;169:18:22;;-1:-1:-1;11110:15:20;;;;;;;11135:9;;;;;;;;;-1:-1:-1;;;;;11135:9:20;-1:-1:-1;;;;;11135:17:20;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7754:98;7810:35;7822:9;;;;;;;;;-1:-1:-1;;;;;7822:9:20;-1:-1:-1;;;;;7822:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7810:11;:35::i;:::-;7754:98::o;8140:96::-;8195:34;8204:9;;;;;;;;;-1:-1:-1;;;;;8204:9:20;-1:-1:-1;;;;;8204:15:20;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8223:5;;-1:-1:-1;;;;;8223:5:20;8195:8;:34::i;2514:223::-;2577:5;;2568:15;;-1:-1:-1;;;2568:15:20;;-1:-1:-1;;;;;2577:5:20;;;2568:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;2568:8:20;;169:18:22;;2568:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2593:38:20;;-1:-1:-1;;;2593:38:20;;2607:4;2593:38;;;9212:41:22;;;9269:18;;;9262:50;;;2619:5:20;9328:18:22;;;9321:50;9387:18;;;9380:50;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;2593:13:20;;-1:-1:-1;9184:19:22;;2593:38:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2656:5:20;;2646:32;;818:7;8282:25:22;;-1:-1:-1;;;;;2656:5:20;;;;-1:-1:-1;2646:32:20;;-1:-1:-1;8270:2:22;8255:18;2646:32:20;;;;;;;2688:9;;;;;;;;;-1:-1:-1;;;;;2688:9:20;-1:-1:-1;;;;;2688:17:20;;818:7;2688:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2514:223::o;9345:212::-;9400:5;;9391:15;;-1:-1:-1;;;9391:15:20;;-1:-1:-1;;;;;9400:5:20;;;9391:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;9391:8:20;;169:18:22;;9391:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9416:38:20;;-1:-1:-1;;;9416:38:20;;9430:4;9416:38;;;9212:41:22;;;9269:18;;;9262:50;;;9442:5:20;9328:18:22;;;9321:50;9387:18;;;9380:50;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;9416:13:20;;-1:-1:-1;9184:19:22;;9416:38:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9476:5:20;;;9469:13;;-1:-1:-1;;;;;9476:5:20;;;196:51:22;;9469:13:20;;-1:-1:-1;169:18:22;;-1:-1:-1;9469:13:20;;;;;;;9492:9;;;;;;;;;-1:-1:-1;;;;;9492:9:20;-1:-1:-1;;;;;9492:15:20;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9520:30;9531:9;;;;;;;;;-1:-1:-1;;;;;9531:9:20;-1:-1:-1;;;;;9531:16:20;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9520:10;:30::i;10309:261::-;10398:5;;10389:15;;-1:-1:-1;;;10389:15:20;;-1:-1:-1;;;;;10398:5:20;;;10389:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;10389:8:20;;169:18:22;;10389:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10414:9;;;;;;;;;-1:-1:-1;;;;;10414:9:20;-1:-1:-1;;;;;10414:15:20;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10490:5:20;;10481:15;;-1:-1:-1;;;10481:15:20;;-1:-1:-1;;;;;10490:5:20;;;10481:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;10481:8:20;;-1:-1:-1;169:18:22;;10481:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10506:28:20;;-1:-1:-1;;;10506:28:20;;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;10506:15:20;;-1:-1:-1;10506:28:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10544:9;;;;;;;;;-1:-1:-1;;;;;10544:9:20;-1:-1:-1;;;;;10544:17:20;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2907:134:6;2954:33;3018:16;2999:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2999:35:6;;;;;;;;;;;;;;;;;;;;;;;2907:134;:::o;11295:556:20:-;11391:5;;11382:15;;-1:-1:-1;;;11382:15:20;;-1:-1:-1;;;;;11391:5:20;;;11382:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;11382:8:20;;169:18:22;;11382:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11407:9;;;;;;;;;-1:-1:-1;;;;;11407:9:20;-1:-1:-1;;;;;11407:17:20;;818:7;11407:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;11489:7:20;;772:6;11497:15;:29;;;;:::i;:::-;:33;;11529:1;11497:33;:::i;:::-;11489:42;;;;;;;;;;;;;8282:25:22;;8270:2;8255:18;;8136:177;11489:42:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11542:23;11568:9;;;;;;;;;-1:-1:-1;;;;;11568:9:20;-1:-1:-1;;;;;11568:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11623:5;;11647:15;;-1:-1:-1;;;11647:15:20;;-1:-1:-1;;;;;11623:5:20;;;11647:15;;;196:51:22;;;11542:48:20;;-1:-1:-1;11623:13:20;;;-1:-1:-1;;;;;;;;;;;336:42:0;11647:8:20;;169:18:22;;11647:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11672:9;;;;;;;;;-1:-1:-1;;;;;11672:9:20;-1:-1:-1;;;;;11672:18:20;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11744:35;11753:9;;;;;;;;;-1:-1:-1;;;;;11753:9:20;-1:-1:-1;;;;;11753:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11777:1;11744:8;:35::i;:::-;11798:5;;11789:55;;-1:-1:-1;;;;;11798:5:20;:13;11813:30;11828:15;11813:12;:30;:::i;:::-;11789:8;:55::i;7355:393::-;7454:5;;7445:15;;-1:-1:-1;;;7445:15:20;;-1:-1:-1;;;;;7454:5:20;;;7445:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;7445:8:20;;169:18:22;;7445:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7470:9;;;;;;;;;-1:-1:-1;;;;;7470:9:20;-1:-1:-1;;;;;7470:17:20;;818:7;7470:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;7569:7:20;;772:6;7577:15;:29;;;;:::i;:::-;:40;;7609:8;7577:40;:::i;:::-;7569:49;;;;;;;;;;;;;8282:25:22;;8270:2;8255:18;;8136:177;7569:49:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7638:5:20;;7629:15;;-1:-1:-1;;;7629:15:20;;-1:-1:-1;;;;;7638:5:20;;;7629:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;7629:8:20;;-1:-1:-1;169:18:22;;7629:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7654:9;;;;;;;;;-1:-1:-1;;;;;7654:9:20;-1:-1:-1;;;;;7654:18:20;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7706:35;7715:9;;;;;;;;;-1:-1:-1;;;;;7715:9:20;-1:-1:-1;;;;;7715:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21024:481;21133:5;;21124:15;;-1:-1:-1;;;21124:15:20;;-1:-1:-1;;;;;21133:5:20;;;21124:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;21124:8:20;;169:18:22;;21124:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21149:9;;;;;;;;;-1:-1:-1;;;;;21149:9:20;-1:-1:-1;;;;;21149:17:20;;818:7;21149:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21241:5:20;;21232:15;;-1:-1:-1;;;21232:15:20;;-1:-1:-1;;;;;21241:5:20;;;21232:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;21232:8:20;;-1:-1:-1;169:18:22;;;-1:-1:-1;21232:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21257:9;;;;;;;;;-1:-1:-1;;;;;21257:9:20;-1:-1:-1;;;;;21257:15:20;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;336:42:0;-1:-1:-1;21314:7:20;;-1:-1:-1;21322:29:20;;-1:-1:-1;772:6:20;21322:15;:29;:::i;:::-;:33;;21354:1;21322:33;:::i;:::-;21314:42;;;;;;;;;;;;;8282:25:22;;8270:2;8255:18;;8136:177;21314:42:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21415:5:20;;21406:15;;-1:-1:-1;;;21406:15:20;;-1:-1:-1;;;;;21415:5:20;;;21406:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;21406:8:20;;-1:-1:-1;169:18:22;;21406:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21431:37:20;;-1:-1:-1;;;21431:37:20;;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;21431:15:20;;-1:-1:-1;21431:37:20;;;;;:::i;9984:319::-;10064:5;;10055:15;;-1:-1:-1;;;10055:15:20;;-1:-1:-1;;;;;10064:5:20;;;10055:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;10055:8:20;;169:18:22;;10055:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10080:9;;;;;;;;;-1:-1:-1;;;;;10080:9:20;-1:-1:-1;;;;;10080:15:20;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10141:5:20;;10132:15;;-1:-1:-1;;;10132:15:20;;-1:-1:-1;;;;;10141:5:20;;;10132:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;10132:8:20;;-1:-1:-1;169:18:22;;10132:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10157:38:20;;-1:-1:-1;;;10157:38:20;;10171:4;10157:38;;;9212:41:22;;;9269:18;;;9262:50;;;10183:5:20;9328:18:22;;;9321:50;9387:18;;;9380:50;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;10157:13:20;;-1:-1:-1;9184:19:22;;10157:38:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10219:5:20;;;10210:15;;-1:-1:-1;;;;;10219:5:20;;;196:51:22;;10210:15:20;;-1:-1:-1;169:18:22;;-1:-1:-1;10210:15:20;;;;;;;10235:9;;;;;;;;;-1:-1:-1;;;;;10235:9:20;-1:-1:-1;;;;;10235:17:20;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10265:31;10277:9;;;;;;;;;-1:-1:-1;;;;;10277:9:20;-1:-1:-1;;;;;10277:16:20;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3823:151:6;3872:42;3948:19;3926:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3926:41:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3823:151;:::o;5147:267:20:-;-1:-1:-1;;;;;;;;;;;5239:7:20;5247:29;772:6;5247:15;:29;:::i;:::-;:33;;5279:1;5247:33;:::i;:::-;5239:42;;;;;;;;;;;;;8282:25:22;;8270:2;8255:18;;8136:177;5239:42:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5301:5:20;;5292:15;;-1:-1:-1;;;5292:15:20;;-1:-1:-1;;;;;5301:5:20;;;5292:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;5292:8:20;;-1:-1:-1;169:18:22;;5292:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;5317:15:20;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9711:267;9808:5;;9799:15;;-1:-1:-1;;;9799:15:20;;-1:-1:-1;;;;;9808:5:20;;;9799:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;9799:8:20;;169:18:22;;9799:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9824:9;;;;;;;;;-1:-1:-1;;;;;9824:9:20;-1:-1:-1;;;;;9824:15:20;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9891:5:20;;9882:15;;-1:-1:-1;;;9882:15:20;;-1:-1:-1;;;;;9891:5:20;;;9882:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;9882:8:20;;-1:-1:-1;169:18:22;;9882:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9907:37:20;;-1:-1:-1;;;9907:37:20;;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;9907:15:20;;-1:-1:-1;9907:37:20;;;;;:::i;2337:171::-;2405:5;;2396:15;;-1:-1:-1;;;2396:15:20;;-1:-1:-1;;;;;2405:5:20;;;2396:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;2396:8:20;;169:18:22;;2396:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2421:41:20;;-1:-1:-1;;;2421:41:20;;10950:2:22;2421:41:20;;;10932:21:22;10989:2;10969:18;;;10962:30;-1:-1:-1;;;11008:18:22;;;11001:52;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;2421:15:20;;-1:-1:-1;11070:18:22;;2421:41:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2472:9;;;;;;;;;-1:-1:-1;;;;;2472:9:20;-1:-1:-1;;;;;2472:17:20;;2497:1;2472:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2743:305;2845:5;;2836:15;;-1:-1:-1;;;2836:15:20;;-1:-1:-1;;;;;2845:5:20;;;2836:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;2836:8:20;;169:18:22;;2836:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2861:9;;;;;;;;;-1:-1:-1;;;;;2861:9:20;-1:-1:-1;;;;;2861:15:20;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2936:5:20;;2927:15;;-1:-1:-1;;;2927:15:20;;-1:-1:-1;;;;;2936:5:20;;;2927:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;2927:8:20;;-1:-1:-1;169:18:22;;2927:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2952:37:20;;-1:-1:-1;;;2952:37:20;;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;2952:15:20;;-1:-1:-1;2952:37:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2999:9;;;;;;;;;-1:-1:-1;;;;;2999:9:20;-1:-1:-1;;;;;2999:17:20;;818:7;2999:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5904:517;5999:5;;5990:15;;-1:-1:-1;;;5990:15:20;;-1:-1:-1;;;;;5999:5:20;;;5990:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;5990:8:20;;169:18:22;;5990:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6015:9;;;;;;;;;-1:-1:-1;;;;;6015:9:20;-1:-1:-1;;;;;6015:17:20;;818:7;6015:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;6097:7:20;;772:6;6105:15;:29;;;;:::i;:::-;:33;;6137:1;6105:33;:::i;:::-;6097:42;;;;;;;;;;;;;8282:25:22;;8270:2;8255:18;;8136:177;6097:42:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6159:5:20;;6150:15;;-1:-1:-1;;;6150:15:20;;-1:-1:-1;;;;;6159:5:20;;;6150:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;6150:8:20;;-1:-1:-1;169:18:22;;6150:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6175:16;6194:9;6175:28;;6213:9;;;;;;;;;-1:-1:-1;;;;;6213:9:20;-1:-1:-1;;;;;6213:18:20;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6243:15;6272:9;6261:20;;:8;:20;:::i;:::-;6243:38;;6292:42;;;;;;;;;;;;;;-1:-1:-1;;;6292:42:20;;;6326:7;6292:11;:42::i;8887:219::-;8952:5;;8943:15;;-1:-1:-1;;;8943:15:20;;-1:-1:-1;;;;;8952:5:20;;;8943:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;8943:8:20;;169:18:22;;8943:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8968:38:20;;-1:-1:-1;;;8968:38:20;;8982:4;8968:38;;;9212:41:22;;;9269:18;;;9262:50;;;8994:5:20;9328:18:22;;;9321:50;9387:18;;;9380:50;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;8968:13:20;;-1:-1:-1;9184:19:22;;8968:38:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9049:5:20;;9042;;9021:34;;-1:-1:-1;;;;;9049:5:20;;;;-1:-1:-1;9042:5:20;;;-1:-1:-1;9021:34:20;;9049:5;;9021:34;9065:9;;9093:5;;9065:34;;-1:-1:-1;;;9065:34:20;;-1:-1:-1;;;;;9093:5:20;;;9065:34;;;196:51:22;9065:9:20;;;;;;:27;;169:18:22;;9065:34:20;;;;;;;;;;;;;;;;;;;;3684:133:6;3730:33;3794:16;3775:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3775:35:6;;;;;;;;;;;;;;;;;;;;;;3684:133;:::o;3385:141::-;3433:35;3501:18;3480:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3480:39:6;;;;;;;;;;;;;;;;;;;;;;3385:141;:::o;19668:166:20:-;19739:5;;19730:15;;-1:-1:-1;;;19730:15:20;;-1:-1:-1;;;;;19739:5:20;;;19730:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;19730:8:20;;169:18:22;;19730:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19755:28:20;;-1:-1:-1;;;19755:28:20;;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;19755:15:20;;-1:-1:-1;19755:28:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19793:9:20;;19821:5;;19793:34;;-1:-1:-1;;;19793:34:20;;-1:-1:-1;;;;;19821:5:20;;;19793:34;;;196:51:22;19793:9:20;;;;;;-1:-1:-1;19793:27:20;;-1:-1:-1;169:18:22;;19793:34:20;14:239:22;8242:259:20;8302:5;;8293:15;;-1:-1:-1;;;8293:15:20;;-1:-1:-1;;;;;8302:5:20;;;8293:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;8293:8:20;;169:18:22;;8293:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8318:38:20;;-1:-1:-1;;;8318:38:20;;8332:4;8318:38;;;9212:41:22;;;9269:18;;;9262:50;;;8344:5:20;9328:18:22;;;9321:50;9387:18;;;9380:50;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;8318:13:20;;-1:-1:-1;9184:19:22;;8318:38:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8399:5:20;;8392;;8371:34;;-1:-1:-1;;;;;8399:5:20;;;;-1:-1:-1;8392:5:20;;;-1:-1:-1;8371:34:20;;8399:5;;8371:34;8415:9;;8443:5;;8415:34;;-1:-1:-1;;;8415:34:20;;-1:-1:-1;;;;;8443:5:20;;;8415:34;;;196:51:22;8415:9:20;;;;;;:27;;169:18:22;;8415:34:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8460;8469:9;;;;;;;;;-1:-1:-1;;;;;8469:9:20;-1:-1:-1;;;;;8469:15:20;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8488:5;;-1:-1:-1;;;;;8488:5:20;8460:8;:34::i;13485:1543::-;13586:35;13595:9;;;;;;;;;-1:-1:-1;;;;;13595:9:20;-1:-1:-1;;;;;13595:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13586:35;13631:34;13640:9;;;;;;;;;-1:-1:-1;;;;;13640:9:20;-1:-1:-1;;;;;13640:15:20;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13631:34;13675:35;13687:9;;;;;;;;;-1:-1:-1;;;;;13687:9:20;-1:-1:-1;;;;;13687:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13675:35;13720:31;13732:9;;;;;;;;;-1:-1:-1;;;;;13732:9:20;-1:-1:-1;;;;;13732:16:20;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13720:31;13813:5;;13804:15;;-1:-1:-1;;;13804:15:20;;-1:-1:-1;;;;;13813:5:20;;;13804:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;13804:8:20;;169:18:22;;13804:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13829:9;;;;;;;;;-1:-1:-1;;;;;13829:9:20;-1:-1:-1;;;;;13829:17:20;;13854:7;13829:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13884:5:20;;13875:15;;-1:-1:-1;;;13875:15:20;;-1:-1:-1;;;;;13884:5:20;;;13875:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;13875:8:20;;-1:-1:-1;169:18:22;;;-1:-1:-1;13875:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13900:9;;;;;;;;;-1:-1:-1;;;;;13900:9:20;-1:-1:-1;;;;;13900:17:20;;13925:7;13900:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13955:5:20;;13946:15;;-1:-1:-1;;;13946:15:20;;-1:-1:-1;;;;;13955:5:20;;;13946:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;13946:8:20;;-1:-1:-1;169:18:22;;;-1:-1:-1;13946:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13971:9;;;;;;;;;-1:-1:-1;;;;;13971:9:20;-1:-1:-1;;;;;13971:17:20;;13996:7;13971:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14017:41;14026:9;;;;;;;;;-1:-1:-1;;;;;14026:9:20;-1:-1:-1;;;;;14026:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14050:7;14017:8;:41::i;:::-;14122:5;;14113:15;;-1:-1:-1;;;14113:15:20;;-1:-1:-1;;;;;14122:5:20;;;14113:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;14113:8:20;;169:18:22;;14113:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14138:9;;;;;;;;;-1:-1:-1;;;;;14138:9:20;-1:-1:-1;;;;;14138:15:20;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14165:30;14176:9;;;;;;;;;-1:-1:-1;;;;;14176:9:20;-1:-1:-1;;;;;14176:16:20;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14165:30;14267:5;;14258:15;;-1:-1:-1;;;14258:15:20;;-1:-1:-1;;;;;14267:5:20;;;14258:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;14258:8:20;;169:18:22;;14258:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14283:37:20;;-1:-1:-1;;;14283:37:20;;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;14283:15:20;;-1:-1:-1;14283:37:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14330:9;;;;;;;;;-1:-1:-1;;;;;14330:9:20;-1:-1:-1;;;;;14330:17:20;;14355:7;14330:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14412:5:20;;14403:15;;-1:-1:-1;;;14403:15:20;;-1:-1:-1;;;;;14412:5:20;;;14403:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;14403:8:20;;-1:-1:-1;169:18:22;;;-1:-1:-1;14403:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14428:9;;;;;;;;;-1:-1:-1;;;;;14428:9:20;-1:-1:-1;;;;;14428:17:20;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14457:31;14469:9;;;;;;;;;-1:-1:-1;;;;;14469:9:20;-1:-1:-1;;;;;14469:16:20;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14457:31;14546:5;;14537:15;;-1:-1:-1;;;14537:15:20;;-1:-1:-1;;;;;14546:5:20;;;14537:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;14537:8:20;;169:18:22;;14537:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14562:9:20;;14590:5;;14562:34;;-1:-1:-1;;;14562:34:20;;-1:-1:-1;;;;;14590:5:20;;;14562:34;;;196:51:22;14562:9:20;;;;;;-1:-1:-1;14562:27:20;;-1:-1:-1;169:18:22;;14562:34:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14606;14615:9;;;;;;;;;-1:-1:-1;;;;;14615:9:20;-1:-1:-1;;;;;14615:15:20;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14606:34;-1:-1:-1;;;;;;;;;;;14688:7:20;14696:29;772:6;14696:15;:29;:::i;:::-;:33;;14728:1;14696:33;:::i;:::-;14688:42;;;;;;;;;;;;;8282:25:22;;8270:2;8255:18;;8136:177;14688:42:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14740:34;14751:9;;;;;;;;;-1:-1:-1;;;;;14751:9:20;-1:-1:-1;;;;;14751:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14740:34;14850:5;;14873:15;;-1:-1:-1;;;14873:15:20;;-1:-1:-1;;;;;14850:5:20;;;14873:15;;;196:51:22;;;14850:13:20;;-1:-1:-1;;;;;;;;;;;336:42:0;14873:8:20;;169:18:22;;14873:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14898:9;;;;;;;;;-1:-1:-1;;;;;14898:9:20;-1:-1:-1;;;;;14898:18:20;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14928:35;14937:9;;;;;;;;;-1:-1:-1;;;;;14937:9:20;-1:-1:-1;;;;;14937:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14928:35;14982:5;;14973:48;;-1:-1:-1;;;;;14982:5:20;:13;14997:23;:13;15013:7;14997:23;:::i;9250:89::-;9301:31;9313:9;;;;;;;;;-1:-1:-1;;;;;9313:9:20;-1:-1:-1;;;;;9313:16:20;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1804:527;1894:5;;1885:15;;-1:-1:-1;;;1885:15:20;;-1:-1:-1;;;;;1894:5:20;;;1885:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;1885:8:20;;169:18:22;;1885:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1910:9;;;;;;;;;-1:-1:-1;;;;;1910:9:20;-1:-1:-1;;;;;1910:17:20;;818:7;1910:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1999:5:20;;1990:15;;-1:-1:-1;;;1990:15:20;;-1:-1:-1;;;;;1999:5:20;;;1990:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;1990:8:20;;-1:-1:-1;169:18:22;;;-1:-1:-1;1990:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2015:9:20;;;;;-1:-1:-1;;;;;2015:9:20;;-1:-1:-1;2015:17:20;;-1:-1:-1;2040:18:20;818:7;2057:1;2040:18;:::i;:::-;2015:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2108:5:20;;2099:15;;-1:-1:-1;;;2099:15:20;;-1:-1:-1;;;;;2108:5:20;;;2099:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;2099:8:20;;-1:-1:-1;169:18:22;;;-1:-1:-1;2099:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2124:9:20;;;;;-1:-1:-1;;;;;2124:9:20;;-1:-1:-1;2124:17:20;;-1:-1:-1;2149:18:20;818:7;2166:1;2149:18;:::i;:::-;2124:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2181:22;818:7;2264:1;2247:18;;;;:::i;:::-;2224;818:7;2241:1;2224:18;:::i;:::-;2206:37;;818:7;2206:37;:::i;:::-;:60;;;;:::i;:::-;2181:85;;2276:48;2285:9;;;;;;;;;-1:-1:-1;;;;;2285:9:20;-1:-1:-1;;;;;2285:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3193:186:6;3249:56;3346:26;3317:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3317:55:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16195:99:20;16252:35;16261:9;;;;;;;;;-1:-1:-1;;;;;16261:9:20;-1:-1:-1;;;;;16261:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4000:392;4100:5;;4091:15;;-1:-1:-1;;;4091:15:20;;-1:-1:-1;;;;;4100:5:20;;;4091:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;4091:8:20;;169:18:22;;4091:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4116:9;;;;;;;;;-1:-1:-1;;;;;4116:9:20;-1:-1:-1;;;;;4116:17:20;;818:7;4116:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;4198:7:20;;772:6;4206:15;:29;;;;:::i;:::-;:33;;4238:1;4206:33;:::i;:::-;4198:42;;;;;;;;;;;;;8282:25:22;;8270:2;8255:18;;8136:177;4198:42:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4300:5:20;;4291:15;;-1:-1:-1;;;4291:15:20;;-1:-1:-1;;;;;4300:5:20;;;4291:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;4291:8:20;;-1:-1:-1;169:18:22;;4291:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4316:39:20;;-1:-1:-1;;;4316:39:20;;11473:2:22;4316:39:20;;;11455:21:22;11512:2;11492:18;;;11485:30;-1:-1:-1;;;11531:18:22;;;11524:50;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;4316:15:20;;-1:-1:-1;11591:18:22;;4316:39:20;11272:343:22;7858:148:20;-1:-1:-1;;;;;;;;;;;7913:7:20;7921:29;772:6;7921:15;:29;:::i;:::-;:33;;7953:1;7921:33;:::i;:::-;7913:42;;;;;;;;;;;;;8282:25:22;;8270:2;8255:18;;8136:177;7913:42:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7965:34;7976:9;;;;;;;;;-1:-1:-1;;;;;7976:9:20;-1:-1:-1;;;;;7976:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10742:177;10803:5;;10794:15;;-1:-1:-1;;;10794:15:20;;-1:-1:-1;;;;;10803:5:20;;;10794:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;10794:8:20;;169:18:22;;10794:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10819:38:20;;-1:-1:-1;;;10819:38:20;;10833:4;10819:38;;;9212:41:22;;;9269:18;;;9262:50;;;10845:5:20;9328:18:22;;;9321:50;9387:18;;;9380:50;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;10819:13:20;;-1:-1:-1;9184:19:22;;10819:38:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10879:5:20;;;10872:13;;-1:-1:-1;;;;;10879:5:20;;;196:51:22;;10872:13:20;;-1:-1:-1;169:18:22;;-1:-1:-1;10872:13:20;;;;;;;10895:9;;;;;;;;;-1:-1:-1;;;;;10895:9:20;-1:-1:-1;;;;;10895:15:20;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8507:197;8588:5;;8579:15;;-1:-1:-1;;;8579:15:20;;-1:-1:-1;;;;;8588:5:20;;;8579:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;8579:8:20;;169:18:22;;8579:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8604:44:20;;-1:-1:-1;;;8604:44:20;;11821:2:22;8604:44:20;;;11803:21:22;11860:2;11840:18;;;11833:30;11899:27;11879:18;;;11872:55;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;8604:15:20;;-1:-1:-1;11944:18:22;;8604:44:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8658:9:20;;:39;;-1:-1:-1;;;8658:39:20;;8694:1;8658:39;;;196:51:22;8658:9:20;;;;-1:-1:-1;;;;;8658:9:20;;-1:-1:-1;8658:27:20;;-1:-1:-1;169:18:22;;8658:39:20;14:239:22;3047:140:6;3095:34;3162:18;3141:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15034:1022:20;15148:5;;15139:15;;-1:-1:-1;;;15139:15:20;;-1:-1:-1;;;;;15148:5:20;;;15139:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;15139:8:20;;169:18:22;;15139:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15164:38:20;;-1:-1:-1;;;15164:38:20;;15178:4;15164:38;;;9212:41:22;;;9269:18;;;9262:50;;;15190:5:20;9328:18:22;;;9321:50;9387:18;;;9380:50;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;15164:13:20;;-1:-1:-1;9184:19:22;;15164:38:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15227:5:20;;15217:32;;818:7;8282:25:22;;-1:-1:-1;;;;;15227:5:20;;;;-1:-1:-1;15217:32:20;;-1:-1:-1;8270:2:22;8255:18;15217:32:20;;;;;;;15259:9;;;;;;;;;-1:-1:-1;;;;;15259:9:20;-1:-1:-1;;;;;15259:17:20;;818:7;15259:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15351:5:20;;15342:15;;-1:-1:-1;;;15342:15:20;;-1:-1:-1;;;;;15351:5:20;;;15342:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;15342:8:20;;-1:-1:-1;169:18:22;;;-1:-1:-1;15342:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15367:38:20;;-1:-1:-1;;;15367:38:20;;15381:4;15367:38;;;9212:41:22;;;9269:18;;;9262:50;;;15393:5:20;9328:18:22;;;9321:50;9387:18;;;9380:50;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;15367:13:20;;-1:-1:-1;9184:19:22;;15367:38:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15448:5:20;;15441;;15420:34;;-1:-1:-1;;;;;15448:5:20;;;;-1:-1:-1;15441:5:20;;;-1:-1:-1;15420:34:20;;15448:5;;15420:34;15464:9;;15492:5;;15464:34;;-1:-1:-1;;;15464:34:20;;-1:-1:-1;;;;;15492:5:20;;;15464:34;;;196:51:22;15464:9:20;;;;;;:27;;169:18:22;;15464:34:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15535:5:20;;15526:15;;-1:-1:-1;;;15526:15:20;;-1:-1:-1;;;;;15535:5:20;;;15526:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;15526:8:20;;-1:-1:-1;169:18:22;;15526:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15551:38:20;;-1:-1:-1;;;15551:38:20;;15565:4;15551:38;;;9212:41:22;;;9269:18;;;9262:50;;;15577:5:20;9328:18:22;;;9321:50;9387:18;;;9380:50;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;15551:13:20;;-1:-1:-1;9184:19:22;;15551:38:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15611:5:20;;15604:13;;-1:-1:-1;;;;;15611:5:20;;;196:51:22;;15604:13:20;;-1:-1:-1;184:2:22;169:18;;-1:-1:-1;15604:13:20;;;;;;;15627:9;;;;;;;;;-1:-1:-1;;;;;15627:9:20;-1:-1:-1;;;;;15627:15:20;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15683:5:20;;15674:15;;-1:-1:-1;;;15674:15:20;;-1:-1:-1;;;;;15683:5:20;;;15674:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;15674:8:20;;-1:-1:-1;169:18:22;;15674:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15699:38:20;;-1:-1:-1;;;15699:38:20;;15713:4;15699:38;;;9212:41:22;;;9269:18;;;9262:50;;;15725:5:20;9328:18:22;;;9321:50;9387:18;;;9380:50;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;15699:13:20;;-1:-1:-1;9184:19:22;;15699:38:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15761:5:20;;15752:15;;-1:-1:-1;;;;;15761:5:20;;;196:51:22;;15752:15:20;;-1:-1:-1;184:2:22;169:18;;-1:-1:-1;15752:15:20;;;;;;;15777:9;;;;;;;;;-1:-1:-1;;;;;15777:9:20;-1:-1:-1;;;;;15777:17:20;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;336:42:0;-1:-1:-1;15836:7:20;;-1:-1:-1;15844:29:20;;-1:-1:-1;772:6:20;15844:15;:29;:::i;:::-;:33;;15876:1;15844:33;:::i;:::-;15836:42;;;;;;;;;;;;;8282:25:22;;8270:2;8255:18;;8136:177;15836:42:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15918:5:20;;15909:15;;-1:-1:-1;;;15909:15:20;;-1:-1:-1;;;;;15918:5:20;;;15909:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;15909:8:20;;-1:-1:-1;169:18:22;;15909:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15934:38:20;;-1:-1:-1;;;15934:38:20;;15948:4;15934:38;;;9212:41:22;;;9269:18;;;9262:50;;;15960:5:20;9328:18:22;;;9321:50;9387:18;;;9380:50;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;15934:13:20;;-1:-1:-1;9184:19:22;;15934:38:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15997:5:20;;15987:32;;818:7;8282:25:22;;-1:-1:-1;;;;;15997:5:20;;;;-1:-1:-1;15987:32:20;;-1:-1:-1;8270:2:22;8255:18;15987:32:20;;;;;;;;16029:9;;;;;;;;;-1:-1:-1;;;;;16029:9:20;-1:-1:-1;;;;;16029:18:20;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3531:463;3622:5;;3613:15;;-1:-1:-1;;;3613:15:20;;-1:-1:-1;;;;;3622:5:20;;;3613:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;3613:8:20;;169:18:22;;3613:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3638:9;;;;;;;;;-1:-1:-1;;;;;3638:9:20;-1:-1:-1;;;;;3638:17:20;;818:7;3638:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;3730:7:20;;772:6;3738:15;:29;;;;:::i;:::-;:33;;3770:1;3738:33;:::i;:::-;3730:42;;;;;;;;;;;;;8282:25:22;;8270:2;8255:18;;8136:177;3730:42:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3807:5:20;;3831:15;;-1:-1:-1;;;3831:15:20;;-1:-1:-1;;;;;3807:5:20;;;3831:15;;;196:51:22;;;3807:13:20;;-1:-1:-1;;;;;;;;;;;;336:42:0;-1:-1:-1;3831:8:20;;169:18:22;;3831:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3856:9;;;;;;;;;-1:-1:-1;;;;;3856:9:20;-1:-1:-1;;;;;3856:18:20;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3887:35;3896:9;;;;;;;;;-1:-1:-1;;;;;3896:9:20;-1:-1:-1;;;;;3896:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3887:35;3941:5;;3932:55;;-1:-1:-1;;;;;3941:5:20;:13;3956:30;818:7;3956:13;:30;:::i;3532:146:6:-;3580:40;3653:18;3632:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3632:39:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3632:39:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16495:119:20;16541:66;16550:9;;;;;;;;;-1:-1:-1;;;;;16550:9:20;-1:-1:-1;;;;;16550:23:20;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16577:29;772:6;16577:15;:29;:::i;12771:578::-;12879:5;;12870:15;;-1:-1:-1;;;12870:15:20;;-1:-1:-1;;;;;12879:5:20;;;12870:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;12870:8:20;;169:18:22;;12870:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12895:9;;;;;;;;;-1:-1:-1;;;;;12895:9:20;-1:-1:-1;;;;;12895:17:20;;818:7;12895:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13028:9;;;;;;;;;-1:-1:-1;;;;;13028:9:20;13005:33;;;;;:::i;:::-;-1:-1:-1;;;;;214:32:22;;;196:51;;184:2;169:18;13005:33:20;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12984:18:20;:54;;-1:-1:-1;;;;;;12984:54:20;-1:-1:-1;;;;;12984:54:20;;;;;;;;;13048:45;;-1:-1:-1;;;13048:45:20;;-1:-1:-1;;;;;;;;;;;336:42:0;13048:7:20;;:45;;12984:54;13085:7;;13048:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;336:42:0;-1:-1:-1;13133:7:20;;-1:-1:-1;13141:29:20;;-1:-1:-1;772:6:20;13141:15;:29;:::i;:::-;:33;;13173:1;13141:33;:::i;:::-;13133:42;;;;;;;;;;;;;8282:25:22;;8270:2;8255:18;;8136:177;13133:42:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13236:18:20;;13219:37;;-1:-1:-1;;;13219:37:20;;-1:-1:-1;;;;;13236:18:20;;;13219:37;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;13219:8:20;;-1:-1:-1;169:18:22;;13219:37:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13266:39:20;;-1:-1:-1;;;13266:39:20;;11473:2:22;13266:39:20;;;11455:21:22;11512:2;11492:18;;;11485:30;-1:-1:-1;;;11531:18:22;;;11524:50;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;13266:15:20;;-1:-1:-1;11591:18:22;;13266:39:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13315:18;;;;;;;;;-1:-1:-1;;;;;13315:18:20;-1:-1:-1;;;;;13315:25:20;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4746:395;4843:5;;4834:15;;-1:-1:-1;;;4834:15:20;;-1:-1:-1;;;;;4843:5:20;;;4834:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;4834:8:20;;169:18:22;;4834:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4859:9;;;;;;;;;-1:-1:-1;;;;;4859:9:20;-1:-1:-1;;;;;4859:17:20;;818:7;4859:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;4941:7:20;;772:6;4949:15;:29;;;;:::i;:::-;:33;;4981:1;4949:33;:::i;:::-;4941:42;;;;;;;;;;;;;8282:25:22;;8270:2;8255:18;;8136:177;4941:42:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5003:5:20;;4994:15;;-1:-1:-1;;;4994:15:20;;-1:-1:-1;;;;;5003:5:20;;;4994:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;4994:8:20;;-1:-1:-1;169:18:22;;4994:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5019:38:20;;-1:-1:-1;;;5019:38:20;;5033:4;5019:38;;;9212:41:22;;;9269:18;;;9262:50;;;5045:5:20;9328:18:22;;;9321:50;9387:18;;;9380:50;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;5019:13:20;;-1:-1:-1;9184:19:22;;5019:38:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5082:5:20;;;5072:32;;818:7;8282:25:22;;-1:-1:-1;;;;;5082:5:20;;;;-1:-1:-1;5072:32:20;;-1:-1:-1;8255:18:22;5072:32:20;8136:177:22;16300:189:20;16365:5;;16356:15;;-1:-1:-1;;;16356:15:20;;-1:-1:-1;;;;;16365:5:20;;;16356:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;16356:8:20;;169:18:22;;16356:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16381:9;;;;;;;;;-1:-1:-1;;;;;16381:9:20;-1:-1:-1;;;;;16381:17:20;;818:7;16381:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16434:48;16443:9;;;;;;;;;-1:-1:-1;;;;;16443:9:20;-1:-1:-1;;;;;16443:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;818:7;16434:8;:48::i;1550:248::-;1607:5;;1598:15;;-1:-1:-1;;;1598:15:20;;-1:-1:-1;;;;;1607:5:20;;;1598:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;1598:8:20;;169:18:22;;1598:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1623:9;;;;;;;;;-1:-1:-1;;;;;1623:9:20;-1:-1:-1;;;;;1623:17:20;;818:7;1623:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1676:48;1685:9;;;;;;;;;-1:-1:-1;;;;;1685:9:20;-1:-1:-1;;;;;1685:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1676:48;1743:5;;1734:57;;-1:-1:-1;;;;;1743:5:20;:13;1758:32;818:7;726:9;1758:32;:::i;20541:163::-;20611:5;;20602:15;;-1:-1:-1;;;20602:15:20;;-1:-1:-1;;;;;20611:5:20;;;20602:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;20602:8:20;;169:18:22;;20602:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20627:41:20;;-1:-1:-1;;;20627:41:20;;12479:2:22;20627:41:20;;;12461:21:22;12518:2;12498:18;;;12491:30;-1:-1:-1;;;12537:18:22;;;12530:52;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;20627:15:20;;-1:-1:-1;12599:18:22;;20627:41:20;12278:345:22;2754:147:6;2803:40;2876:18;2855:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2855:39:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2855:39:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6972:377:20;7072:5;;7063:15;;-1:-1:-1;;;7063:15:20;;-1:-1:-1;;;;;7072:5:20;;;7063:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;7063:8:20;;169:18:22;;7063:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7088:9;;;;;;;;;-1:-1:-1;;;;;7088:9:20;-1:-1:-1;;;;;7088:17:20;;818:7;7088:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;7192:7:20;;7232:1;772:6;7200:15;:29;;;;:::i;:::-;:33;;;;:::i;:::-;7192:42;;;;;;;;;;;;;8282:25:22;;8270:2;8255:18;;8136:177;7192:42:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7254:5:20;;7245:15;;-1:-1:-1;;;7245:15:20;;-1:-1:-1;;;;;7254:5:20;;;7245:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;7245:8:20;;-1:-1:-1;169:18:22;;7245:15:20;14:239:22;2459:141:6;2508:34;2575:18;2554:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1306:195:1;1365:7;;1345:4;;1365:7;;1361:134;;;-1:-1:-1;1395:4:1;;1306:195::o;1361:134::-;1437:33;;-1:-1:-1;;;1437:33:1;;1482:1;;-1:-1:-1;;;;;;;;;;;1437:7:1;;;:33;;219:28;;-1:-1:-1;;;1255:17:1;1437:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:47;;1430:54;;1306:195;:::o;11857:370:20:-;11920:22;12002:9;11997:165;12021:2;12017:1;:6;11997:165;;;12053:5;;12044:15;;-1:-1:-1;;;12044:15:20;;-1:-1:-1;;;;;12053:5:20;;;12044:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;12044:8:20;;169:18:22;;12044:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12073:9;;;;;;;;;-1:-1:-1;;;;;12073:9:20;-1:-1:-1;;;;;12073:17:20;;12098:9;12073:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12142:9;12124:27;;;;;:::i;:::-;;-1:-1:-1;12025:3:20;;;;:::i;:::-;;;;11997:165;;;;12172:48;12181:9;;;;;;;;;-1:-1:-1;;;;;12181:9:20;-1:-1:-1;;;;;12181:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16958:1199;17216:31;;-1:-1:-1;;;17216:31:20;;17074:4;;17120;;17166;;-1:-1:-1;;;;;;;;;;;336:42:0;17216:7:20;;:31;;17074:4;;17238:8;;17216:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17257:31:20;;-1:-1:-1;;;17257:31:20;;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;17257:7:20;;-1:-1:-1;17257:31:20;;17265:12;;17279:8;;17257:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17298:31:20;;-1:-1:-1;;;17298:31:20;;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;17298:7:20;;-1:-1:-1;17298:31:20;;17306:12;;17320:8;;17298:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17380:40;17389:12;-1:-1:-1;;;;;17389:20:20;;17411:8;17380;:40::i;:::-;17430;17439:12;-1:-1:-1;;;;;17439:20:20;;17461:8;17430;:40::i;:::-;17480;17489:12;-1:-1:-1;;;;;17489:20:20;;17511:8;17480;:40::i;:::-;17562:22;;-1:-1:-1;;;17562:22:20;;-1:-1:-1;;;;;214:32:22;;17562:22:20;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;17562:8:20;;169:18:22;;17562:22:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17594:9;;;;;;;;;-1:-1:-1;;;;;17594:9:20;-1:-1:-1;;;;;17594:17:20;;17619:7;17594:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17640:22:20;;-1:-1:-1;;;17640:22:20;;-1:-1:-1;;;;;214:32:22;;17640:22:20;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;17640:8:20;;-1:-1:-1;169:18:22;;;-1:-1:-1;17640:22:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17672:9;;;;;;;;;-1:-1:-1;;;;;17672:9:20;-1:-1:-1;;;;;17672:17:20;;17697:7;17672:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17718:22:20;;-1:-1:-1;;;17718:22:20;;-1:-1:-1;;;;;214:32:22;;17718:22:20;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;17718:8:20;;-1:-1:-1;169:18:22;;;-1:-1:-1;17718:22:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17750:9;;;;;;;;;-1:-1:-1;;;;;17750:9:20;-1:-1:-1;;;;;17750:17:20;;17775:7;17750:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17828:41;17837:9;;;;;;;;;-1:-1:-1;;;;;17837:9:20;-1:-1:-1;;;;;17837:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17828:41;-1:-1:-1;;;;;;;;;;;17922:7:20;17930:29;772:6;17930:15;:29;:::i;:::-;:33;;17962:1;17930:33;:::i;:::-;17922:42;;;;;;;;;;;;;8282:25:22;;8270:2;8255:18;;8136:177;17922:42:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17984:5:20;;17975:15;;-1:-1:-1;;;17975:15:20;;-1:-1:-1;;;;;17984:5:20;;;17975:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;17975:8:20;;-1:-1:-1;169:18:22;;17975:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18000:9:20;;:41;;-1:-1:-1;;;18000:41:20;;-1:-1:-1;;;;;214:32:22;;;18000:41:20;;;196:51:22;18000:9:20;;;;;;;;-1:-1:-1;18000:27:20;;-1:-1:-1;169:18:22;;18000:41:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18052:22:20;;-1:-1:-1;;;18052:22:20;;-1:-1:-1;;;;;214:32:22;;18052:22:20;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;18052:8:20;;-1:-1:-1;169:18:22;;18052:22:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18084:9;;;;;;;;;-1:-1:-1;;;;;18084:9:20;-1:-1:-1;;;;;18084:18:20;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18115:35;18124:9;;;;;;;;;-1:-1:-1;;;;;18124:9:20;-1:-1:-1;;;;;18124:20:20;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18115:35;16997:1160;;;16958:1199::o;6567:399::-;6666:5;;6657:15;;-1:-1:-1;;;6657:15:20;;-1:-1:-1;;;;;6666:5:20;;;6657:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;6657:8:20;;169:18:22;;6657:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6682:9;;;;;;;;;-1:-1:-1;;;;;6682:9:20;-1:-1:-1;;;;;6682:17:20;;818:7;6682:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;6780:7:20;;772:6;6788:15;:29;;;;:::i;2606:142:6:-;2655:35;2723:18;2702:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2702:39:6;;;;;;;;;;;;;;;;;;;;;;2606:142;:::o;16620:196:20:-;16754:55;16793:15;16765:9;;;;;;;;;-1:-1:-1;;;;;16765:9:20;-1:-1:-1;;;;;16765:23:20;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;16754:10;:55::i;20261:274::-;20361:5;;20352:15;;-1:-1:-1;;;20352:15:20;;-1:-1:-1;;;;;20361:5:20;;;20352:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;20352:8:20;;169:18:22;;20352:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20377:9;;;;;;;;;-1:-1:-1;;;;;20377:9:20;-1:-1:-1;;;;;20377:15:20;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20444:5:20;;20435:15;;-1:-1:-1;;;20435:15:20;;-1:-1:-1;;;;;20444:5:20;;;20435:15;;;196:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;20435:8:20;;-1:-1:-1;169:18:22;;20435:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20460:41:20;;-1:-1:-1;;;20460:41:20;;12479:2:22;20460:41:20;;;12461:21:22;12518:2;12498:18;;;12491:30;-1:-1:-1;;;12537:18:22;;;12530:52;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;20460:15:20;;-1:-1:-1;12599:18:22;;20460:41:20;12278:345:22;2664:153:1;2755:5;2747:4;:13;2743:68;;2776:24;;-1:-1:-1;;;2776:24:1;;;;;13716:25:22;;;13757:18;;;13750:34;;;-1:-1:-1;;;;;;;;;;;2776:11:1;;;13689:18:22;;2776:24:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2664:153;;:::o;7139:145:15:-;7206:71;7269:2;7273;7222:54;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;7222:54:15;;;;;;;;;;;;;;-1:-1:-1;;;;;7222:54:15;-1:-1:-1;;;7222:54:15;;;7206:15;:71::i;13280:153:1:-;13371:5;13363:4;:13;13359:68;;13392:24;;-1:-1:-1;;;13392:24:1;;;;;13716:25:22;;;13757:18;;;13750:34;;;-1:-1:-1;;;;;;;;;;;13392:11:1;;;13689:18:22;;13392:24:1;13542:248:22;2048:125:1;2116:4;2112:55;;;2136:20;;-1:-1:-1;;;2136:20:1;;7038:14:22;;7031:22;2136:20:1;;;7013:41:22;-1:-1:-1;;;;;;;;;;;2136:14:1;;;6986:18:22;;2136:20:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4020:153;4111:5;-1:-1:-1;;;;;4103:13:1;:4;-1:-1:-1;;;;;4103:13:1;;4099:68;;4132:24;;-1:-1:-1;;;4132:24:1;;-1:-1:-1;;;;;14321:15:22;;;4132:24:1;;;14303:34:22;14373:15;;14353:18;;;14346:43;-1:-1:-1;;;;;;;;;;;4132:11:1;;;14238:18:22;;4132:24:1;14091:304:22;1764:124:1;1832:4;1827:55;;1852:19;;-1:-1:-1;;;1852:19:1;;7038:14:22;;7031:22;1852:19:1;;;7013:41:22;-1:-1:-1;;;;;;;;;;;1852:13:1;;;6986:18:22;;1852:19:1;6873:187:22;851:129:15;922:51;965:7;265:22;131:42;265:40;;594:1;571;541:7;535:14;510:2;501:7;497:16;461:14;434:5;402:211;381:246;367:270;180:463;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;258:658:22:-;429:2;481:21;;;551:13;;454:18;;;573:22;;;400:4;;429:2;652:15;;;;626:2;611:18;;;400:4;695:195;709:6;706:1;703:13;695:195;;;774:13;;-1:-1:-1;;;;;770:39:22;758:52;;865:15;;;;830:12;;;;806:1;724:9;695:195;;;-1:-1:-1;907:3:22;;258:658;-1:-1:-1;;;;;;258:658:22:o;921:423::-;963:3;1001:5;995:12;1028:6;1023:3;1016:19;1053:1;1063:162;1077:6;1074:1;1071:13;1063:162;;;1139:4;1195:13;;;1191:22;;1185:29;1167:11;;;1163:20;;1156:59;1092:12;1063:162;;;1067:3;1270:1;1263:4;1254:6;1249:3;1245:16;1241:27;1234:38;1333:4;1326:2;1322:7;1317:2;1309:6;1305:15;1301:29;1296:3;1292:39;1288:50;1281:57;;;921:423;;;;:::o;1349:1742::-;1582:2;1634:21;;;1704:13;;1607:18;;;1726:22;;;1553:4;;1582:2;1767;;1785:18;;;;1822:1;1865:15;;;1850:31;;1846:40;;1909:15;;;1553:4;;1973:1089;1989:6;1984:3;1981:15;1973:1089;;;-1:-1:-1;;2058:22:22;;;2054:36;2042:49;;2114:13;;2201:9;;-1:-1:-1;;;;;2197:35:22;2182:51;;2272:11;;2266:18;2304:15;;;2297:27;;;2385:19;;2154:15;;;2417:24;;;2598:21;;;;2464:2;2546:17;;;2534:30;;2530:39;;;2488:15;;;;2643:1;2657:296;2673:8;2668:3;2665:17;2657:296;;;2779:2;2775:7;2766:6;2758;2754:19;2750:33;2743:5;2736:48;2811:42;2846:6;2835:8;2829:15;2811:42;:::i;:::-;2882:17;;;;2801:52;-1:-1:-1;2925:14:22;;;;2701:1;2692:11;2657:296;;;-1:-1:-1;;;3040:12:22;;;;2976:6;-1:-1:-1;;3005:15:22;;;;2015:1;2006:11;1973:1089;;;-1:-1:-1;3079:6:22;;1349:1742;-1:-1:-1;;;;;;;;;;1349:1742:22:o;3096:461::-;3148:3;3186:5;3180:12;3213:6;3208:3;3201:19;3239:4;3268:2;3263:3;3259:12;3252:19;;3305:2;3298:5;3294:14;3326:1;3336:196;3350:6;3347:1;3344:13;3336:196;;;3415:13;;-1:-1:-1;;;;;;3411:40:22;3399:53;;3472:12;;;;3507:15;;;;3372:1;3365:9;3336:196;;;-1:-1:-1;3548:3:22;;3096:461;-1:-1:-1;;;;;3096:461:22:o;3562:1185::-;3780:4;3809:2;3849;3838:9;3834:18;3879:2;3868:9;3861:21;3902:6;3937;3931:13;3968:6;3960;3953:22;3994:2;3984:12;;4027:2;4016:9;4012:18;4005:25;;4089:2;4079:6;4076:1;4072:14;4061:9;4057:30;4053:39;4127:2;4119:6;4115:15;4148:1;4158:560;4172:6;4169:1;4166:13;4158:560;;;4237:22;;;-1:-1:-1;;4233:36:22;4221:49;;4293:13;;4339:9;;4361:18;;;4406:48;4438:15;;;4339:9;4406:48;:::i;:::-;4495:11;;;4489:18;4544:19;;;4527:15;;;4520:44;4489:18;4392:62;-1:-1:-1;4587:51:22;4392:62;4489:18;4587:51;:::i;:::-;4696:12;;;;4577:61;-1:-1:-1;;;4661:15:22;;;;4194:1;4187:9;4158:560;;;-1:-1:-1;4735:6:22;;3562:1185;-1:-1:-1;;;;;;;;3562:1185:22:o;4752:803::-;4914:4;4943:2;4983;4972:9;4968:18;5013:2;5002:9;4995:21;5036:6;5071;5065:13;5102:6;5094;5087:22;5140:2;5129:9;5125:18;5118:25;;5202:2;5192:6;5189:1;5185:14;5174:9;5170:30;5166:39;5152:53;;5240:2;5232:6;5228:15;5261:1;5271:255;5285:6;5282:1;5279:13;5271:255;;;5378:2;5374:7;5362:9;5354:6;5350:22;5346:36;5341:3;5334:49;5406:40;5439:6;5430;5424:13;5406:40;:::i;:::-;5396:50;-1:-1:-1;5504:12:22;;;;5469:15;;;;5307:1;5300:9;5271:255;;;-1:-1:-1;5543:6:22;;4752:803;-1:-1:-1;;;;;;;4752:803:22:o;5560:1073::-;5762:4;5791:2;5831;5820:9;5816:18;5861:2;5850:9;5843:21;5884:6;5919;5913:13;5950:6;5942;5935:22;5976:2;5966:12;;6009:2;5998:9;5994:18;5987:25;;6071:2;6061:6;6058:1;6054:14;6043:9;6039:30;6035:39;6109:2;6101:6;6097:15;6130:1;6140:464;6154:6;6151:1;6148:13;6140:464;;;6219:22;;;-1:-1:-1;;6215:36:22;6203:49;;6275:13;;6320:9;;-1:-1:-1;;;;;6316:35:22;6301:51;;6391:11;;6385:18;6423:15;;;6416:27;;;6466:58;6508:15;;;6385:18;6466:58;:::i;:::-;6582:12;;;;6456:68;-1:-1:-1;;6547:15:22;;;;6176:1;6169:9;6140:464;;7065:274;-1:-1:-1;;;;;7257:32:22;;;;7239:51;;7321:2;7306:18;;7299:34;7227:2;7212:18;;7065:274::o;7552:184::-;7622:6;7675:2;7663:9;7654:7;7650:23;7646:32;7643:52;;;7691:1;7688;7681:12;7643:52;-1:-1:-1;7714:16:22;;7552:184;-1:-1:-1;7552:184:22:o;7741:127::-;7802:10;7797:3;7793:20;7790:1;7783:31;7833:4;7830:1;7823:15;7857:4;7854:1;7847:15;7873:128;7940:9;;;7961:11;;;7958:37;;;7975:18;;:::i;:::-;7873:128;;;;:::o;8006:125::-;8071:9;;;8092:10;;;8089:36;;;8105:18;;:::i;8669:331::-;8870:2;8852:21;;;8909:1;8889:18;;;8882:29;-1:-1:-1;;;8942:2:22;8927:18;;8920:39;8991:2;8976:18;;8669:331::o;9441:277::-;9508:6;9561:2;9549:9;9540:7;9536:23;9532:32;9529:52;;;9577:1;9574;9567:12;9529:52;9609:9;9603:16;9662:5;9655:13;9648:21;9641:5;9638:32;9628:60;;9684:1;9681;9674:12;9628:60;9707:5;9441:277;-1:-1:-1;;;9441:277:22:o;9723:290::-;9793:6;9846:2;9834:9;9825:7;9821:23;9817:32;9814:52;;;9862:1;9859;9852:12;9814:52;9888:16;;-1:-1:-1;;;;;9933:31:22;;9923:42;;9913:70;;9979:1;9976;9969:12;10018:341;10219:2;10201:21;;;10258:2;10238:18;;;10231:30;-1:-1:-1;;;10292:2:22;10277:18;;10270:48;10350:2;10335:18;;10018:341::o;10364:380::-;10443:1;10439:12;;;;10486;;;10507:61;;10561:4;10553:6;10549:17;10539:27;;10507:61;10614:2;10606:6;10603:14;10583:18;10580:38;10577:161;;10660:10;10655:3;10651:20;10648:1;10641:31;10695:4;10692:1;10685:15;10723:4;10720:1;10713:15;10577:161;;10364:380;;;:::o;11099:168::-;11172:9;;;11203;;11220:15;;;11214:22;;11200:37;11190:71;;11241:18;;:::i;13096:135::-;13135:3;13156:17;;;13153:43;;13176:18;;:::i;:::-;-1:-1:-1;13223:1:22;13212:13;;13096:135::o;13795:291::-;13972:2;13961:9;13954:21;13935:4;13992:45;14033:2;14022:9;14018:18;14010:6;13992:45;:::i;:::-;13984:53;;14073:6;14068:2;14057:9;14053:18;14046:34;13795:291;;;;;:::o","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSelectors()":"b0464fdc","excludeSenders()":"1ed7831c","failed()":"ba414fa6","piggyBank()":"b7d5d4c0","reentrancyAttacker()":"0577a356","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testDeposit_EventEmission()":"1a47df23","testDeposit_GasSnapshot()":"0487fe57","testDeposit_MultipleUsers()":"58a07d23","testDeposit_PausedContract_Reverts()":"31e80b58","testDeposit_Success()":"9fc77f1d","testDeposit_Validation_MaxUint256()":"ebba3137","testDeposit_Validation_PausedContract()":"8c905b8c","testDeposit_Validation_ZeroAmount()":"65dc9f36","testDeposit_ZeroAmount_Reverts()":"30f9c006","testEdgeCase_MaxUint256Deposit()":"00ce984f","testEdgeCase_MultipleSmallDeposits()":"c8b96d44","testEdgeCase_OverWithdraw()":"259cb21e","testGetBalance_EmptyContract()":"72d9e978","testGetBalance_WithDeposits()":"9e448c67","testGetUnlockTime()":"91de35c7","testGetUnlockTime_AfterDeployment()":"f0dde3ec","testIntegration_EventSequence()":"85706671","testIntegration_FullDepositWithdrawFlow()":"556ea933","testIsUnlocked_AfterUnlock()":"7e6bc79b","testIsUnlocked_BeforeUnlock()":"17f9fd78","testMultiUserFixture()":"ca05fdd7","testOwnership_EventEmission()":"3517377d","testOwnership_InitialOwner()":"19af867e","testOwnership_NonOwnerTransfer_Reverts()":"6fc908c5","testOwnership_Transfer()":"5104ebf4","testOwnership_TransferToZeroAddress_Reverts()":"847b9869","testOwnership_Validation_NonOwner()":"4a2122dd","testOwnership_Validation_ZeroAddress()":"8e0527c4","testPause_AlreadyPaused_Reverts()":"2e350219","testPause_EventEmission()":"84108d92","testPause_InitialState()":"57cd4873","testPause_NonOwner_Reverts()":"13a710d3","testPause_Success()":"1d4349ae","testPause_Validation_AlreadyPaused()":"f19df076","testPause_Validation_NonOwner()":"c67a4d1a","testReentrancy_ExternalCallProtection()":"9872fe29","testTimeLock_ExactUnlockTime()":"dc5984c2","testTimeLock_JustBeforeUnlock()":"b3c3225a","testTimeLock_LongAfterUnlock()":"2799b795","testUnpause_EventEmission()":"15cdd99d","testUnpause_NonOwner_Reverts()":"1dabed05","testUnpause_NotPaused_Reverts()":"b878e85f","testUnpause_Success()":"2a5a1be7","testUnpause_Validation_NonOwner()":"f09778ee","testUnpause_Validation_NotPaused()":"b0269b77","testWithdraw_BeforeUnlock_Reverts()":"11af395a","testWithdraw_EmptyContract_Reverts()":"2b789425","testWithdraw_EventEmission()":"99c27583","testWithdraw_GasSnapshot()":"33bb13cd","testWithdraw_NotOwner_Reverts()":"7787b455","testWithdraw_PausedContract_Reverts()":"e90b559c","testWithdraw_Success()":"864fd756","testWithdraw_Validation_OnlyOwner()":"f3ce07af","testWithdraw_Validation_PausedContract()":"2a385c4a","testWithdraw_Validation_TimeLock()":"67136dec"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"piggyBank\",\"outputs\":[{\"internalType\":\"contract PiggyBank\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reentrancyAttacker\",\"outputs\":[{\"internalType\":\"contract ReentrancyAttacker\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"artifact\",\"type\":\"string\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzArtifactSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testDeposit_EventEmission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testDeposit_GasSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testDeposit_MultipleUsers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testDeposit_PausedContract_Reverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testDeposit_Success\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testDeposit_Validation_MaxUint256\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testDeposit_Validation_PausedContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testDeposit_Validation_ZeroAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testDeposit_ZeroAmount_Reverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testEdgeCase_MaxUint256Deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testEdgeCase_MultipleSmallDeposits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testEdgeCase_OverWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGetBalance_EmptyContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGetBalance_WithDeposits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGetUnlockTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGetUnlockTime_AfterDeployment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testIntegration_EventSequence\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testIntegration_FullDepositWithdrawFlow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testIsUnlocked_AfterUnlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testIsUnlocked_BeforeUnlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testMultiUserFixture\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testOwnership_EventEmission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testOwnership_InitialOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testOwnership_NonOwnerTransfer_Reverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testOwnership_Transfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testOwnership_TransferToZeroAddress_Reverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testOwnership_Validation_NonOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testOwnership_Validation_ZeroAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testPause_AlreadyPaused_Reverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testPause_EventEmission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testPause_InitialState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testPause_NonOwner_Reverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testPause_Success\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testPause_Validation_AlreadyPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testPause_Validation_NonOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testReentrancy_ExternalCallProtection\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testTimeLock_ExactUnlockTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testTimeLock_JustBeforeUnlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testTimeLock_LongAfterUnlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testUnpause_EventEmission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testUnpause_NonOwner_Reverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testUnpause_NotPaused_Reverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testUnpause_Success\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testUnpause_Validation_NonOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testUnpause_Validation_NotPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testWithdraw_BeforeUnlock_Reverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testWithdraw_EmptyContract_Reverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testWithdraw_EventEmission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testWithdraw_GasSnapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testWithdraw_NotOwner_Reverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testWithdraw_PausedContract_Reverts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testWithdraw_Success\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testWithdraw_Validation_OnlyOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testWithdraw_Validation_PausedContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testWithdraw_Validation_TimeLock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/PiggyBank.t.sol\":\"PiggyBankTest\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4b2a5a85e045dcf6a082700c7252e43854c2eed88f860aaa18ec1e85218ae2bf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://98d060ed5be569a92d908fc358149039dc8f833d61973aa1b9d1d8235676bf6d\",\"dweb:/ipfs/QmaWQpn5dJmbMS5skwmPPMeUWZG35BLkignPpcA3zyagEs\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xd8eec16034b53b52c90a3d720e121ce7d30d64cc57d854db7d817d5b382dda43\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://612780755e32668c7e3b747d94d16c7291101144e084dd9ee563f071711e99e3\",\"dweb:/ipfs/QmQgtFJXEmDtSHT7tZQTMbb6PCDpq5UDYFvrBnWk1Xo2SY\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xae394f477769a38276d98d4854bc865fc8d281edbd4e72167507adb8236812aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34a0e609a4ec617b5c349f5e89a3352810cc5e4d3adaf939b32a27e4a5e46de2\",\"dweb:/ipfs/QmPfjimWAGGb6rzDjNMtLeZ93JJbCJJMov5gaNKyTy1doe\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x0fa6ec03602648b62cce41aab2096e6b7e052f2846075d967b6958dd586db746\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cd84e2ca9c1eaed6b76768cc12bb8c1af8289170ea8b7706f58d516460d79c41\",\"dweb:/ipfs/QmQ7BK7co6DE4eWUqMyv11s5eHYkS1tyx8tDSZGZVtf2aK\"]},\"lib/forge-std/src/StdConstants.sol\":{\"keccak256\":\"0x319ccdabfa2c0b2428301445873270ffea20f0e039d4fd5e6eeba65158e4e534\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b633f9d3a719e1d035ce7daa6cc051ddf89a72d34200d14cec37728e245cdabc\",\"dweb:/ipfs/QmRP7HQJpHMx1CsFrY8tXVVx1DQmi2dcb2BoGfiWaA923r\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x4dab3021edfa9511bbdd80c48f060ef62eaf457f99eaf841f561fc2557d9a08d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07668628673174cf8f27f8f4e1f862bab775013ec247eb34f698c5005f229391\",\"dweb:/ipfs/QmPJsiiYwmCZXMsHmQv5tg8VF3CAhNdat7WnKLTWZZH2v5\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xbc0132abe1c2accc2867c0f03667afffdf92f3e95a581bb03c9557eaa38ea500\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb6fab37dc73c219cfbb7b4f4998bcf7677ca5397a867e850f40232192073974\",\"dweb:/ipfs/QmUHsbVdp9SKmgek7ZfPcLTKrpZFXpqaqt4sVejzxGEQL3\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x04102de0a79398e4bdea57b7a4818655b4cc66d6f81d1cff08bf428cd0b384cd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53edc6c8f7f67cafc0129f039637c77d979880f7f1947defea31e8f0c05095bc\",\"dweb:/ipfs/QmUKXJd1vFCkxxrkXNLURdXrx2apoyWQFrFb5UqNkjdHVi\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdToml.sol\":{\"keccak256\":\"0x58a72c765ed3f7ff6b105509689658795b8a3739b8931772a497155878381861\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4a3746f4fabaeb980bd77d9e091d3904ee38a6c0e191bfa8ba6874c6f8558a3\",\"dweb:/ipfs/QmUfFDMEn461FgGEXt5HicyGD54sc28sLaQ9JRWDMBKed8\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0xb2469a902a326074034c4f7081d868113db0edbb7cf48b86528af2d6b07295f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1430a81c4978be875e2a3b31a8bfa4e1438fecd327f23771b690d64db63c020a\",\"dweb:/ipfs/QmW6aB2u1LNaRgGQFwjV7L7UbxsRg63iJ7AuujPouEa4cT\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x3dda6083a83dfa3e8526e97bcc28e862ee2442dd58fe94d5c426d65b8e38f73c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33f8c02e4dabdab86a6825125856446a8657eacd712318b51b7818e4a6f6e3f4\",\"dweb:/ipfs/QmRKSjVnrk54yr8wTK2e6QxRjiuba2H8HJSKunHAkdo7RG\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x6f235e293b4406784ff3bd89b2e4d51d0922918cf6825e7a7a09413606932e39\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://afc4fceb24a18596a239e82eb354c41d9a4e28d3fc56fcce04146af2c692b1b9\",\"dweb:/ipfs/QmQCHSAb5k9KQW9kEzeoPdirSknkWso4q4t5CSVFLNnMLB\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57\",\"dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d\",\"dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab\",\"dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3\"]},\"src/PiggyBank.sol\":{\"keccak256\":\"0x7f872fc53bc934074bfffccf4204f76f66a8a51fc252e8a2e7ce97f806690ea1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fd6a936a003deea234e6d45971529963c847614be170b5387d22c6c52d54314\",\"dweb:/ipfs/QmQsDEV4j18P4RQt5onsGdG3fAAqi9gm29CEgJnowvab8r\"]},\"test/PiggyBank.t.sol\":{\"keccak256\":\"0x3363cce77343f03cc857868817bfb2ca642edf5401de7ddb3df4cc0a701c230f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5803ec6cf3a359dfedc5cf72e0e1cac62aa9dfbef975921c13f3c4a07b02759\",\"dweb:/ipfs/Qmf8K8aJGVSBVvirvmAwMSr9Ujv3Fqv5gf2ypWjnkurcsr\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"depositor","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Deposited","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[{"internalType":"address","name":"withdrawer","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Withdrawn","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"excludedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"piggyBank","outputs":[{"internalType":"contract PiggyBank","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"reentrancyAttacker","outputs":[{"internalType":"contract ReentrancyAttacker","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzArtifactSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"string","name":"artifact","type":"string"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testDeposit_EventEmission"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testDeposit_GasSnapshot"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testDeposit_MultipleUsers"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testDeposit_PausedContract_Reverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testDeposit_Success"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testDeposit_Validation_MaxUint256"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testDeposit_Validation_PausedContract"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testDeposit_Validation_ZeroAmount"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testDeposit_ZeroAmount_Reverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testEdgeCase_MaxUint256Deposit"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testEdgeCase_MultipleSmallDeposits"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testEdgeCase_OverWithdraw"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testGetBalance_EmptyContract"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testGetBalance_WithDeposits"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testGetUnlockTime"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testGetUnlockTime_AfterDeployment"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testIntegration_EventSequence"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testIntegration_FullDepositWithdrawFlow"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testIsUnlocked_AfterUnlock"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testIsUnlocked_BeforeUnlock"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testMultiUserFixture"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testOwnership_EventEmission"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testOwnership_InitialOwner"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testOwnership_NonOwnerTransfer_Reverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testOwnership_Transfer"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testOwnership_TransferToZeroAddress_Reverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testOwnership_Validation_NonOwner"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testOwnership_Validation_ZeroAddress"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testPause_AlreadyPaused_Reverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testPause_EventEmission"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testPause_InitialState"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testPause_NonOwner_Reverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testPause_Success"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testPause_Validation_AlreadyPaused"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testPause_Validation_NonOwner"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testReentrancy_ExternalCallProtection"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testTimeLock_ExactUnlockTime"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testTimeLock_JustBeforeUnlock"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testTimeLock_LongAfterUnlock"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testUnpause_EventEmission"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testUnpause_NonOwner_Reverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testUnpause_NotPaused_Reverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testUnpause_Success"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testUnpause_Validation_NonOwner"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testUnpause_Validation_NotPaused"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testWithdraw_BeforeUnlock_Reverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testWithdraw_EmptyContract_Reverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testWithdraw_EventEmission"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testWithdraw_GasSnapshot"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testWithdraw_NotOwner_Reverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testWithdraw_PausedContract_Reverts"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testWithdraw_Success"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testWithdraw_Validation_OnlyOwner"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testWithdraw_Validation_PausedContract"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testWithdraw_Validation_TimeLock"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/PiggyBank.t.sol":"PiggyBankTest"},"evmVersion":"shanghai","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4b2a5a85e045dcf6a082700c7252e43854c2eed88f860aaa18ec1e85218ae2bf","urls":["bzz-raw://98d060ed5be569a92d908fc358149039dc8f833d61973aa1b9d1d8235676bf6d","dweb:/ipfs/QmaWQpn5dJmbMS5skwmPPMeUWZG35BLkignPpcA3zyagEs"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xd8eec16034b53b52c90a3d720e121ce7d30d64cc57d854db7d817d5b382dda43","urls":["bzz-raw://612780755e32668c7e3b747d94d16c7291101144e084dd9ee563f071711e99e3","dweb:/ipfs/QmQgtFJXEmDtSHT7tZQTMbb6PCDpq5UDYFvrBnWk1Xo2SY"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xae394f477769a38276d98d4854bc865fc8d281edbd4e72167507adb8236812aa","urls":["bzz-raw://34a0e609a4ec617b5c349f5e89a3352810cc5e4d3adaf939b32a27e4a5e46de2","dweb:/ipfs/QmPfjimWAGGb6rzDjNMtLeZ93JJbCJJMov5gaNKyTy1doe"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0x0fa6ec03602648b62cce41aab2096e6b7e052f2846075d967b6958dd586db746","urls":["bzz-raw://cd84e2ca9c1eaed6b76768cc12bb8c1af8289170ea8b7706f58d516460d79c41","dweb:/ipfs/QmQ7BK7co6DE4eWUqMyv11s5eHYkS1tyx8tDSZGZVtf2aK"],"license":"MIT"},"lib/forge-std/src/StdConstants.sol":{"keccak256":"0x319ccdabfa2c0b2428301445873270ffea20f0e039d4fd5e6eeba65158e4e534","urls":["bzz-raw://b633f9d3a719e1d035ce7daa6cc051ddf89a72d34200d14cec37728e245cdabc","dweb:/ipfs/QmRP7HQJpHMx1CsFrY8tXVVx1DQmi2dcb2BoGfiWaA923r"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x4dab3021edfa9511bbdd80c48f060ef62eaf457f99eaf841f561fc2557d9a08d","urls":["bzz-raw://07668628673174cf8f27f8f4e1f862bab775013ec247eb34f698c5005f229391","dweb:/ipfs/QmPJsiiYwmCZXMsHmQv5tg8VF3CAhNdat7WnKLTWZZH2v5"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0xbc0132abe1c2accc2867c0f03667afffdf92f3e95a581bb03c9557eaa38ea500","urls":["bzz-raw://eb6fab37dc73c219cfbb7b4f4998bcf7677ca5397a867e850f40232192073974","dweb:/ipfs/QmUHsbVdp9SKmgek7ZfPcLTKrpZFXpqaqt4sVejzxGEQL3"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x04102de0a79398e4bdea57b7a4818655b4cc66d6f81d1cff08bf428cd0b384cd","urls":["bzz-raw://53edc6c8f7f67cafc0129f039637c77d979880f7f1947defea31e8f0c05095bc","dweb:/ipfs/QmUKXJd1vFCkxxrkXNLURdXrx2apoyWQFrFb5UqNkjdHVi"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdToml.sol":{"keccak256":"0x58a72c765ed3f7ff6b105509689658795b8a3739b8931772a497155878381861","urls":["bzz-raw://b4a3746f4fabaeb980bd77d9e091d3904ee38a6c0e191bfa8ba6874c6f8558a3","dweb:/ipfs/QmUfFDMEn461FgGEXt5HicyGD54sc28sLaQ9JRWDMBKed8"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0xb2469a902a326074034c4f7081d868113db0edbb7cf48b86528af2d6b07295f8","urls":["bzz-raw://1430a81c4978be875e2a3b31a8bfa4e1438fecd327f23771b690d64db63c020a","dweb:/ipfs/QmW6aB2u1LNaRgGQFwjV7L7UbxsRg63iJ7AuujPouEa4cT"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x3dda6083a83dfa3e8526e97bcc28e862ee2442dd58fe94d5c426d65b8e38f73c","urls":["bzz-raw://33f8c02e4dabdab86a6825125856446a8657eacd712318b51b7818e4a6f6e3f4","dweb:/ipfs/QmRKSjVnrk54yr8wTK2e6QxRjiuba2H8HJSKunHAkdo7RG"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x6f235e293b4406784ff3bd89b2e4d51d0922918cf6825e7a7a09413606932e39","urls":["bzz-raw://afc4fceb24a18596a239e82eb354c41d9a4e28d3fc56fcce04146af2c692b1b9","dweb:/ipfs/QmQCHSAb5k9KQW9kEzeoPdirSknkWso4q4t5CSVFLNnMLB"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5","urls":["bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57","dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f","urls":["bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d","dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11","urls":["bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab","dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3"],"license":"MIT"},"src/PiggyBank.sol":{"keccak256":"0x7f872fc53bc934074bfffccf4204f76f66a8a51fc252e8a2e7ce97f806690ea1","urls":["bzz-raw://5fd6a936a003deea234e6d45971529963c847614be170b5387d22c6c52d54314","dweb:/ipfs/QmQsDEV4j18P4RQt5onsGdG3fAAqi9gm29CEgJnowvab8r"],"license":"MIT"},"test/PiggyBank.t.sol":{"keccak256":"0x3363cce77343f03cc857868817bfb2ca642edf5401de7ddb3df4cc0a701c230f","urls":["bzz-raw://e5803ec6cf3a359dfedc5cf72e0e1cac62aa9dfbef975921c13f3c4a07b02759","dweb:/ipfs/Qmf8K8aJGVSBVvirvmAwMSr9Ujv3Fqv5gf2ypWjnkurcsr"],"license":"MIT"}},"version":1},"id":20} \ No newline at end of file diff --git a/out/PiggyBank.t.sol/ReentrancyAttacker.json b/out/PiggyBank.t.sol/ReentrancyAttacker.json index 616d809..cf3dc16 100644 --- a/out/PiggyBank.t.sol/ReentrancyAttacker.json +++ b/out/PiggyBank.t.sol/ReentrancyAttacker.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_target","type":"address","internalType":"contract PiggyBank"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"attack","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"target","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract PiggyBank"}],"stateMutability":"view"}],"bytecode":{"object":"0x608060405234801561000f575f80fd5b5060405161020438038061020483398101604081905261002e91610052565b5f80546001600160a01b0319166001600160a01b039290921691909117905561007f565b5f60208284031215610062575f80fd5b81516001600160a01b0381168114610078575f80fd5b9392505050565b6101788061008c5f395ff3fe60806040526004361061002b575f3560e01c80639e5faafc1461009d578063d4b83992146100b1575f80fd5b36610099575f546001600160a01b03163115610097575f805460408051633ccfd60b60e01b815290516001600160a01b0390921692633ccfd60b9260048084019382900301818387803b158015610080575f80fd5b505af1158015610092573d5f803e3d5ffd5b505050505b005b5f80fd5b3480156100a8575f80fd5b506100976100eb565b3480156100bc575f80fd5b505f546100cf906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b5f805460408051633ccfd60b60e01b815290516001600160a01b0390921692633ccfd60b9260048084019382900301818387803b15801561012a575f80fd5b505af115801561013c573d5f803e3d5ffd5b5050505056fea26469706673582212207deeabf49144927664225f1d1cbfb6c880f4d89cea26549f110d2355c074ece564736f6c63430008140033","sourceMap":"18251:535:20:-:0;;;18315:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18356:6;:16;;-1:-1:-1;;;;;;18356:16:20;-1:-1:-1;;;;;18356:16:20;;;;;;;;;;18251:535;;14:309:21;103:6;156:2;144:9;135:7;131:23;127:32;124:52;;;172:1;169;162:12;124:52;198:16;;-1:-1:-1;;;;;243:31:21;;233:42;;223:70;;289:1;286;279:12;223:70;312:5;14:309;-1:-1:-1;;;14:309:21:o;:::-;18251:535:20;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361061002b575f3560e01c80639e5faafc1461009d578063d4b83992146100b1575f80fd5b36610099575f546001600160a01b03163115610097575f805460408051633ccfd60b60e01b815290516001600160a01b0390921692633ccfd60b9260048084019382900301818387803b158015610080575f80fd5b505af1158015610092573d5f803e3d5ffd5b505050505b005b5f80fd5b3480156100a8575f80fd5b506100976100eb565b3480156100bc575f80fd5b505f546100cf906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b5f805460408051633ccfd60b60e01b815290516001600160a01b0390921692633ccfd60b9260048084019382900301818387803b15801561012a575f80fd5b505af115801561013c573d5f803e3d5ffd5b5050505056fea26469706673582212207deeabf49144927664225f1d1cbfb6c880f4d89cea26549f110d2355c074ece564736f6c63430008140033","sourceMap":"18251:535:20:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18733:1;18715:6;-1:-1:-1;;;;;18715:6:20;18707:23;:27;18703:75;;18750:6;;;:17;;;-1:-1:-1;;;18750:17:20;;;;-1:-1:-1;;;;;18750:6:20;;;;:15;;:17;;;;;;;;;;:6;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18703:75;18251:535;;;;;18385:171;;;;;;;;;;;;;:::i;18285:23::-;;;;;;;;;;-1:-1:-1;18285:23:20;;;;-1:-1:-1;;;;;18285:23:20;;;;;;-1:-1:-1;;;;;197:32:21;;;179:51;;167:2;152:18;18285:23:20;;;;;;;18385:171;18532:6;;;:17;;;-1:-1:-1;;;18532:17:20;;;;-1:-1:-1;;;;;18532:6:20;;;;:15;;:17;;;;;;;;;;:6;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18385:171::o","linkReferences":{}},"methodIdentifiers":{"attack()":"9e5faafc","target()":"d4b83992"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract PiggyBank\",\"name\":\"_target\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"attack\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"target\",\"outputs\":[{\"internalType\":\"contract PiggyBank\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/PiggyBank.t.sol\":\"ReentrancyAttacker\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4b2a5a85e045dcf6a082700c7252e43854c2eed88f860aaa18ec1e85218ae2bf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://98d060ed5be569a92d908fc358149039dc8f833d61973aa1b9d1d8235676bf6d\",\"dweb:/ipfs/QmaWQpn5dJmbMS5skwmPPMeUWZG35BLkignPpcA3zyagEs\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xd8eec16034b53b52c90a3d720e121ce7d30d64cc57d854db7d817d5b382dda43\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://612780755e32668c7e3b747d94d16c7291101144e084dd9ee563f071711e99e3\",\"dweb:/ipfs/QmQgtFJXEmDtSHT7tZQTMbb6PCDpq5UDYFvrBnWk1Xo2SY\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xae394f477769a38276d98d4854bc865fc8d281edbd4e72167507adb8236812aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34a0e609a4ec617b5c349f5e89a3352810cc5e4d3adaf939b32a27e4a5e46de2\",\"dweb:/ipfs/QmPfjimWAGGb6rzDjNMtLeZ93JJbCJJMov5gaNKyTy1doe\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x0fa6ec03602648b62cce41aab2096e6b7e052f2846075d967b6958dd586db746\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cd84e2ca9c1eaed6b76768cc12bb8c1af8289170ea8b7706f58d516460d79c41\",\"dweb:/ipfs/QmQ7BK7co6DE4eWUqMyv11s5eHYkS1tyx8tDSZGZVtf2aK\"]},\"lib/forge-std/src/StdConstants.sol\":{\"keccak256\":\"0x319ccdabfa2c0b2428301445873270ffea20f0e039d4fd5e6eeba65158e4e534\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b633f9d3a719e1d035ce7daa6cc051ddf89a72d34200d14cec37728e245cdabc\",\"dweb:/ipfs/QmRP7HQJpHMx1CsFrY8tXVVx1DQmi2dcb2BoGfiWaA923r\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x4dab3021edfa9511bbdd80c48f060ef62eaf457f99eaf841f561fc2557d9a08d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07668628673174cf8f27f8f4e1f862bab775013ec247eb34f698c5005f229391\",\"dweb:/ipfs/QmPJsiiYwmCZXMsHmQv5tg8VF3CAhNdat7WnKLTWZZH2v5\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xbc0132abe1c2accc2867c0f03667afffdf92f3e95a581bb03c9557eaa38ea500\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb6fab37dc73c219cfbb7b4f4998bcf7677ca5397a867e850f40232192073974\",\"dweb:/ipfs/QmUHsbVdp9SKmgek7ZfPcLTKrpZFXpqaqt4sVejzxGEQL3\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x04102de0a79398e4bdea57b7a4818655b4cc66d6f81d1cff08bf428cd0b384cd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53edc6c8f7f67cafc0129f039637c77d979880f7f1947defea31e8f0c05095bc\",\"dweb:/ipfs/QmUKXJd1vFCkxxrkXNLURdXrx2apoyWQFrFb5UqNkjdHVi\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdToml.sol\":{\"keccak256\":\"0x58a72c765ed3f7ff6b105509689658795b8a3739b8931772a497155878381861\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4a3746f4fabaeb980bd77d9e091d3904ee38a6c0e191bfa8ba6874c6f8558a3\",\"dweb:/ipfs/QmUfFDMEn461FgGEXt5HicyGD54sc28sLaQ9JRWDMBKed8\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0xb2469a902a326074034c4f7081d868113db0edbb7cf48b86528af2d6b07295f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1430a81c4978be875e2a3b31a8bfa4e1438fecd327f23771b690d64db63c020a\",\"dweb:/ipfs/QmW6aB2u1LNaRgGQFwjV7L7UbxsRg63iJ7AuujPouEa4cT\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x3dda6083a83dfa3e8526e97bcc28e862ee2442dd58fe94d5c426d65b8e38f73c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33f8c02e4dabdab86a6825125856446a8657eacd712318b51b7818e4a6f6e3f4\",\"dweb:/ipfs/QmRKSjVnrk54yr8wTK2e6QxRjiuba2H8HJSKunHAkdo7RG\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x6f235e293b4406784ff3bd89b2e4d51d0922918cf6825e7a7a09413606932e39\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://afc4fceb24a18596a239e82eb354c41d9a4e28d3fc56fcce04146af2c692b1b9\",\"dweb:/ipfs/QmQCHSAb5k9KQW9kEzeoPdirSknkWso4q4t5CSVFLNnMLB\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57\",\"dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d\",\"dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab\",\"dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3\"]},\"src/PiggyBank.sol\":{\"keccak256\":\"0x5cb45b9eedeffd9dc7753efa95d5ea29b8ee14fad582b778dabd672cdd8f4644\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86156887f596da77b4278af95d23bc4fbe5506db76103bc6a51a439a5ef2f3d4\",\"dweb:/ipfs/Qma3i5f819qgPRnwmVW938DtqhujEmxGyLtnVah9UDaaaW\"]},\"test/PiggyBank.t.sol\":{\"keccak256\":\"0xe5d618407c794a746028a94ba0c99097e2cdfb7d2a01dda210d09e71bc38c0ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9111c04d039ba160af4fa8cc206252febe2818ae1e5c11b015178a65487dd354\",\"dweb:/ipfs/QmSYSUUvKmBB5t7yV2mwi3QUQpkDgRCLSahnxVBQeLgNK2\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract PiggyBank","name":"_target","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"attack"},{"inputs":[],"stateMutability":"view","type":"function","name":"target","outputs":[{"internalType":"contract PiggyBank","name":"","type":"address"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/PiggyBank.t.sol":"ReentrancyAttacker"},"evmVersion":"shanghai","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4b2a5a85e045dcf6a082700c7252e43854c2eed88f860aaa18ec1e85218ae2bf","urls":["bzz-raw://98d060ed5be569a92d908fc358149039dc8f833d61973aa1b9d1d8235676bf6d","dweb:/ipfs/QmaWQpn5dJmbMS5skwmPPMeUWZG35BLkignPpcA3zyagEs"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xd8eec16034b53b52c90a3d720e121ce7d30d64cc57d854db7d817d5b382dda43","urls":["bzz-raw://612780755e32668c7e3b747d94d16c7291101144e084dd9ee563f071711e99e3","dweb:/ipfs/QmQgtFJXEmDtSHT7tZQTMbb6PCDpq5UDYFvrBnWk1Xo2SY"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xae394f477769a38276d98d4854bc865fc8d281edbd4e72167507adb8236812aa","urls":["bzz-raw://34a0e609a4ec617b5c349f5e89a3352810cc5e4d3adaf939b32a27e4a5e46de2","dweb:/ipfs/QmPfjimWAGGb6rzDjNMtLeZ93JJbCJJMov5gaNKyTy1doe"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0x0fa6ec03602648b62cce41aab2096e6b7e052f2846075d967b6958dd586db746","urls":["bzz-raw://cd84e2ca9c1eaed6b76768cc12bb8c1af8289170ea8b7706f58d516460d79c41","dweb:/ipfs/QmQ7BK7co6DE4eWUqMyv11s5eHYkS1tyx8tDSZGZVtf2aK"],"license":"MIT"},"lib/forge-std/src/StdConstants.sol":{"keccak256":"0x319ccdabfa2c0b2428301445873270ffea20f0e039d4fd5e6eeba65158e4e534","urls":["bzz-raw://b633f9d3a719e1d035ce7daa6cc051ddf89a72d34200d14cec37728e245cdabc","dweb:/ipfs/QmRP7HQJpHMx1CsFrY8tXVVx1DQmi2dcb2BoGfiWaA923r"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x4dab3021edfa9511bbdd80c48f060ef62eaf457f99eaf841f561fc2557d9a08d","urls":["bzz-raw://07668628673174cf8f27f8f4e1f862bab775013ec247eb34f698c5005f229391","dweb:/ipfs/QmPJsiiYwmCZXMsHmQv5tg8VF3CAhNdat7WnKLTWZZH2v5"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0xbc0132abe1c2accc2867c0f03667afffdf92f3e95a581bb03c9557eaa38ea500","urls":["bzz-raw://eb6fab37dc73c219cfbb7b4f4998bcf7677ca5397a867e850f40232192073974","dweb:/ipfs/QmUHsbVdp9SKmgek7ZfPcLTKrpZFXpqaqt4sVejzxGEQL3"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x04102de0a79398e4bdea57b7a4818655b4cc66d6f81d1cff08bf428cd0b384cd","urls":["bzz-raw://53edc6c8f7f67cafc0129f039637c77d979880f7f1947defea31e8f0c05095bc","dweb:/ipfs/QmUKXJd1vFCkxxrkXNLURdXrx2apoyWQFrFb5UqNkjdHVi"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdToml.sol":{"keccak256":"0x58a72c765ed3f7ff6b105509689658795b8a3739b8931772a497155878381861","urls":["bzz-raw://b4a3746f4fabaeb980bd77d9e091d3904ee38a6c0e191bfa8ba6874c6f8558a3","dweb:/ipfs/QmUfFDMEn461FgGEXt5HicyGD54sc28sLaQ9JRWDMBKed8"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0xb2469a902a326074034c4f7081d868113db0edbb7cf48b86528af2d6b07295f8","urls":["bzz-raw://1430a81c4978be875e2a3b31a8bfa4e1438fecd327f23771b690d64db63c020a","dweb:/ipfs/QmW6aB2u1LNaRgGQFwjV7L7UbxsRg63iJ7AuujPouEa4cT"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x3dda6083a83dfa3e8526e97bcc28e862ee2442dd58fe94d5c426d65b8e38f73c","urls":["bzz-raw://33f8c02e4dabdab86a6825125856446a8657eacd712318b51b7818e4a6f6e3f4","dweb:/ipfs/QmRKSjVnrk54yr8wTK2e6QxRjiuba2H8HJSKunHAkdo7RG"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x6f235e293b4406784ff3bd89b2e4d51d0922918cf6825e7a7a09413606932e39","urls":["bzz-raw://afc4fceb24a18596a239e82eb354c41d9a4e28d3fc56fcce04146af2c692b1b9","dweb:/ipfs/QmQCHSAb5k9KQW9kEzeoPdirSknkWso4q4t5CSVFLNnMLB"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5","urls":["bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57","dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f","urls":["bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d","dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11","urls":["bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab","dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3"],"license":"MIT"},"src/PiggyBank.sol":{"keccak256":"0x5cb45b9eedeffd9dc7753efa95d5ea29b8ee14fad582b778dabd672cdd8f4644","urls":["bzz-raw://86156887f596da77b4278af95d23bc4fbe5506db76103bc6a51a439a5ef2f3d4","dweb:/ipfs/Qma3i5f819qgPRnwmVW938DtqhujEmxGyLtnVah9UDaaaW"],"license":"MIT"},"test/PiggyBank.t.sol":{"keccak256":"0xe5d618407c794a746028a94ba0c99097e2cdfb7d2a01dda210d09e71bc38c0ca","urls":["bzz-raw://9111c04d039ba160af4fa8cc206252febe2818ae1e5c11b015178a65487dd354","dweb:/ipfs/QmSYSUUvKmBB5t7yV2mwi3QUQpkDgRCLSahnxVBQeLgNK2"],"license":"MIT"}},"version":1},"id":20} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"_target","type":"address","internalType":"contract PiggyBank"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"attack","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"target","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract PiggyBank"}],"stateMutability":"view"}],"bytecode":{"object":"0x608060405234801561000f575f80fd5b5060405161020438038061020483398101604081905261002e91610052565b5f80546001600160a01b0319166001600160a01b039290921691909117905561007f565b5f60208284031215610062575f80fd5b81516001600160a01b0381168114610078575f80fd5b9392505050565b6101788061008c5f395ff3fe60806040526004361061002b575f3560e01c80639e5faafc1461009d578063d4b83992146100b1575f80fd5b36610099575f546001600160a01b03163115610097575f805460408051633ccfd60b60e01b815290516001600160a01b0390921692633ccfd60b9260048084019382900301818387803b158015610080575f80fd5b505af1158015610092573d5f803e3d5ffd5b505050505b005b5f80fd5b3480156100a8575f80fd5b506100976100eb565b3480156100bc575f80fd5b505f546100cf906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b5f805460408051633ccfd60b60e01b815290516001600160a01b0390921692633ccfd60b9260048084019382900301818387803b15801561012a575f80fd5b505af115801561013c573d5f803e3d5ffd5b5050505056fea2646970667358221220eb5a8cf24cd188092560acca67568fbe331fff34d6967966f8705f2fd4df86f964736f6c63430008140033","sourceMap":"21554:535:20:-:0;;;21618:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21659:6;:16;;-1:-1:-1;;;;;;21659:16:20;-1:-1:-1;;;;;21659:16:20;;;;;;;;;;21554:535;;14:309:22;103:6;156:2;144:9;135:7;131:23;127:32;124:52;;;172:1;169;162:12;124:52;198:16;;-1:-1:-1;;;;;243:31:22;;233:42;;223:70;;289:1;286;279:12;223:70;312:5;14:309;-1:-1:-1;;;14:309:22:o;:::-;21554:535:20;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361061002b575f3560e01c80639e5faafc1461009d578063d4b83992146100b1575f80fd5b36610099575f546001600160a01b03163115610097575f805460408051633ccfd60b60e01b815290516001600160a01b0390921692633ccfd60b9260048084019382900301818387803b158015610080575f80fd5b505af1158015610092573d5f803e3d5ffd5b505050505b005b5f80fd5b3480156100a8575f80fd5b506100976100eb565b3480156100bc575f80fd5b505f546100cf906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b5f805460408051633ccfd60b60e01b815290516001600160a01b0390921692633ccfd60b9260048084019382900301818387803b15801561012a575f80fd5b505af115801561013c573d5f803e3d5ffd5b5050505056fea2646970667358221220eb5a8cf24cd188092560acca67568fbe331fff34d6967966f8705f2fd4df86f964736f6c63430008140033","sourceMap":"21554:535:20:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22036:1;22018:6;-1:-1:-1;;;;;22018:6:20;22010:23;:27;22006:75;;22053:6;;;:17;;;-1:-1:-1;;;22053:17:20;;;;-1:-1:-1;;;;;22053:6:20;;;;:15;;:17;;;;;;;;;;:6;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22006:75;21554:535;;;;;21688:171;;;;;;;;;;;;;:::i;21588:23::-;;;;;;;;;;-1:-1:-1;21588:23:20;;;;-1:-1:-1;;;;;21588:23:20;;;;;;-1:-1:-1;;;;;205:32:22;;;187:51;;175:2;160:18;21588:23:20;;;;;;;21688:171;21835:6;;;:17;;;-1:-1:-1;;;21835:17:20;;;;-1:-1:-1;;;;;21835:6:20;;;;:15;;:17;;;;;;;;;;:6;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21688:171::o","linkReferences":{}},"methodIdentifiers":{"attack()":"9e5faafc","target()":"d4b83992"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract PiggyBank\",\"name\":\"_target\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"attack\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"target\",\"outputs\":[{\"internalType\":\"contract PiggyBank\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/PiggyBank.t.sol\":\"ReentrancyAttacker\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4b2a5a85e045dcf6a082700c7252e43854c2eed88f860aaa18ec1e85218ae2bf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://98d060ed5be569a92d908fc358149039dc8f833d61973aa1b9d1d8235676bf6d\",\"dweb:/ipfs/QmaWQpn5dJmbMS5skwmPPMeUWZG35BLkignPpcA3zyagEs\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xd8eec16034b53b52c90a3d720e121ce7d30d64cc57d854db7d817d5b382dda43\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://612780755e32668c7e3b747d94d16c7291101144e084dd9ee563f071711e99e3\",\"dweb:/ipfs/QmQgtFJXEmDtSHT7tZQTMbb6PCDpq5UDYFvrBnWk1Xo2SY\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xae394f477769a38276d98d4854bc865fc8d281edbd4e72167507adb8236812aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34a0e609a4ec617b5c349f5e89a3352810cc5e4d3adaf939b32a27e4a5e46de2\",\"dweb:/ipfs/QmPfjimWAGGb6rzDjNMtLeZ93JJbCJJMov5gaNKyTy1doe\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x0fa6ec03602648b62cce41aab2096e6b7e052f2846075d967b6958dd586db746\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cd84e2ca9c1eaed6b76768cc12bb8c1af8289170ea8b7706f58d516460d79c41\",\"dweb:/ipfs/QmQ7BK7co6DE4eWUqMyv11s5eHYkS1tyx8tDSZGZVtf2aK\"]},\"lib/forge-std/src/StdConstants.sol\":{\"keccak256\":\"0x319ccdabfa2c0b2428301445873270ffea20f0e039d4fd5e6eeba65158e4e534\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b633f9d3a719e1d035ce7daa6cc051ddf89a72d34200d14cec37728e245cdabc\",\"dweb:/ipfs/QmRP7HQJpHMx1CsFrY8tXVVx1DQmi2dcb2BoGfiWaA923r\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x4dab3021edfa9511bbdd80c48f060ef62eaf457f99eaf841f561fc2557d9a08d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07668628673174cf8f27f8f4e1f862bab775013ec247eb34f698c5005f229391\",\"dweb:/ipfs/QmPJsiiYwmCZXMsHmQv5tg8VF3CAhNdat7WnKLTWZZH2v5\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xbc0132abe1c2accc2867c0f03667afffdf92f3e95a581bb03c9557eaa38ea500\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb6fab37dc73c219cfbb7b4f4998bcf7677ca5397a867e850f40232192073974\",\"dweb:/ipfs/QmUHsbVdp9SKmgek7ZfPcLTKrpZFXpqaqt4sVejzxGEQL3\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x04102de0a79398e4bdea57b7a4818655b4cc66d6f81d1cff08bf428cd0b384cd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53edc6c8f7f67cafc0129f039637c77d979880f7f1947defea31e8f0c05095bc\",\"dweb:/ipfs/QmUKXJd1vFCkxxrkXNLURdXrx2apoyWQFrFb5UqNkjdHVi\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdToml.sol\":{\"keccak256\":\"0x58a72c765ed3f7ff6b105509689658795b8a3739b8931772a497155878381861\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4a3746f4fabaeb980bd77d9e091d3904ee38a6c0e191bfa8ba6874c6f8558a3\",\"dweb:/ipfs/QmUfFDMEn461FgGEXt5HicyGD54sc28sLaQ9JRWDMBKed8\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0xb2469a902a326074034c4f7081d868113db0edbb7cf48b86528af2d6b07295f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1430a81c4978be875e2a3b31a8bfa4e1438fecd327f23771b690d64db63c020a\",\"dweb:/ipfs/QmW6aB2u1LNaRgGQFwjV7L7UbxsRg63iJ7AuujPouEa4cT\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x3dda6083a83dfa3e8526e97bcc28e862ee2442dd58fe94d5c426d65b8e38f73c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33f8c02e4dabdab86a6825125856446a8657eacd712318b51b7818e4a6f6e3f4\",\"dweb:/ipfs/QmRKSjVnrk54yr8wTK2e6QxRjiuba2H8HJSKunHAkdo7RG\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x6f235e293b4406784ff3bd89b2e4d51d0922918cf6825e7a7a09413606932e39\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://afc4fceb24a18596a239e82eb354c41d9a4e28d3fc56fcce04146af2c692b1b9\",\"dweb:/ipfs/QmQCHSAb5k9KQW9kEzeoPdirSknkWso4q4t5CSVFLNnMLB\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57\",\"dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d\",\"dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab\",\"dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3\"]},\"src/PiggyBank.sol\":{\"keccak256\":\"0x7f872fc53bc934074bfffccf4204f76f66a8a51fc252e8a2e7ce97f806690ea1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fd6a936a003deea234e6d45971529963c847614be170b5387d22c6c52d54314\",\"dweb:/ipfs/QmQsDEV4j18P4RQt5onsGdG3fAAqi9gm29CEgJnowvab8r\"]},\"test/PiggyBank.t.sol\":{\"keccak256\":\"0x3363cce77343f03cc857868817bfb2ca642edf5401de7ddb3df4cc0a701c230f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5803ec6cf3a359dfedc5cf72e0e1cac62aa9dfbef975921c13f3c4a07b02759\",\"dweb:/ipfs/Qmf8K8aJGVSBVvirvmAwMSr9Ujv3Fqv5gf2ypWjnkurcsr\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract PiggyBank","name":"_target","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"attack"},{"inputs":[],"stateMutability":"view","type":"function","name":"target","outputs":[{"internalType":"contract PiggyBank","name":"","type":"address"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/PiggyBank.t.sol":"ReentrancyAttacker"},"evmVersion":"shanghai","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4b2a5a85e045dcf6a082700c7252e43854c2eed88f860aaa18ec1e85218ae2bf","urls":["bzz-raw://98d060ed5be569a92d908fc358149039dc8f833d61973aa1b9d1d8235676bf6d","dweb:/ipfs/QmaWQpn5dJmbMS5skwmPPMeUWZG35BLkignPpcA3zyagEs"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xd8eec16034b53b52c90a3d720e121ce7d30d64cc57d854db7d817d5b382dda43","urls":["bzz-raw://612780755e32668c7e3b747d94d16c7291101144e084dd9ee563f071711e99e3","dweb:/ipfs/QmQgtFJXEmDtSHT7tZQTMbb6PCDpq5UDYFvrBnWk1Xo2SY"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xae394f477769a38276d98d4854bc865fc8d281edbd4e72167507adb8236812aa","urls":["bzz-raw://34a0e609a4ec617b5c349f5e89a3352810cc5e4d3adaf939b32a27e4a5e46de2","dweb:/ipfs/QmPfjimWAGGb6rzDjNMtLeZ93JJbCJJMov5gaNKyTy1doe"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0x0fa6ec03602648b62cce41aab2096e6b7e052f2846075d967b6958dd586db746","urls":["bzz-raw://cd84e2ca9c1eaed6b76768cc12bb8c1af8289170ea8b7706f58d516460d79c41","dweb:/ipfs/QmQ7BK7co6DE4eWUqMyv11s5eHYkS1tyx8tDSZGZVtf2aK"],"license":"MIT"},"lib/forge-std/src/StdConstants.sol":{"keccak256":"0x319ccdabfa2c0b2428301445873270ffea20f0e039d4fd5e6eeba65158e4e534","urls":["bzz-raw://b633f9d3a719e1d035ce7daa6cc051ddf89a72d34200d14cec37728e245cdabc","dweb:/ipfs/QmRP7HQJpHMx1CsFrY8tXVVx1DQmi2dcb2BoGfiWaA923r"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x4dab3021edfa9511bbdd80c48f060ef62eaf457f99eaf841f561fc2557d9a08d","urls":["bzz-raw://07668628673174cf8f27f8f4e1f862bab775013ec247eb34f698c5005f229391","dweb:/ipfs/QmPJsiiYwmCZXMsHmQv5tg8VF3CAhNdat7WnKLTWZZH2v5"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0xbc0132abe1c2accc2867c0f03667afffdf92f3e95a581bb03c9557eaa38ea500","urls":["bzz-raw://eb6fab37dc73c219cfbb7b4f4998bcf7677ca5397a867e850f40232192073974","dweb:/ipfs/QmUHsbVdp9SKmgek7ZfPcLTKrpZFXpqaqt4sVejzxGEQL3"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x04102de0a79398e4bdea57b7a4818655b4cc66d6f81d1cff08bf428cd0b384cd","urls":["bzz-raw://53edc6c8f7f67cafc0129f039637c77d979880f7f1947defea31e8f0c05095bc","dweb:/ipfs/QmUKXJd1vFCkxxrkXNLURdXrx2apoyWQFrFb5UqNkjdHVi"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdToml.sol":{"keccak256":"0x58a72c765ed3f7ff6b105509689658795b8a3739b8931772a497155878381861","urls":["bzz-raw://b4a3746f4fabaeb980bd77d9e091d3904ee38a6c0e191bfa8ba6874c6f8558a3","dweb:/ipfs/QmUfFDMEn461FgGEXt5HicyGD54sc28sLaQ9JRWDMBKed8"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0xb2469a902a326074034c4f7081d868113db0edbb7cf48b86528af2d6b07295f8","urls":["bzz-raw://1430a81c4978be875e2a3b31a8bfa4e1438fecd327f23771b690d64db63c020a","dweb:/ipfs/QmW6aB2u1LNaRgGQFwjV7L7UbxsRg63iJ7AuujPouEa4cT"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x3dda6083a83dfa3e8526e97bcc28e862ee2442dd58fe94d5c426d65b8e38f73c","urls":["bzz-raw://33f8c02e4dabdab86a6825125856446a8657eacd712318b51b7818e4a6f6e3f4","dweb:/ipfs/QmRKSjVnrk54yr8wTK2e6QxRjiuba2H8HJSKunHAkdo7RG"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x6f235e293b4406784ff3bd89b2e4d51d0922918cf6825e7a7a09413606932e39","urls":["bzz-raw://afc4fceb24a18596a239e82eb354c41d9a4e28d3fc56fcce04146af2c692b1b9","dweb:/ipfs/QmQCHSAb5k9KQW9kEzeoPdirSknkWso4q4t5CSVFLNnMLB"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5","urls":["bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57","dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f","urls":["bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d","dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11","urls":["bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab","dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3"],"license":"MIT"},"src/PiggyBank.sol":{"keccak256":"0x7f872fc53bc934074bfffccf4204f76f66a8a51fc252e8a2e7ce97f806690ea1","urls":["bzz-raw://5fd6a936a003deea234e6d45971529963c847614be170b5387d22c6c52d54314","dweb:/ipfs/QmQsDEV4j18P4RQt5onsGdG3fAAqi9gm29CEgJnowvab8r"],"license":"MIT"},"test/PiggyBank.t.sol":{"keccak256":"0x3363cce77343f03cc857868817bfb2ca642edf5401de7ddb3df4cc0a701c230f","urls":["bzz-raw://e5803ec6cf3a359dfedc5cf72e0e1cac62aa9dfbef975921c13f3c4a07b02759","dweb:/ipfs/Qmf8K8aJGVSBVvirvmAwMSr9Ujv3Fqv5gf2ypWjnkurcsr"],"license":"MIT"}},"version":1},"id":20} \ No newline at end of file diff --git a/out/PiggyBankSecurity.t.sol/PiggyBankSecurityTest.json b/out/PiggyBankSecurity.t.sol/PiggyBankSecurityTest.json new file mode 100644 index 0000000..14b2083 --- /dev/null +++ b/out/PiggyBankSecurity.t.sol/PiggyBankSecurityTest.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"INITIAL_DEPOSIT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"LOCK_TIME","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSelectors","inputs":[],"outputs":[{"name":"excludedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"guardian","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"piggyBank","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract PiggyBank"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzArtifactSelector[]","components":[{"name":"artifact","type":"string","internalType":"string"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testAccessControls","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testAllIntegrationFeatures","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testAllSecurityFeatures","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testContractPausing","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCustomErrors","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testDepositLimits","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testDirectETHTransfers","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testEmergencyMode","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testEventEmissions","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFullDepositWithdrawCycle","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testGasOptimizations","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testMultipleDepositsSameUser","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testReentrancyProtection","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testStatisticsTracking","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testViewFunctions","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"user1","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"user2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"Deposited","inputs":[{"name":"depositor","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"TestResult","inputs":[{"name":"testName","type":"string","indexed":false,"internalType":"string"},{"name":"passed","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x6080604052600c805460ff199081166001908117909255601f805490911682179055602080546001600160a01b0319908116909217905560218054821660021790556022805482166003179055602380549091166004179055348015610063575f80fd5b50615586806100715f395ff3fe608060405234801562000010575f80fd5b506004361062000234575f3560e01c80638eb4f4341162000137578063ba414fa611620000b7578063e20c9f711162000083578063e20c9f711462000432578063e39bbddd146200043c578063ea673c851462000446578063eb7aabd41462000450578063fa7626d4146200045a575f80fd5b8063ba414fa614620003f9578063d43f0b3f1462000414578063db086b7d146200041e578063dc73d4941462000428575f80fd5b8063b0464fdc1162000103578063b0464fdc14620003ae578063b5508aa914620003b8578063b5678a2114620003c2578063b7d5d4c014620003cc578063b9edb1af14620003e5575f80fd5b80638eb4f4341462000367578063916a17c61462000377578063ac1717b01462000390578063aff797aa14620003a4575f80fd5b80633e5e3c2311620001c357806366d9a9a0116200018f57806366d9a9a0146200030d5780636f911760146200032657806376013534146200033057806385226c81146200033a5780638da5cb5b1462000353575f80fd5b80633e5e3c2314620002b15780633f7286f414620002bb578063413d9c3a14620002c5578063452a932014620002e0575f80fd5b80631ed7831c11620002035780631ed7831c14620002625780632ade38801462000284578063349c8be6146200029d578063385e533014620002a7575f80fd5b806307c8025714620002385780630a9254e4146200024457806315de0567146200024e578063167c14901462000258575b5f80fd5b6200024262000468565b005b6200024262000886565b6200024262000ae7565b6200024262000e9d565b6200026c620011f5565b6040516200027b919062003d8c565b60405180910390f35b6200028e62001257565b6040516200027b919062003e1f565b620002426200139f565b620002426200158f565b6200026c620017ff565b6200026c6200185f565b620002d16301e1338081565b6040519081526020016200027b565b602154620002f4906001600160a01b031681565b6040516001600160a01b0390911681526020016200027b565b62000317620018bf565b6040516200027b919062003f29565b6200024262001a2f565b6200024262001c04565b6200034462002205565b6040516200027b919062003fb2565b602054620002f4906001600160a01b031681565b620002d1670de0b6b3a764000081565b62000381620022da565b6040516200027b919062004016565b602254620002f4906001600160a01b031681565b62000242620023bf565b6200038162002711565b62000344620027f6565b62000242620028cb565b601f54620002f49061010090046001600160a01b031681565b602354620002f4906001600160a01b031681565b6200040362002df9565b60405190151581526020016200027b565b6200024262002e93565b620002426200316a565b620002426200321c565b6200026c62003612565b6200024262003672565b6200024262003985565b62000242620039f9565b601f54620004039060ff1681565b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620055118339815191529063ca669fa7906024015f604051808303815f87803b158015620004b9575f80fd5b505af1158015620004cc573d5f803e3d5ffd5b5050601f5461010090046001600160a01b0316915063d9c5e6d79050620004f74262278d006200409b565b6040518263ffffffff1660e01b81526004016200051691815260200190565b5f604051808303815f87803b1580156200052e575f80fd5b505af115801562000541573d5f803e3d5ffd5b50505050620005c7601f60019054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200059b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620005c19190620040b7565b62003c77565b6200061d601f60019054906101000a90046001600160a01b03166001600160a01b0316630905f5606040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200059b573d5f803e3d5ffd5b6022546040516303223eab60e11b81526001600160a01b0390911660048201525f8051602062005511833981519152906306447d56906024015f604051808303815f87803b1580156200066e575f80fd5b505af115801562000681573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620006dc575f80fd5b505af1158015620006ef573d5f803e3d5ffd5b5050505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000742575f80fd5b505af115801562000755573d5f803e3d5ffd5b5050601f5460225460405163fc7e286d60e01b81526001600160a01b039182166004820152620007dc945061010090920416915063fc7e286d906024015b602060405180830381865afa158015620007af573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620007d59190620040df565b5f62003cd9565b60408051818152600e918101919091526d456d657267656e6379204d6f646560901b6060820152600160208201525f8051602062005531833981519152906080015b60405180910390a15f80516020620055118339815191526001600160a01b03166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156200086d575f80fd5b505af115801562000880573d5f803e3d5ffd5b50505050565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620055118339815191529063ca669fa7906024015f604051808303815f87803b158015620008d7575f80fd5b505af1158015620008ea573d5f803e3d5ffd5b505050506301e13380426200090091906200409b565b6040516200090e9062003d7e565b908152602001604051809103905ff0801580156200092e573d5f803e3d5ffd5b50601f8054610100600160a81b0319166101006001600160a01b039384160217905560205460405163ca669fa760e01b8152911660048201525f80516020620055118339815191529063ca669fa7906024015f604051808303815f87803b15801562000998575f80fd5b505af1158015620009ab573d5f803e3d5ffd5b5050601f546021546040516314671be760e31b81526001600160a01b03918216600482015261010090920416925063a338df3891506024015f604051808303815f87803b158015620009fb575f80fd5b505af115801562000a0e573d5f803e3d5ffd5b505060225460405163c88a5e6d60e01b81526001600160a01b039091166004820152678ac7230489e8000060248201525f8051602062005511833981519152925063c88a5e6d91506044015f604051808303815f87803b15801562000a71575f80fd5b505af115801562000a84573d5f803e3d5ffd5b505060235460405163c88a5e6d60e01b81526001600160a01b039091166004820152678ac7230489e8000060248201525f8051602062005511833981519152925063c88a5e6d91506044015f604051808303815f87803b1580156200086d575f80fd5b6022546040516303223eab60e11b81526001600160a01b0390911660048201525f8051602062005511833981519152906306447d56906024015f604051808303815f87803b15801562000b38575f80fd5b505af115801562000b4b573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f8051602062005511833981519152925063491cc7c291506084015f604051808303815f87803b15801562000ba8575f80fd5b505af115801562000bbb573d5f803e3d5ffd5b5050602254604051670de0b6b3a764000081526001600160a01b0390911692507f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4915060200160405180910390a2601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562000c60575f80fd5b505af115801562000c73573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f60448301526064820152600593505f8051602062005511833981519152925063491cc7c291506084015f604051808303815f87803b15801562000cd4575f80fd5b505af115801562000ce7573d5f803e3d5ffd5b50506020546040516001600160a01b03858116945090911691507f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a360205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620055118339815191529063ca669fa7906024015f604051808303815f87803b15801562000d77575f80fd5b505af115801562000d8a573d5f803e3d5ffd5b5050601f5460405163f2fde38b60e01b81526001600160a01b038581166004830152610100909204909116925063f2fde38b91506024015f604051808303815f87803b15801562000dd9575f80fd5b505af115801562000dec573d5f803e3d5ffd5b505060408051818152600f918101919091526e4576656e7420456d697373696f6e7360881b6060820152600160208201525f8051602062005531833981519152925060800190505b60405180910390a15f80516020620055118339815191526001600160a01b03166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000e83575f80fd5b505af115801562000e96573d5f803e3d5ffd5b5050505050565b6022546040516303223eab60e11b81526001600160a01b0390911660048201525f8051602062005511833981519152906306447d56906024015f604051808303815f87803b15801562000eee575f80fd5b505af115801562000f01573d5f803e3d5ffd5b5050604051630618f58760e51b81525f8051602062005511833981519152925063c31eb0e0915062000f3f906345556f1f60e01b90600401620040f7565b5f604051808303815f87803b15801562000f57575f80fd5b505af115801562000f6a573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0655af3107a40006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562000fc3575f80fd5b505af115801562000fd6573d5f803e3d5ffd5b5050604051630618f58760e51b81525f8051602062005511833981519152935063c31eb0e092506200101591506312e10f2760e01b90600401620040f7565b5f604051808303815f87803b1580156200102d575f80fd5b505af115801562001040573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0686c6b935b8bbd4000006040518263ffffffff1660e01b81526004015f604051808303818588803b1580156200109c575f80fd5b505af1158015620010af573d5f803e3d5ffd5b5050505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b1580156200110b575f80fd5b505af11580156200111e573d5f803e3d5ffd5b5050601f5460225460405163fc7e286d60e01b81526001600160a01b039182166004820152620011ae955061010090920416925063fc7e286d91506024015b602060405180830381865afa15801562001179573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200119f9190620040df565b670de0b6b3a764000062003cd9565b60408051818152600e918101919091526d4465706f736974204c696d69747360901b6060820152600160208201525f8051602062005531833981519152906080016200081e565b606060168054806020026020016040519081016040528092919081815260200182805480156200124d57602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116200122e575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020015f905b8282101562001396575f84815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156200137e578382905f5260205f20018054620012ec906200410c565b80601f01602080910402602001604051908101604052809291908181526020018280546200131a906200410c565b8015620013695780601f106200133f5761010080835404028352916020019162001369565b820191905f5260205f20905b8154815290600101906020018083116200134b57829003601f168201915b505050505081526020019060010190620012cc565b5050505081525050815260200190600101906200127a565b50505050905090565b601f5460225460405163019262d360e41b81526001600160a01b03918216600482015262001421926101009004909116906319262d3090602401602060405180830381865afa158015620013f5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200141b9190620040b7565b62003d43565b601f5460225460405163b488355f60e01b81526001600160a01b039182166004820152620014ad9261010090049091169063b488355f90602401602060405180830381865afa15801562001477573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200149d9190620040df565b683635c9adc5dea0000062003cd9565b5f601f60019054906101000a90046001600160a01b03166001600160a01b031663dac6270d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001500573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620015269190620040df565b9050620015355f821162003c77565b620015476301e1338082111562003c77565b60408051818152600e818301526d566965772046756e6374696f6e7360901b60608201526001602082015290515f80516020620055318339815191529181900360800190a150565b6022546040516303223eab60e11b81526001600160a01b0390911660048201525f8051602062005511833981519152906306447d56906024015f604051808303815f87803b158015620015e0575f80fd5b505af1158015620015f3573d5f803e3d5ffd5b5050601f546040515f93506101009091046001600160a01b03169150670de0b6b3a7640000908381818185875af1925050503d805f811462001651576040519150601f19603f3d011682016040523d82523d5f602084013e62001656565b606091505b50509050620016658162003c77565b601f5460225460405163fc7e286d60e01b81526001600160a01b039182166004820152620016a59261010090049091169063fc7e286d906024016200115d565b60405163f28dceb360e01b815260206004820152602360248201527f506967677942616e6b3a204469726563742063616c6c73206e6f7420616c6c6f6044820152621dd95960ea1b60648201525f80516020620055118339815191529063f28dceb3906084015f604051808303815f87803b15801562001723575f80fd5b505af115801562001736573d5f803e3d5ffd5b5050601f54604051723ab732bc3832b1ba32b210333ab731ba34b7b760691b81526101009091046001600160a01b0316925060130190505f604051808303815f865af19150503d805f8114620017a8576040519150601f19603f3d011682016040523d82523d5f602084013e620017ad565b606091505b5050604080518181526014918101919091527344697265637420455448205472616e736665727360601b6060820152600160208201529091505f80516020620055318339815191529060800162000e34565b606060188054806020026020016040519081016040528092919081815260200182805480156200124d57602002820191905f5260205f209081546001600160a01b031681526001909101906020018083116200122e575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156200124d57602002820191905f5260205f209081546001600160a01b031681526001909101906020018083116200122e575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020015f905b8282101562001396578382905f5260205f2090600202016040518060400160405290815f8201805462001915906200410c565b80601f016020809104026020016040519081016040528092919081815260200182805462001943906200410c565b8015620019925780601f10620019685761010080835404028352916020019162001992565b820191905f5260205f20905b8154815290600101906020018083116200197457829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801562001a1657602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620019d75790505b50505050508152505081526020019060010190620018e2565b6022546040516303223eab60e11b81526001600160a01b0390911660048201525f8051602062005511833981519152906306447d56906024015f604051808303815f87803b15801562001a80575f80fd5b505af115801562001a93573d5f803e3d5ffd5b505050505f5a9050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562001af2575f80fd5b505af115801562001b05573d5f803e3d5ffd5b50505050505f5a62001b18908362004146565b601f5460225460405163fc7e286d60e01b81526001600160a01b03918216600482015292935062001b5a92610100909204169063fc7e286d906024016200115d565b6040805181815260118183015270476173204f7074696d697a6174696f6e7360781b60608201526001602082015290515f80516020620055318339815191529181900360800190a15f80516020620055118339815191526001600160a01b03166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562001be9575f80fd5b505af115801562001bfc573d5f803e3d5ffd5b505050505050565b6022546040516303223eab60e11b81526001600160a01b0390911660048201525f8051602062005511833981519152906306447d56906024015f604051808303815f87803b15801562001c55575f80fd5b505af115801562001c68573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562001cc3575f80fd5b505af115801562001cd6573d5f803e3d5ffd5b50505050505f80516020620055118339815191526001600160a01b03166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562001d22575f80fd5b505af115801562001d35573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062005511833981519152925063ca669fa791506024015f604051808303815f87803b15801562001d8a575f80fd5b505af115801562001d9d573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562001def575f80fd5b505af115801562001e02573d5f803e3d5ffd5b50506023546040516303223eab60e11b81526001600160a01b0390911660048201525f805160206200551183398151915292506306447d5691506024015f604051808303815f87803b15801562001e57575f80fd5b505af115801562001e6a573d5f803e3d5ffd5b5050604051630618f58760e51b81525f8051602062005511833981519152925063c31eb0e0915062001ea89063012f773760e11b90600401620040f7565b5f604051808303815f87803b15801562001ec0575f80fd5b505af115801562001ed3573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562001f2e575f80fd5b505af115801562001f41573d5f803e3d5ffd5b50506022546040516303223eab60e11b81526001600160a01b0390911660048201525f805160206200551183398151915293506306447d56925060240190505f604051808303815f87803b15801562001f98575f80fd5b505af115801562001fab573d5f803e3d5ffd5b5050604051630618f58760e51b81525f8051602062005511833981519152925063c31eb0e0915062001fe99063012f773760e11b90600401620040f7565b5f604051808303815f87803b15801562002001575f80fd5b505af115801562002014573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562002066575f80fd5b505af115801562002079573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062005511833981519152925063ca669fa791506024015f604051808303815f87803b158015620020ce575f80fd5b505af1158015620020e1573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562002133575f80fd5b505af115801562002146573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620021a1575f80fd5b505af1158015620021b4573d5f803e3d5ffd5b50505050505f805160206200553183398151915260016040516200081e919060408082526010908201526f436f6e74726163742050617573696e6760801b6060820152901515602082015260800190565b6060601a805480602002602001604051908101604052809291908181526020015f905b8282101562001396578382905f5260205f2001805462002248906200410c565b80601f016020809104026020016040519081016040528092919081815260200182805462002276906200410c565b8015620022c55780601f106200229b57610100808354040283529160200191620022c5565b820191905f5260205f20905b815481529060010190602001808311620022a757829003601f168201915b50505050508152602001906001019062002228565b6060601d805480602002602001604051908101604052809291908181526020015f905b8282101562001396575f8481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620023a657602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620023675790505b50505050508152505081526020019060010190620022fd565b6022546040516303223eab60e11b81526001600160a01b0390911660048201525f8051602062005511833981519152906306447d56906024015f604051808303815f87803b15801562002410575f80fd5b505af115801562002423573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db06706f05b59d3b200006040518263ffffffff1660e01b81526004015f604051808303818588803b1580156200247e575f80fd5b505af115801562002491573d5f803e3d5ffd5b5050505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670429d069189e00006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620024ed575f80fd5b505af115801562002500573d5f803e3d5ffd5b5050505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db06702c68af0bb1400006040518263ffffffff1660e01b81526004015f604051808303818588803b1580156200255c575f80fd5b505af11580156200256f573d5f803e3d5ffd5b5050601f5460225460405163fc7e286d60e01b81526001600160a01b039182166004820152620025b3955061010090920416925063fc7e286d91506024016200115d565b601f5460225460405163394e1f0760e11b81526001600160a01b039182166004820152620026379261010090049091169063729c3e0e90602401602060405180830381865afa15801562002609573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200262f9190620040df565b600362003cd9565b620026bb601f60019054906101000a90046001600160a01b03166001600160a01b03166378dee4176040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200268d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620026b39190620040df565b600162003cd9565b60408051818152601b918101919091527f4d756c7469706c65204465706f736974732053616d65205573657200000000006060820152600160208201525f8051602062005531833981519152906080016200081e565b6060601c805480602002602001604051908101604052809291908181526020015f905b8282101562001396575f8481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620027dd57602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116200279e5790505b5050505050815250508152602001906001019062002734565b60606019805480602002602001604051908101604052809291908181526020015f905b8282101562001396578382905f5260205f2001805462002839906200410c565b80601f016020809104026020016040519081016040528092919081815260200182805462002867906200410c565b8015620028b65780601f106200288c57610100808354040283529160200191620028b6565b820191905f5260205f20905b8154815290600101906020018083116200289857829003601f168201915b50505050508152602001906001019062002819565b62002921601f60019054906101000a90046001600160a01b03166001600160a01b03166378dee4176040518163ffffffff1660e01b8152600401602060405180830381865afa158015620007af573d5f803e3d5ffd5b62002977601f60019054906101000a90046001600160a01b03166001600160a01b0316637d8820976040518163ffffffff1660e01b8152600401602060405180830381865afa158015620007af573d5f803e3d5ffd5b6022546040516303223eab60e11b81526001600160a01b0390911660048201525f8051602062005511833981519152906306447d56906024015f604051808303815f87803b158015620029c8575f80fd5b505af1158015620029db573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562002a36575f80fd5b505af115801562002a49573d5f803e3d5ffd5b50505050505f80516020620055118339815191526001600160a01b03166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562002a95575f80fd5b505af115801562002aa8573d5f803e3d5ffd5b5050505062002b02601f60019054906101000a90046001600160a01b03166001600160a01b03166378dee4176040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200268d573d5f803e3d5ffd5b62002b58601f60019054906101000a90046001600160a01b03166001600160a01b0316637d8820976040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001179573d5f803e3d5ffd5b6023546040516303223eab60e11b81526001600160a01b0390911660048201525f8051602062005511833981519152906306447d56906024015f604051808303815f87803b15801562002ba9575f80fd5b505af115801562002bbc573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562002c17575f80fd5b505af115801562002c2a573d5f803e3d5ffd5b50505050505f80516020620055118339815191526001600160a01b03166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562002c76575f80fd5b505af115801562002c89573d5f803e3d5ffd5b5050505062002d11601f60019054906101000a90046001600160a01b03166001600160a01b03166378dee4176040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002ce3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002d099190620040df565b600262003cd9565b62002da8601f60019054906101000a90046001600160a01b03166001600160a01b0316637d8820976040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002d67573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002d8d9190620040df565b62002da2670de0b6b3a764000060026200415c565b62003cd9565b60408051818152601391810191909152725374617469737469637320547261636b696e6760681b6060820152600160208201525f8051602062005531833981519152906080015b60405180910390a1565b6008545f9060ff161562002e0d5750600190565b604051630667f9d760e41b81525f8051602062005511833981519152600482018190526519985a5b195960d21b60248301525f9163667f9d7090604401602060405180830381865afa15801562002e66573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002e8c9190620040df565b1415905090565b6022546040516303223eab60e11b81526001600160a01b0390911660048201525f8051602062005511833981519152906306447d56906024015f604051808303815f87803b15801562002ee4575f80fd5b505af115801562002ef7573d5f803e3d5ffd5b5050604051630618f58760e51b81525f8051602062005511833981519152925063c31eb0e0915062002f35906315f675fd60e01b90600401620040f7565b5f604051808303815f87803b15801562002f4d575f80fd5b505af115801562002f60573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db05f6040518263ffffffff1660e01b81526004015f604051808303818588803b15801562002fb3575f80fd5b505af115801562002fc6573d5f803e3d5ffd5b50505050505f80516020620055118339815191526001600160a01b031663e5d6bf026301e133804262002ffa91906200409b565b620030079060016200409b565b6040518263ffffffff1660e01b81526004016200302691815260200190565b5f604051808303815f87803b1580156200303e575f80fd5b505af115801562003051573d5f803e3d5ffd5b5050604051630618f58760e51b81525f8051602062005511833981519152925063c31eb0e091506200308f9063e68effe160e01b90600401620040f7565b5f604051808303815f87803b158015620030a7575f80fd5b505af1158015620030ba573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156200310c575f80fd5b505af11580156200311f573d5f803e3d5ffd5b505060408051818152600d918101919091526c437573746f6d204572726f727360981b6060820152600160208201525f8051602062005531833981519152925060800190506200081e565b6200317462000e9d565b6200317e620039f9565b620031886200321c565b6200319262000468565b6200319c6200158f565b620031a662002e93565b620031b062001a2f565b620031ba620028cb565b620031c46200139f565b620031ce62000ae7565b6040805181815260159181019190915274416c6c20536563757269747920466561747572657360581b6060820152600160208201525f80516020620055318339815191529060800162002def565b60225460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620055118339815191529063ca669fa7906024015f604051808303815f87803b1580156200326d575f80fd5b505af115801562003280573d5f803e3d5ffd5b5050604051630618f58760e51b81525f8051602062005511833981519152925063c31eb0e09150620032be90631a93c53360e11b90600401620040f7565b5f604051808303815f87803b158015620032d6575f80fd5b505af1158015620032e9573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156200333b575f80fd5b505af11580156200334e573d5f803e3d5ffd5b505060225460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062005511833981519152925063ca669fa791506024015f604051808303815f87803b158015620033a3575f80fd5b505af1158015620033b6573d5f803e3d5ffd5b5050604051630618f58760e51b81525f8051602062005511833981519152925063c31eb0e09150620033f490631a93c53360e11b90600401620040f7565b5f604051808303815f87803b1580156200340c575f80fd5b505af11580156200341f573d5f803e3d5ffd5b5050601f546040516314671be760e31b8152600560048201526101009091046001600160a01b0316925063a338df3891506024015f604051808303815f87803b1580156200346b575f80fd5b505af11580156200347e573d5f803e3d5ffd5b505060215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062005511833981519152925063ca669fa791506024015f604051808303815f87803b158015620034d3575f80fd5b505af1158015620034e6573d5f803e3d5ffd5b5050604051630618f58760e51b81525f8051602062005511833981519152925063c31eb0e091506200352490631a93c53360e11b90600401620040f7565b5f604051808303815f87803b1580156200353c575f80fd5b505af11580156200354f573d5f803e3d5ffd5b5050601f5461010090046001600160a01b0316915063d9c5e6d790506200357b6301e13380426200409b565b6040518263ffffffff1660e01b81526004016200359a91815260200190565b5f604051808303815f87803b158015620035b2575f80fd5b505af1158015620035c5573d5f803e3d5ffd5b505060408051818152600f918101919091526e41636365737320436f6e74726f6c7360881b6060820152600160208201525f80516020620055318339815191529250608001905062002def565b606060158054806020026020016040519081016040528092919081815260200182805480156200124d57602002820191905f5260205f209081546001600160a01b031681526001909101906020018083116200122e575050505050905090565b6022546040516303223eab60e11b81526001600160a01b0390911660048201525f8051602062005511833981519152906306447d56906024015f604051808303815f87803b158015620036c3575f80fd5b505af1158015620036d6573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562003731575f80fd5b505af115801562003744573d5f803e3d5ffd5b5050601f5460225460405163fc7e286d60e01b81526001600160a01b03918216600482015262003788955061010090920416925063fc7e286d91506024016200115d565b620037de601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001179573d5f803e3d5ffd5b5f805160206200551183398151915263e5d6bf02620038026301e13380426200409b565b6200380f9060016200409b565b6040518263ffffffff1660e01b81526004016200382e91815260200190565b5f604051808303815f87803b15801562003846575f80fd5b505af115801562003859573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015620038ab575f80fd5b505af1158015620038be573d5f803e3d5ffd5b5050601f5460225460405163fc7e286d60e01b81526001600160a01b03918216600482015262003901945061010090920416915063fc7e286d9060240162000793565b6022546200392f906001600160a01b03163162002da2670de0b6b3a7640000678ac7230489e8000062004146565b60408051818152601b918101919091527f46756c6c204465706f736974205769746864726177204379636c6500000000006060820152600160208201525f8051602062005531833981519152906080016200081e565b6200398f62003672565b62003999620023bf565b620039a362001c04565b604080518181526018918101919091527f416c6c20496e746567726174696f6e20466561747572657300000000000000006060820152600160208201525f80516020620055318339815191529060800162002def565b6022546040516303223eab60e11b81526001600160a01b0390911660048201525f8051602062005511833981519152906306447d56906024015f604051808303815f87803b15801562003a4a575f80fd5b505af115801562003a5d573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562003ab8575f80fd5b505af115801562003acb573d5f803e3d5ffd5b50505050505f80516020620055118339815191526001600160a01b031663e5d6bf026301e133804262003aff91906200409b565b62003b0c9060016200409b565b6040518263ffffffff1660e01b815260040162003b2b91815260200190565b5f604051808303815f87803b15801562003b43575f80fd5b505af115801562003b56573d5f803e3d5ffd5b5050604051630618f58760e51b81525f8051602062005511833981519152925063c31eb0e0915062003b949063012f773760e11b90600401620040f7565b5f604051808303815f87803b15801562003bac575f80fd5b505af115801562003bbf573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562003c11575f80fd5b505af115801562003c24573d5f803e3d5ffd5b505060408051818152601591810191909152742932b2b73a3930b731bc90283937ba32b1ba34b7b760591b6060820152600160208201525f8051602062005531833981519152925060800190506200081e565b8062003cd657604051630c9fd58160e01b815281151560048201525f805160206200551183398151915290630c9fd581906024015b5f6040518083038186803b15801562003cc3575f80fd5b505afa15801562000e96573d5f803e3d5ffd5b50565b80821462003d3f5760405163260a5b1560e21b815260048101839052602481018290525f8051602062005511833981519152906398296c54906044015f6040518083038186803b15801562003d2c575f80fd5b505afa15801562001bfc573d5f803e3d5ffd5b5050565b801562003cd65760405163a598288560e01b815281151560048201525f80516020620055118339815191529063a59828859060240162003cac565b61139a806200417783390190565b602080825282518282018190525f9190848201906040850190845b8181101562003dce5783516001600160a01b03168352928401929184019160010162003da7565b50909695505050505050565b5f81518084525f5b8181101562003e005760208185018101518683018201520162003de2565b505f602082860101526020601f19601f83011685010191505092915050565b602080825282518282018190525f919060409081850190600581811b8701840188860187805b8581101562003ed457603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562003ebd57605f1989850301835262003eaa84865162003dda565b948e01949350918d019160010162003e8b565b505050978a01979450509188019160010162003e45565b50919a9950505050505050505050565b5f8151808452602080850194508084015f5b8381101562003f1e5781516001600160e01b0319168752958201959082019060010162003ef6565b509495945050505050565b5f6020808301818452808551808352604092508286019150828160051b8701018488015f5b8381101562003fa457888303603f190185528151805187855262003f758886018262003dda565b91890151858303868b015291905062003f8f818362003ee4565b96890196945050509086019060010162003f4e565b509098975050505050505050565b5f602080830181845280855180835260408601915060408160051b87010192508387015f5b828110156200400957603f1988860301845262003ff685835162003dda565b9450928501929085019060010162003fd7565b5092979650505050505050565b5f6020808301818452808551808352604092508286019150828160051b8701018488015f5b8381101562003fa457888303603f19018552815180516001600160a01b03168452870151878401879052620040738785018262003ee4565b95880195935050908601906001016200403b565b634e487b7160e01b5f52601160045260245ffd5b80820180821115620040b157620040b162004087565b92915050565b5f60208284031215620040c8575f80fd5b81518015158114620040d8575f80fd5b9392505050565b5f60208284031215620040f0575f80fd5b5051919050565b6001600160e01b031991909116815260200190565b600181811c908216806200412157607f821691505b6020821081036200414057634e487b7160e01b5f52602260045260245ffd5b50919050565b81810381811115620040b157620040b162004087565b8082028115828204841417620040b157620040b16200408756fe608060405260405161139a38038061139a833981016040819052610022916100c4565b80428111610042576040516251339b60e31b815260040160405180910390fd5b6100506309660180426100db565b8111156100705760405163fce05cc760e01b815260040160405180910390fd5b5f80546001600160a01b03191633908117825560018490556002805460ff191690556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35050610100565b5f602082840312156100d4575f80fd5b5051919050565b808201808211156100fa57634e487b7160e01b5f52601160045260245ffd5b92915050565b61128d8061010d5f395ff3fe608060405260043610610207575f3560e01c80637cf4309011610117578063b488355f1161009f578063dac6270d1161006e578063dac6270d14610603578063dfe6b5d614610617578063f2fde38b14610661578063fa78668f14610680578063fc7e286d1461069757610259565b8063b488355f14610599578063bc394350146105b8578063d0e30db0146105dc578063d9c5e6d7146105e457610259565b8063853828b6116100e6578063853828b6146104dd5780638da5cb5b146104f157806399b20eaf14610527578063a338df381461053b578063b3a7834d1461055a57610259565b80637cf430901461048c5780637d882097146104a05780638380edb7146104b55780638456cb59146104c957610259565b80633ccfd60b1161019a5780635c975abb116101695780635c975abb1461040a578063602bc62b146104235780636046462714610437578063729c3e0e1461044c57806378dee4171461047757610259565b80633ccfd60b146103b05780633f4ba83a146103c45780633ff03207146103d85780634c34a982146103ee57610259565b80631ea30fef116101d65780631ea30fef14610341578063240be9441461035b578063251c1aa3146103865780632bf6c5bc1461039b57610259565b80630905f560146102b25780630945d42c146102e757806312065fe01461030657806319262d301461032257610259565b3661025957306001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b158015610245575f80fd5b505af1158015610257573d5f803e3d5ffd5b005b60405162461bcd60e51b815260206004820152602360248201527f506967677942616e6b3a204469726563742063616c6c73206e6f7420616c6c6f6044820152621dd95960ea1b60648201526084015b60405180910390fd5b3480156102bd575f80fd5b506002546102d290600160a81b900460ff1681565b60405190151581526020015b60405180910390f35b3480156102f2575f80fd5b506102576103013660046111b2565b6106c2565b348015610311575f80fd5b50475b6040519081526020016102de565b34801561032d575f80fd5b506102d261033c3660046111c9565b6107a7565b34801561034c575f80fd5b5061031466038d7ea4c6800081565b348015610366575f80fd5b506103146103753660046111c9565b60056020525f908152604090205481565b348015610391575f80fd5b5061031460015481565b3480156103a6575f80fd5b5061031460035481565b3480156103bb575f80fd5b506102576107f9565b3480156103cf575f80fd5b50610257610941565b3480156103e3575f80fd5b506103146201518081565b3480156103f9575f80fd5b50610314683635c9adc5dea0000081565b348015610415575f80fd5b506002546102d29060ff1681565b34801561042e575f80fd5b50600154610314565b348015610442575f80fd5b5061031460085481565b348015610457575f80fd5b506103146104663660046111c9565b60066020525f908152604090205481565b348015610482575f80fd5b5061031460095481565b348015610497575f80fd5b506103146109f7565b3480156104ab575f80fd5b5061031460075481565b3480156104c0575f80fd5b506102d2610a31565b3480156104d4575f80fd5b50610257610a4f565b3480156104e8575f80fd5b50610257610b03565b3480156104fc575f80fd5b505f5461050f906001600160a01b031681565b6040516001600160a01b0390911681526020016102de565b348015610532575f80fd5b50610257610c77565b348015610546575f80fd5b506102576105553660046111c9565b610ce8565b348015610565575f80fd5b506105796105743660046111c9565b610dbb565b6040805194855260208501939093529183015260608201526080016102de565b3480156105a4575f80fd5b506103146105b33660046111c9565b610e14565b3480156105c3575f80fd5b5060025461050f9061010090046001600160a01b031681565b610257610e5e565b3480156105ef575f80fd5b506102576105fe3660046111b2565b610fda565b34801561060e575f80fd5b506103146110cc565b348015610622575f80fd5b5060075460085460095460025460408051948552602085019390935291830152600160a81b900460ff161515606082015247608082015260a0016102de565b34801561066c575f80fd5b5061025761067b3660046111c9565b6110e9565b34801561068b575f80fd5b50610314630966018081565b3480156106a2575f80fd5b506103146106b13660046111c9565b60046020525f908152604090205481565b5f546001600160a01b031633146106eb5760405162461bcd60e51b81526004016102a9906111ef565b5f546001600160a01b0316331461071557604051631a93c53360e11b815260040160405180910390fd5b66038d7ea4c6800081101561073d576040516345556f1f60e01b815260040160405180910390fd5b60075481101561075f576040516251339b60e31b815260040160405180910390fd5b60408051683635c9adc5dea0000080825260208201849052917f88d01455e50f0b0da01a455a4547346410a2fd66ffdc7241a4c280d6089c4257910160405180910390a15050565b6002545f9060ff161580156107d257506001600160a01b0382165f9081526004602052604090205415155b80156107f35750600154421015806107f35750600254600160a81b900460ff165b92915050565b60025460ff161561081d5760405163012f773760e11b815260040160405180910390fd5b5f546001600160a01b03163314610847576040516363fc43ab60e11b815260040160405180910390fd5b60015442101561086a57604051632d4f9b0560e01b815260040160405180910390fd5b475f81900361088c5760405163870817fd60e01b815260040160405180910390fd5b8060085f82825461089d9190611231565b909155505060405181815233907f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d59060200160405180910390a26040515f90339083908381818185875af1925050503d805f8114610916576040519150601f19603f3d011682016040523d82523d5f602084013e61091b565b606091505b505090508061093d576040516340d812e160e01b815260040160405180910390fd5b5050565b5f546001600160a01b0316331461096a5760405162461bcd60e51b81526004016102a9906111ef565b5f546001600160a01b0316331461099457604051631a93c53360e11b815260040160405180910390fd5b60025460ff166109b757604051631a93c53360e11b815260040160405180910390fd5b6002805460ff191690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6002545f90600160a81b900460ff161580610a1457506003544210155b15610a1e57505f90565b42600354610a2c9190611244565b905090565b5f60015442101580610a2c575050600254600160a81b900460ff1690565b5f546001600160a01b03163314610a785760405162461bcd60e51b81526004016102a9906111ef565b5f546001600160a01b03163314610aa257604051631a93c53360e11b815260040160405180910390fd5b60025460ff1615610ac65760405163012f773760e11b815260040160405180910390fd5b6002805460ff191660011790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016109ed565b60025460ff1615610b275760405163012f773760e11b815260040160405180910390fd5b600154421015610b4a57604051632d4f9b0560e01b815260040160405180910390fd5b335f9081526004602052604081205490819003610b7a5760405163e68effe160e01b815260040160405180910390fd5b335f90815260046020526040812081905560088054839290610b9d908490611231565b909155505060405181815233907f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d59060200160405180910390a26040515f90339083908381818185875af1925050503d805f8114610c16576040519150601f19603f3d011682016040523d82523d5f602084013e610c1b565b606091505b5050905080610c3d576040516340d812e160e01b815260040160405180910390fd5b60405182815233907f23d6711a1d031134a36921253c75aa59e967d38e369ac625992824315e204f20906020015b60405180910390a25050565b60025461010090046001600160a01b03163314610ca757604051631a93c53360e11b815260040160405180910390fd5b6002805460ff60a81b191690555f6003556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020016109ed565b5f546001600160a01b03163314610d115760405162461bcd60e51b81526004016102a9906111ef565b5f546001600160a01b03163314610d3b57604051631a93c53360e11b815260040160405180910390fd5b6001600160a01b038116610d6257604051631a93c53360e11b815260040160405180910390fd5b600280546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907fc0cf06c8aac34052209a818a44d0ad3d4ed78bde060b69f7a4ce24560ad51068905f90a35050565b6001600160a01b0381165f90815260046020908152604080832054600583528184205460069093529083205460015491939091421015610e0a5742600154610e039190611244565b9050610e0d565b505f5b9193509193565b6001600160a01b0381165f90815260046020526040812054683635c9adc5dea000008110610e4457505f92915050565b610e5781683635c9adc5dea00000611244565b9392505050565b60025460ff1615610e825760405163012f773760e11b815260040160405180910390fd5b5f3411610eca5760405162461bcd60e51b81526020600482015260166024820152754d757374206465706f73697420736f6d657468696e6760501b60448201526064016102a9565b66038d7ea4c68000341015610f155760405162461bcd60e51b815260206004820152601160248201527011195c1bdcda5d081d1bdbc81cdb585b1b607a1b60448201526064016102a9565b335f9081526004602052604081205490610f2f3483611231565b9050683635c9adc5dea00000811115610f805760405162461bcd60e51b8152602060048201526013602482015272088cae0dee6d2e840caf0c6cacac8e640dac2f606b1b60448201526064016102a9565b335f90815260046020526040812082905560078054349290610fa3908490611231565b909155505060405134815233907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c490602001610c6b565b60025461010090046001600160a01b0316331461100a57604051631a93c53360e11b815260040160405180910390fd5b60025460ff161561102e5760405163012f773760e11b815260040160405180910390fd5b8042811161104e576040516251339b60e31b815260040160405180910390fd5b61105c630966018042611231565b81111561107c5760405163fce05cc760e01b815260040160405180910390fd5b60028054600384905560ff60ff60a81b0119166001600160a81b0117905560405182815233907f16ea6c4a0ff7e3a4c096560a5a71632e344907cd03af0f6e655b409a61d549ef90602001610c6b565b5f60015442106110db57505f90565b42600154610a2c9190611244565b5f546001600160a01b031633146111125760405162461bcd60e51b81526004016102a9906111ef565b5f546001600160a01b0316331461113c57604051631a93c53360e11b815260040160405180910390fd5b6001600160a01b03811661116357604051631a93c53360e11b815260040160405180910390fd5b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156111c2575f80fd5b5035919050565b5f602082840312156111d9575f80fd5b81356001600160a01b0381168114610e57575f80fd5b6020808252601490820152732834b3b3bca130b7359d102737ba1037bbb732b960611b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156107f3576107f361121d565b818103818111156107f3576107f361121d56fea2646970667358221220b40737dd7e59556a572d59ae42ceb25b10310ea5ddcf3f662a816b1b1e7cc06a64736f6c634300081400330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d455e322fddc6a66ebfe6e627a9a6cf7ff47ee8e427f8db45ded2a19cec3dd7f0a264697066735822122048df337d6f9984c4ac0541c0402df44a95afccf3103488ee6b5bac05e095f60964736f6c63430008140033","sourceMap":"231:9243:21:-:0;;;3160:44:2;;;-1:-1:-1;;3160:44:2;;;3200:4;3160:44;;;;;;1065:26:13;;;;;;;;;;308:33:21;;;-1:-1:-1;;;;;;308:33:21;;;;;;;;347:36;;;;;381:1;347:36;;;389:33;;;;;420:1;389:33;;;428;;;;;;459:1;428:33;;;231:9243;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801562000010575f80fd5b506004361062000234575f3560e01c80638eb4f4341162000137578063ba414fa611620000b7578063e20c9f711162000083578063e20c9f711462000432578063e39bbddd146200043c578063ea673c851462000446578063eb7aabd41462000450578063fa7626d4146200045a575f80fd5b8063ba414fa614620003f9578063d43f0b3f1462000414578063db086b7d146200041e578063dc73d4941462000428575f80fd5b8063b0464fdc1162000103578063b0464fdc14620003ae578063b5508aa914620003b8578063b5678a2114620003c2578063b7d5d4c014620003cc578063b9edb1af14620003e5575f80fd5b80638eb4f4341462000367578063916a17c61462000377578063ac1717b01462000390578063aff797aa14620003a4575f80fd5b80633e5e3c2311620001c357806366d9a9a0116200018f57806366d9a9a0146200030d5780636f911760146200032657806376013534146200033057806385226c81146200033a5780638da5cb5b1462000353575f80fd5b80633e5e3c2314620002b15780633f7286f414620002bb578063413d9c3a14620002c5578063452a932014620002e0575f80fd5b80631ed7831c11620002035780631ed7831c14620002625780632ade38801462000284578063349c8be6146200029d578063385e533014620002a7575f80fd5b806307c8025714620002385780630a9254e4146200024457806315de0567146200024e578063167c14901462000258575b5f80fd5b6200024262000468565b005b6200024262000886565b6200024262000ae7565b6200024262000e9d565b6200026c620011f5565b6040516200027b919062003d8c565b60405180910390f35b6200028e62001257565b6040516200027b919062003e1f565b620002426200139f565b620002426200158f565b6200026c620017ff565b6200026c6200185f565b620002d16301e1338081565b6040519081526020016200027b565b602154620002f4906001600160a01b031681565b6040516001600160a01b0390911681526020016200027b565b62000317620018bf565b6040516200027b919062003f29565b6200024262001a2f565b6200024262001c04565b6200034462002205565b6040516200027b919062003fb2565b602054620002f4906001600160a01b031681565b620002d1670de0b6b3a764000081565b62000381620022da565b6040516200027b919062004016565b602254620002f4906001600160a01b031681565b62000242620023bf565b6200038162002711565b62000344620027f6565b62000242620028cb565b601f54620002f49061010090046001600160a01b031681565b602354620002f4906001600160a01b031681565b6200040362002df9565b60405190151581526020016200027b565b6200024262002e93565b620002426200316a565b620002426200321c565b6200026c62003612565b6200024262003672565b6200024262003985565b62000242620039f9565b601f54620004039060ff1681565b60215460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620055118339815191529063ca669fa7906024015f604051808303815f87803b158015620004b9575f80fd5b505af1158015620004cc573d5f803e3d5ffd5b5050601f5461010090046001600160a01b0316915063d9c5e6d79050620004f74262278d006200409b565b6040518263ffffffff1660e01b81526004016200051691815260200190565b5f604051808303815f87803b1580156200052e575f80fd5b505af115801562000541573d5f803e3d5ffd5b50505050620005c7601f60019054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200059b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620005c19190620040b7565b62003c77565b6200061d601f60019054906101000a90046001600160a01b03166001600160a01b0316630905f5606040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200059b573d5f803e3d5ffd5b6022546040516303223eab60e11b81526001600160a01b0390911660048201525f8051602062005511833981519152906306447d56906024015f604051808303815f87803b1580156200066e575f80fd5b505af115801562000681573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620006dc575f80fd5b505af1158015620006ef573d5f803e3d5ffd5b5050505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000742575f80fd5b505af115801562000755573d5f803e3d5ffd5b5050601f5460225460405163fc7e286d60e01b81526001600160a01b039182166004820152620007dc945061010090920416915063fc7e286d906024015b602060405180830381865afa158015620007af573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620007d59190620040df565b5f62003cd9565b60408051818152600e918101919091526d456d657267656e6379204d6f646560901b6060820152600160208201525f8051602062005531833981519152906080015b60405180910390a15f80516020620055118339815191526001600160a01b03166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156200086d575f80fd5b505af115801562000880573d5f803e3d5ffd5b50505050565b60205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620055118339815191529063ca669fa7906024015f604051808303815f87803b158015620008d7575f80fd5b505af1158015620008ea573d5f803e3d5ffd5b505050506301e13380426200090091906200409b565b6040516200090e9062003d7e565b908152602001604051809103905ff0801580156200092e573d5f803e3d5ffd5b50601f8054610100600160a81b0319166101006001600160a01b039384160217905560205460405163ca669fa760e01b8152911660048201525f80516020620055118339815191529063ca669fa7906024015f604051808303815f87803b15801562000998575f80fd5b505af1158015620009ab573d5f803e3d5ffd5b5050601f546021546040516314671be760e31b81526001600160a01b03918216600482015261010090920416925063a338df3891506024015f604051808303815f87803b158015620009fb575f80fd5b505af115801562000a0e573d5f803e3d5ffd5b505060225460405163c88a5e6d60e01b81526001600160a01b039091166004820152678ac7230489e8000060248201525f8051602062005511833981519152925063c88a5e6d91506044015f604051808303815f87803b15801562000a71575f80fd5b505af115801562000a84573d5f803e3d5ffd5b505060235460405163c88a5e6d60e01b81526001600160a01b039091166004820152678ac7230489e8000060248201525f8051602062005511833981519152925063c88a5e6d91506044015f604051808303815f87803b1580156200086d575f80fd5b6022546040516303223eab60e11b81526001600160a01b0390911660048201525f8051602062005511833981519152906306447d56906024015f604051808303815f87803b15801562000b38575f80fd5b505af115801562000b4b573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f604483015260648201525f8051602062005511833981519152925063491cc7c291506084015f604051808303815f87803b15801562000ba8575f80fd5b505af115801562000bbb573d5f803e3d5ffd5b5050602254604051670de0b6b3a764000081526001600160a01b0390911692507f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4915060200160405180910390a2601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562000c60575f80fd5b505af115801562000c73573d5f803e3d5ffd5b505060405163248e63e160e11b8152600160048201819052602482018190525f60448301526064820152600593505f8051602062005511833981519152925063491cc7c291506084015f604051808303815f87803b15801562000cd4575f80fd5b505af115801562000ce7573d5f803e3d5ffd5b50506020546040516001600160a01b03858116945090911691507f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a360205460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620055118339815191529063ca669fa7906024015f604051808303815f87803b15801562000d77575f80fd5b505af115801562000d8a573d5f803e3d5ffd5b5050601f5460405163f2fde38b60e01b81526001600160a01b038581166004830152610100909204909116925063f2fde38b91506024015f604051808303815f87803b15801562000dd9575f80fd5b505af115801562000dec573d5f803e3d5ffd5b505060408051818152600f918101919091526e4576656e7420456d697373696f6e7360881b6060820152600160208201525f8051602062005531833981519152925060800190505b60405180910390a15f80516020620055118339815191526001600160a01b03166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562000e83575f80fd5b505af115801562000e96573d5f803e3d5ffd5b5050505050565b6022546040516303223eab60e11b81526001600160a01b0390911660048201525f8051602062005511833981519152906306447d56906024015f604051808303815f87803b15801562000eee575f80fd5b505af115801562000f01573d5f803e3d5ffd5b5050604051630618f58760e51b81525f8051602062005511833981519152925063c31eb0e0915062000f3f906345556f1f60e01b90600401620040f7565b5f604051808303815f87803b15801562000f57575f80fd5b505af115801562000f6a573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0655af3107a40006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562000fc3575f80fd5b505af115801562000fd6573d5f803e3d5ffd5b5050604051630618f58760e51b81525f8051602062005511833981519152935063c31eb0e092506200101591506312e10f2760e01b90600401620040f7565b5f604051808303815f87803b1580156200102d575f80fd5b505af115801562001040573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0686c6b935b8bbd4000006040518263ffffffff1660e01b81526004015f604051808303818588803b1580156200109c575f80fd5b505af1158015620010af573d5f803e3d5ffd5b5050505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b1580156200110b575f80fd5b505af11580156200111e573d5f803e3d5ffd5b5050601f5460225460405163fc7e286d60e01b81526001600160a01b039182166004820152620011ae955061010090920416925063fc7e286d91506024015b602060405180830381865afa15801562001179573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200119f9190620040df565b670de0b6b3a764000062003cd9565b60408051818152600e918101919091526d4465706f736974204c696d69747360901b6060820152600160208201525f8051602062005531833981519152906080016200081e565b606060168054806020026020016040519081016040528092919081815260200182805480156200124d57602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116200122e575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020015f905b8282101562001396575f84815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156200137e578382905f5260205f20018054620012ec906200410c565b80601f01602080910402602001604051908101604052809291908181526020018280546200131a906200410c565b8015620013695780601f106200133f5761010080835404028352916020019162001369565b820191905f5260205f20905b8154815290600101906020018083116200134b57829003601f168201915b505050505081526020019060010190620012cc565b5050505081525050815260200190600101906200127a565b50505050905090565b601f5460225460405163019262d360e41b81526001600160a01b03918216600482015262001421926101009004909116906319262d3090602401602060405180830381865afa158015620013f5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200141b9190620040b7565b62003d43565b601f5460225460405163b488355f60e01b81526001600160a01b039182166004820152620014ad9261010090049091169063b488355f90602401602060405180830381865afa15801562001477573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200149d9190620040df565b683635c9adc5dea0000062003cd9565b5f601f60019054906101000a90046001600160a01b03166001600160a01b031663dac6270d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001500573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620015269190620040df565b9050620015355f821162003c77565b620015476301e1338082111562003c77565b60408051818152600e818301526d566965772046756e6374696f6e7360901b60608201526001602082015290515f80516020620055318339815191529181900360800190a150565b6022546040516303223eab60e11b81526001600160a01b0390911660048201525f8051602062005511833981519152906306447d56906024015f604051808303815f87803b158015620015e0575f80fd5b505af1158015620015f3573d5f803e3d5ffd5b5050601f546040515f93506101009091046001600160a01b03169150670de0b6b3a7640000908381818185875af1925050503d805f811462001651576040519150601f19603f3d011682016040523d82523d5f602084013e62001656565b606091505b50509050620016658162003c77565b601f5460225460405163fc7e286d60e01b81526001600160a01b039182166004820152620016a59261010090049091169063fc7e286d906024016200115d565b60405163f28dceb360e01b815260206004820152602360248201527f506967677942616e6b3a204469726563742063616c6c73206e6f7420616c6c6f6044820152621dd95960ea1b60648201525f80516020620055118339815191529063f28dceb3906084015f604051808303815f87803b15801562001723575f80fd5b505af115801562001736573d5f803e3d5ffd5b5050601f54604051723ab732bc3832b1ba32b210333ab731ba34b7b760691b81526101009091046001600160a01b0316925060130190505f604051808303815f865af19150503d805f8114620017a8576040519150601f19603f3d011682016040523d82523d5f602084013e620017ad565b606091505b5050604080518181526014918101919091527344697265637420455448205472616e736665727360601b6060820152600160208201529091505f80516020620055318339815191529060800162000e34565b606060188054806020026020016040519081016040528092919081815260200182805480156200124d57602002820191905f5260205f209081546001600160a01b031681526001909101906020018083116200122e575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156200124d57602002820191905f5260205f209081546001600160a01b031681526001909101906020018083116200122e575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020015f905b8282101562001396578382905f5260205f2090600202016040518060400160405290815f8201805462001915906200410c565b80601f016020809104026020016040519081016040528092919081815260200182805462001943906200410c565b8015620019925780601f10620019685761010080835404028352916020019162001992565b820191905f5260205f20905b8154815290600101906020018083116200197457829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801562001a1657602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620019d75790505b50505050508152505081526020019060010190620018e2565b6022546040516303223eab60e11b81526001600160a01b0390911660048201525f8051602062005511833981519152906306447d56906024015f604051808303815f87803b15801562001a80575f80fd5b505af115801562001a93573d5f803e3d5ffd5b505050505f5a9050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562001af2575f80fd5b505af115801562001b05573d5f803e3d5ffd5b50505050505f5a62001b18908362004146565b601f5460225460405163fc7e286d60e01b81526001600160a01b03918216600482015292935062001b5a92610100909204169063fc7e286d906024016200115d565b6040805181815260118183015270476173204f7074696d697a6174696f6e7360781b60608201526001602082015290515f80516020620055318339815191529181900360800190a15f80516020620055118339815191526001600160a01b03166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562001be9575f80fd5b505af115801562001bfc573d5f803e3d5ffd5b505050505050565b6022546040516303223eab60e11b81526001600160a01b0390911660048201525f8051602062005511833981519152906306447d56906024015f604051808303815f87803b15801562001c55575f80fd5b505af115801562001c68573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562001cc3575f80fd5b505af115801562001cd6573d5f803e3d5ffd5b50505050505f80516020620055118339815191526001600160a01b03166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562001d22575f80fd5b505af115801562001d35573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062005511833981519152925063ca669fa791506024015f604051808303815f87803b15801562001d8a575f80fd5b505af115801562001d9d573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562001def575f80fd5b505af115801562001e02573d5f803e3d5ffd5b50506023546040516303223eab60e11b81526001600160a01b0390911660048201525f805160206200551183398151915292506306447d5691506024015f604051808303815f87803b15801562001e57575f80fd5b505af115801562001e6a573d5f803e3d5ffd5b5050604051630618f58760e51b81525f8051602062005511833981519152925063c31eb0e0915062001ea89063012f773760e11b90600401620040f7565b5f604051808303815f87803b15801562001ec0575f80fd5b505af115801562001ed3573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562001f2e575f80fd5b505af115801562001f41573d5f803e3d5ffd5b50506022546040516303223eab60e11b81526001600160a01b0390911660048201525f805160206200551183398151915293506306447d56925060240190505f604051808303815f87803b15801562001f98575f80fd5b505af115801562001fab573d5f803e3d5ffd5b5050604051630618f58760e51b81525f8051602062005511833981519152925063c31eb0e0915062001fe99063012f773760e11b90600401620040f7565b5f604051808303815f87803b15801562002001575f80fd5b505af115801562002014573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562002066575f80fd5b505af115801562002079573d5f803e3d5ffd5b505060205460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062005511833981519152925063ca669fa791506024015f604051808303815f87803b158015620020ce575f80fd5b505af1158015620020e1573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633f4ba83a6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562002133575f80fd5b505af115801562002146573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620021a1575f80fd5b505af1158015620021b4573d5f803e3d5ffd5b50505050505f805160206200553183398151915260016040516200081e919060408082526010908201526f436f6e74726163742050617573696e6760801b6060820152901515602082015260800190565b6060601a805480602002602001604051908101604052809291908181526020015f905b8282101562001396578382905f5260205f2001805462002248906200410c565b80601f016020809104026020016040519081016040528092919081815260200182805462002276906200410c565b8015620022c55780601f106200229b57610100808354040283529160200191620022c5565b820191905f5260205f20905b815481529060010190602001808311620022a757829003601f168201915b50505050508152602001906001019062002228565b6060601d805480602002602001604051908101604052809291908181526020015f905b8282101562001396575f8481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620023a657602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620023675790505b50505050508152505081526020019060010190620022fd565b6022546040516303223eab60e11b81526001600160a01b0390911660048201525f8051602062005511833981519152906306447d56906024015f604051808303815f87803b15801562002410575f80fd5b505af115801562002423573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db06706f05b59d3b200006040518263ffffffff1660e01b81526004015f604051808303818588803b1580156200247e575f80fd5b505af115801562002491573d5f803e3d5ffd5b5050505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670429d069189e00006040518263ffffffff1660e01b81526004015f604051808303818588803b158015620024ed575f80fd5b505af115801562002500573d5f803e3d5ffd5b5050505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db06702c68af0bb1400006040518263ffffffff1660e01b81526004015f604051808303818588803b1580156200255c575f80fd5b505af11580156200256f573d5f803e3d5ffd5b5050601f5460225460405163fc7e286d60e01b81526001600160a01b039182166004820152620025b3955061010090920416925063fc7e286d91506024016200115d565b601f5460225460405163394e1f0760e11b81526001600160a01b039182166004820152620026379261010090049091169063729c3e0e90602401602060405180830381865afa15801562002609573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200262f9190620040df565b600362003cd9565b620026bb601f60019054906101000a90046001600160a01b03166001600160a01b03166378dee4176040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200268d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620026b39190620040df565b600162003cd9565b60408051818152601b918101919091527f4d756c7469706c65204465706f736974732053616d65205573657200000000006060820152600160208201525f8051602062005531833981519152906080016200081e565b6060601c805480602002602001604051908101604052809291908181526020015f905b8282101562001396575f8481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620027dd57602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116200279e5790505b5050505050815250508152602001906001019062002734565b60606019805480602002602001604051908101604052809291908181526020015f905b8282101562001396578382905f5260205f2001805462002839906200410c565b80601f016020809104026020016040519081016040528092919081815260200182805462002867906200410c565b8015620028b65780601f106200288c57610100808354040283529160200191620028b6565b820191905f5260205f20905b8154815290600101906020018083116200289857829003601f168201915b50505050508152602001906001019062002819565b62002921601f60019054906101000a90046001600160a01b03166001600160a01b03166378dee4176040518163ffffffff1660e01b8152600401602060405180830381865afa158015620007af573d5f803e3d5ffd5b62002977601f60019054906101000a90046001600160a01b03166001600160a01b0316637d8820976040518163ffffffff1660e01b8152600401602060405180830381865afa158015620007af573d5f803e3d5ffd5b6022546040516303223eab60e11b81526001600160a01b0390911660048201525f8051602062005511833981519152906306447d56906024015f604051808303815f87803b158015620029c8575f80fd5b505af1158015620029db573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562002a36575f80fd5b505af115801562002a49573d5f803e3d5ffd5b50505050505f80516020620055118339815191526001600160a01b03166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562002a95575f80fd5b505af115801562002aa8573d5f803e3d5ffd5b5050505062002b02601f60019054906101000a90046001600160a01b03166001600160a01b03166378dee4176040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200268d573d5f803e3d5ffd5b62002b58601f60019054906101000a90046001600160a01b03166001600160a01b0316637d8820976040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001179573d5f803e3d5ffd5b6023546040516303223eab60e11b81526001600160a01b0390911660048201525f8051602062005511833981519152906306447d56906024015f604051808303815f87803b15801562002ba9575f80fd5b505af115801562002bbc573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562002c17575f80fd5b505af115801562002c2a573d5f803e3d5ffd5b50505050505f80516020620055118339815191526001600160a01b03166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562002c76575f80fd5b505af115801562002c89573d5f803e3d5ffd5b5050505062002d11601f60019054906101000a90046001600160a01b03166001600160a01b03166378dee4176040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002ce3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002d099190620040df565b600262003cd9565b62002da8601f60019054906101000a90046001600160a01b03166001600160a01b0316637d8820976040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002d67573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002d8d9190620040df565b62002da2670de0b6b3a764000060026200415c565b62003cd9565b60408051818152601391810191909152725374617469737469637320547261636b696e6760681b6060820152600160208201525f8051602062005531833981519152906080015b60405180910390a1565b6008545f9060ff161562002e0d5750600190565b604051630667f9d760e41b81525f8051602062005511833981519152600482018190526519985a5b195960d21b60248301525f9163667f9d7090604401602060405180830381865afa15801562002e66573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002e8c9190620040df565b1415905090565b6022546040516303223eab60e11b81526001600160a01b0390911660048201525f8051602062005511833981519152906306447d56906024015f604051808303815f87803b15801562002ee4575f80fd5b505af115801562002ef7573d5f803e3d5ffd5b5050604051630618f58760e51b81525f8051602062005511833981519152925063c31eb0e0915062002f35906315f675fd60e01b90600401620040f7565b5f604051808303815f87803b15801562002f4d575f80fd5b505af115801562002f60573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db05f6040518263ffffffff1660e01b81526004015f604051808303818588803b15801562002fb3575f80fd5b505af115801562002fc6573d5f803e3d5ffd5b50505050505f80516020620055118339815191526001600160a01b031663e5d6bf026301e133804262002ffa91906200409b565b620030079060016200409b565b6040518263ffffffff1660e01b81526004016200302691815260200190565b5f604051808303815f87803b1580156200303e575f80fd5b505af115801562003051573d5f803e3d5ffd5b5050604051630618f58760e51b81525f8051602062005511833981519152925063c31eb0e091506200308f9063e68effe160e01b90600401620040f7565b5f604051808303815f87803b158015620030a7575f80fd5b505af1158015620030ba573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156200310c575f80fd5b505af11580156200311f573d5f803e3d5ffd5b505060408051818152600d918101919091526c437573746f6d204572726f727360981b6060820152600160208201525f8051602062005531833981519152925060800190506200081e565b6200317462000e9d565b6200317e620039f9565b620031886200321c565b6200319262000468565b6200319c6200158f565b620031a662002e93565b620031b062001a2f565b620031ba620028cb565b620031c46200139f565b620031ce62000ae7565b6040805181815260159181019190915274416c6c20536563757269747920466561747572657360581b6060820152600160208201525f80516020620055318339815191529060800162002def565b60225460405163ca669fa760e01b81526001600160a01b0390911660048201525f80516020620055118339815191529063ca669fa7906024015f604051808303815f87803b1580156200326d575f80fd5b505af115801562003280573d5f803e3d5ffd5b5050604051630618f58760e51b81525f8051602062005511833981519152925063c31eb0e09150620032be90631a93c53360e11b90600401620040f7565b5f604051808303815f87803b158015620032d6575f80fd5b505af1158015620032e9573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156200333b575f80fd5b505af11580156200334e573d5f803e3d5ffd5b505060225460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062005511833981519152925063ca669fa791506024015f604051808303815f87803b158015620033a3575f80fd5b505af1158015620033b6573d5f803e3d5ffd5b5050604051630618f58760e51b81525f8051602062005511833981519152925063c31eb0e09150620033f490631a93c53360e11b90600401620040f7565b5f604051808303815f87803b1580156200340c575f80fd5b505af11580156200341f573d5f803e3d5ffd5b5050601f546040516314671be760e31b8152600560048201526101009091046001600160a01b0316925063a338df3891506024015f604051808303815f87803b1580156200346b575f80fd5b505af11580156200347e573d5f803e3d5ffd5b505060215460405163ca669fa760e01b81526001600160a01b0390911660048201525f8051602062005511833981519152925063ca669fa791506024015f604051808303815f87803b158015620034d3575f80fd5b505af1158015620034e6573d5f803e3d5ffd5b5050604051630618f58760e51b81525f8051602062005511833981519152925063c31eb0e091506200352490631a93c53360e11b90600401620040f7565b5f604051808303815f87803b1580156200353c575f80fd5b505af11580156200354f573d5f803e3d5ffd5b5050601f5461010090046001600160a01b0316915063d9c5e6d790506200357b6301e13380426200409b565b6040518263ffffffff1660e01b81526004016200359a91815260200190565b5f604051808303815f87803b158015620035b2575f80fd5b505af1158015620035c5573d5f803e3d5ffd5b505060408051818152600f918101919091526e41636365737320436f6e74726f6c7360881b6060820152600160208201525f80516020620055318339815191529250608001905062002def565b606060158054806020026020016040519081016040528092919081815260200182805480156200124d57602002820191905f5260205f209081546001600160a01b031681526001909101906020018083116200122e575050505050905090565b6022546040516303223eab60e11b81526001600160a01b0390911660048201525f8051602062005511833981519152906306447d56906024015f604051808303815f87803b158015620036c3575f80fd5b505af1158015620036d6573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562003731575f80fd5b505af115801562003744573d5f803e3d5ffd5b5050601f5460225460405163fc7e286d60e01b81526001600160a01b03918216600482015262003788955061010090920416925063fc7e286d91506024016200115d565b620037de601f60019054906101000a90046001600160a01b03166001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001179573d5f803e3d5ffd5b5f805160206200551183398151915263e5d6bf02620038026301e13380426200409b565b6200380f9060016200409b565b6040518263ffffffff1660e01b81526004016200382e91815260200190565b5f604051808303815f87803b15801562003846575f80fd5b505af115801562003859573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015620038ab575f80fd5b505af1158015620038be573d5f803e3d5ffd5b5050601f5460225460405163fc7e286d60e01b81526001600160a01b03918216600482015262003901945061010090920416915063fc7e286d9060240162000793565b6022546200392f906001600160a01b03163162002da2670de0b6b3a7640000678ac7230489e8000062004146565b60408051818152601b918101919091527f46756c6c204465706f736974205769746864726177204379636c6500000000006060820152600160208201525f8051602062005531833981519152906080016200081e565b6200398f62003672565b62003999620023bf565b620039a362001c04565b604080518181526018918101919091527f416c6c20496e746567726174696f6e20466561747572657300000000000000006060820152600160208201525f80516020620055318339815191529060800162002def565b6022546040516303223eab60e11b81526001600160a01b0390911660048201525f8051602062005511833981519152906306447d56906024015f604051808303815f87803b15801562003a4a575f80fd5b505af115801562003a5d573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0670de0b6b3a76400006040518263ffffffff1660e01b81526004015f604051808303818588803b15801562003ab8575f80fd5b505af115801562003acb573d5f803e3d5ffd5b50505050505f80516020620055118339815191526001600160a01b031663e5d6bf026301e133804262003aff91906200409b565b62003b0c9060016200409b565b6040518263ffffffff1660e01b815260040162003b2b91815260200190565b5f604051808303815f87803b15801562003b43575f80fd5b505af115801562003b56573d5f803e3d5ffd5b5050604051630618f58760e51b81525f8051602062005511833981519152925063c31eb0e0915062003b949063012f773760e11b90600401620040f7565b5f604051808303815f87803b15801562003bac575f80fd5b505af115801562003bbf573d5f803e3d5ffd5b50505050601f60019054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562003c11575f80fd5b505af115801562003c24573d5f803e3d5ffd5b505060408051818152601591810191909152742932b2b73a3930b731bc90283937ba32b1ba34b7b760591b6060820152600160208201525f8051602062005531833981519152925060800190506200081e565b8062003cd657604051630c9fd58160e01b815281151560048201525f805160206200551183398151915290630c9fd581906024015b5f6040518083038186803b15801562003cc3575f80fd5b505afa15801562000e96573d5f803e3d5ffd5b50565b80821462003d3f5760405163260a5b1560e21b815260048101839052602481018290525f8051602062005511833981519152906398296c54906044015f6040518083038186803b15801562003d2c575f80fd5b505afa15801562001bfc573d5f803e3d5ffd5b5050565b801562003cd65760405163a598288560e01b815281151560048201525f80516020620055118339815191529063a59828859060240162003cac565b61139a806200417783390190565b602080825282518282018190525f9190848201906040850190845b8181101562003dce5783516001600160a01b03168352928401929184019160010162003da7565b50909695505050505050565b5f81518084525f5b8181101562003e005760208185018101518683018201520162003de2565b505f602082860101526020601f19601f83011685010191505092915050565b602080825282518282018190525f919060409081850190600581811b8701840188860187805b8581101562003ed457603f198b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562003ebd57605f1989850301835262003eaa84865162003dda565b948e01949350918d019160010162003e8b565b505050978a01979450509188019160010162003e45565b50919a9950505050505050505050565b5f8151808452602080850194508084015f5b8381101562003f1e5781516001600160e01b0319168752958201959082019060010162003ef6565b509495945050505050565b5f6020808301818452808551808352604092508286019150828160051b8701018488015f5b8381101562003fa457888303603f190185528151805187855262003f758886018262003dda565b91890151858303868b015291905062003f8f818362003ee4565b96890196945050509086019060010162003f4e565b509098975050505050505050565b5f602080830181845280855180835260408601915060408160051b87010192508387015f5b828110156200400957603f1988860301845262003ff685835162003dda565b9450928501929085019060010162003fd7565b5092979650505050505050565b5f6020808301818452808551808352604092508286019150828160051b8701018488015f5b8381101562003fa457888303603f19018552815180516001600160a01b03168452870151878401879052620040738785018262003ee4565b95880195935050908601906001016200403b565b634e487b7160e01b5f52601160045260245ffd5b80820180821115620040b157620040b162004087565b92915050565b5f60208284031215620040c8575f80fd5b81518015158114620040d8575f80fd5b9392505050565b5f60208284031215620040f0575f80fd5b5051919050565b6001600160e01b031991909116815260200190565b600181811c908216806200412157607f821691505b6020821081036200414057634e487b7160e01b5f52602260045260245ffd5b50919050565b81810381811115620040b157620040b162004087565b8082028115828204841417620040b157620040b16200408756fe608060405260405161139a38038061139a833981016040819052610022916100c4565b80428111610042576040516251339b60e31b815260040160405180910390fd5b6100506309660180426100db565b8111156100705760405163fce05cc760e01b815260040160405180910390fd5b5f80546001600160a01b03191633908117825560018490556002805460ff191690556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35050610100565b5f602082840312156100d4575f80fd5b5051919050565b808201808211156100fa57634e487b7160e01b5f52601160045260245ffd5b92915050565b61128d8061010d5f395ff3fe608060405260043610610207575f3560e01c80637cf4309011610117578063b488355f1161009f578063dac6270d1161006e578063dac6270d14610603578063dfe6b5d614610617578063f2fde38b14610661578063fa78668f14610680578063fc7e286d1461069757610259565b8063b488355f14610599578063bc394350146105b8578063d0e30db0146105dc578063d9c5e6d7146105e457610259565b8063853828b6116100e6578063853828b6146104dd5780638da5cb5b146104f157806399b20eaf14610527578063a338df381461053b578063b3a7834d1461055a57610259565b80637cf430901461048c5780637d882097146104a05780638380edb7146104b55780638456cb59146104c957610259565b80633ccfd60b1161019a5780635c975abb116101695780635c975abb1461040a578063602bc62b146104235780636046462714610437578063729c3e0e1461044c57806378dee4171461047757610259565b80633ccfd60b146103b05780633f4ba83a146103c45780633ff03207146103d85780634c34a982146103ee57610259565b80631ea30fef116101d65780631ea30fef14610341578063240be9441461035b578063251c1aa3146103865780632bf6c5bc1461039b57610259565b80630905f560146102b25780630945d42c146102e757806312065fe01461030657806319262d301461032257610259565b3661025957306001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b158015610245575f80fd5b505af1158015610257573d5f803e3d5ffd5b005b60405162461bcd60e51b815260206004820152602360248201527f506967677942616e6b3a204469726563742063616c6c73206e6f7420616c6c6f6044820152621dd95960ea1b60648201526084015b60405180910390fd5b3480156102bd575f80fd5b506002546102d290600160a81b900460ff1681565b60405190151581526020015b60405180910390f35b3480156102f2575f80fd5b506102576103013660046111b2565b6106c2565b348015610311575f80fd5b50475b6040519081526020016102de565b34801561032d575f80fd5b506102d261033c3660046111c9565b6107a7565b34801561034c575f80fd5b5061031466038d7ea4c6800081565b348015610366575f80fd5b506103146103753660046111c9565b60056020525f908152604090205481565b348015610391575f80fd5b5061031460015481565b3480156103a6575f80fd5b5061031460035481565b3480156103bb575f80fd5b506102576107f9565b3480156103cf575f80fd5b50610257610941565b3480156103e3575f80fd5b506103146201518081565b3480156103f9575f80fd5b50610314683635c9adc5dea0000081565b348015610415575f80fd5b506002546102d29060ff1681565b34801561042e575f80fd5b50600154610314565b348015610442575f80fd5b5061031460085481565b348015610457575f80fd5b506103146104663660046111c9565b60066020525f908152604090205481565b348015610482575f80fd5b5061031460095481565b348015610497575f80fd5b506103146109f7565b3480156104ab575f80fd5b5061031460075481565b3480156104c0575f80fd5b506102d2610a31565b3480156104d4575f80fd5b50610257610a4f565b3480156104e8575f80fd5b50610257610b03565b3480156104fc575f80fd5b505f5461050f906001600160a01b031681565b6040516001600160a01b0390911681526020016102de565b348015610532575f80fd5b50610257610c77565b348015610546575f80fd5b506102576105553660046111c9565b610ce8565b348015610565575f80fd5b506105796105743660046111c9565b610dbb565b6040805194855260208501939093529183015260608201526080016102de565b3480156105a4575f80fd5b506103146105b33660046111c9565b610e14565b3480156105c3575f80fd5b5060025461050f9061010090046001600160a01b031681565b610257610e5e565b3480156105ef575f80fd5b506102576105fe3660046111b2565b610fda565b34801561060e575f80fd5b506103146110cc565b348015610622575f80fd5b5060075460085460095460025460408051948552602085019390935291830152600160a81b900460ff161515606082015247608082015260a0016102de565b34801561066c575f80fd5b5061025761067b3660046111c9565b6110e9565b34801561068b575f80fd5b50610314630966018081565b3480156106a2575f80fd5b506103146106b13660046111c9565b60046020525f908152604090205481565b5f546001600160a01b031633146106eb5760405162461bcd60e51b81526004016102a9906111ef565b5f546001600160a01b0316331461071557604051631a93c53360e11b815260040160405180910390fd5b66038d7ea4c6800081101561073d576040516345556f1f60e01b815260040160405180910390fd5b60075481101561075f576040516251339b60e31b815260040160405180910390fd5b60408051683635c9adc5dea0000080825260208201849052917f88d01455e50f0b0da01a455a4547346410a2fd66ffdc7241a4c280d6089c4257910160405180910390a15050565b6002545f9060ff161580156107d257506001600160a01b0382165f9081526004602052604090205415155b80156107f35750600154421015806107f35750600254600160a81b900460ff165b92915050565b60025460ff161561081d5760405163012f773760e11b815260040160405180910390fd5b5f546001600160a01b03163314610847576040516363fc43ab60e11b815260040160405180910390fd5b60015442101561086a57604051632d4f9b0560e01b815260040160405180910390fd5b475f81900361088c5760405163870817fd60e01b815260040160405180910390fd5b8060085f82825461089d9190611231565b909155505060405181815233907f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d59060200160405180910390a26040515f90339083908381818185875af1925050503d805f8114610916576040519150601f19603f3d011682016040523d82523d5f602084013e61091b565b606091505b505090508061093d576040516340d812e160e01b815260040160405180910390fd5b5050565b5f546001600160a01b0316331461096a5760405162461bcd60e51b81526004016102a9906111ef565b5f546001600160a01b0316331461099457604051631a93c53360e11b815260040160405180910390fd5b60025460ff166109b757604051631a93c53360e11b815260040160405180910390fd5b6002805460ff191690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6002545f90600160a81b900460ff161580610a1457506003544210155b15610a1e57505f90565b42600354610a2c9190611244565b905090565b5f60015442101580610a2c575050600254600160a81b900460ff1690565b5f546001600160a01b03163314610a785760405162461bcd60e51b81526004016102a9906111ef565b5f546001600160a01b03163314610aa257604051631a93c53360e11b815260040160405180910390fd5b60025460ff1615610ac65760405163012f773760e11b815260040160405180910390fd5b6002805460ff191660011790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016109ed565b60025460ff1615610b275760405163012f773760e11b815260040160405180910390fd5b600154421015610b4a57604051632d4f9b0560e01b815260040160405180910390fd5b335f9081526004602052604081205490819003610b7a5760405163e68effe160e01b815260040160405180910390fd5b335f90815260046020526040812081905560088054839290610b9d908490611231565b909155505060405181815233907f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d59060200160405180910390a26040515f90339083908381818185875af1925050503d805f8114610c16576040519150601f19603f3d011682016040523d82523d5f602084013e610c1b565b606091505b5050905080610c3d576040516340d812e160e01b815260040160405180910390fd5b60405182815233907f23d6711a1d031134a36921253c75aa59e967d38e369ac625992824315e204f20906020015b60405180910390a25050565b60025461010090046001600160a01b03163314610ca757604051631a93c53360e11b815260040160405180910390fd5b6002805460ff60a81b191690555f6003556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020016109ed565b5f546001600160a01b03163314610d115760405162461bcd60e51b81526004016102a9906111ef565b5f546001600160a01b03163314610d3b57604051631a93c53360e11b815260040160405180910390fd5b6001600160a01b038116610d6257604051631a93c53360e11b815260040160405180910390fd5b600280546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907fc0cf06c8aac34052209a818a44d0ad3d4ed78bde060b69f7a4ce24560ad51068905f90a35050565b6001600160a01b0381165f90815260046020908152604080832054600583528184205460069093529083205460015491939091421015610e0a5742600154610e039190611244565b9050610e0d565b505f5b9193509193565b6001600160a01b0381165f90815260046020526040812054683635c9adc5dea000008110610e4457505f92915050565b610e5781683635c9adc5dea00000611244565b9392505050565b60025460ff1615610e825760405163012f773760e11b815260040160405180910390fd5b5f3411610eca5760405162461bcd60e51b81526020600482015260166024820152754d757374206465706f73697420736f6d657468696e6760501b60448201526064016102a9565b66038d7ea4c68000341015610f155760405162461bcd60e51b815260206004820152601160248201527011195c1bdcda5d081d1bdbc81cdb585b1b607a1b60448201526064016102a9565b335f9081526004602052604081205490610f2f3483611231565b9050683635c9adc5dea00000811115610f805760405162461bcd60e51b8152602060048201526013602482015272088cae0dee6d2e840caf0c6cacac8e640dac2f606b1b60448201526064016102a9565b335f90815260046020526040812082905560078054349290610fa3908490611231565b909155505060405134815233907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c490602001610c6b565b60025461010090046001600160a01b0316331461100a57604051631a93c53360e11b815260040160405180910390fd5b60025460ff161561102e5760405163012f773760e11b815260040160405180910390fd5b8042811161104e576040516251339b60e31b815260040160405180910390fd5b61105c630966018042611231565b81111561107c5760405163fce05cc760e01b815260040160405180910390fd5b60028054600384905560ff60ff60a81b0119166001600160a81b0117905560405182815233907f16ea6c4a0ff7e3a4c096560a5a71632e344907cd03af0f6e655b409a61d549ef90602001610c6b565b5f60015442106110db57505f90565b42600154610a2c9190611244565b5f546001600160a01b031633146111125760405162461bcd60e51b81526004016102a9906111ef565b5f546001600160a01b0316331461113c57604051631a93c53360e11b815260040160405180910390fd5b6001600160a01b03811661116357604051631a93c53360e11b815260040160405180910390fd5b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156111c2575f80fd5b5035919050565b5f602082840312156111d9575f80fd5b81356001600160a01b0381168114610e57575f80fd5b6020808252601490820152732834b3b3bca130b7359d102737ba1037bbb732b960611b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156107f3576107f361121d565b818103818111156107f3576107f361121d56fea2646970667358221220b40737dd7e59556a572d59ae42ceb25b10310ea5ddcf3f662a816b1b1e7cc06a64736f6c634300081400330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d455e322fddc6a66ebfe6e627a9a6cf7ff47ee8e427f8db45ded2a19cec3dd7f0a264697066735822122048df337d6f9984c4ac0541c0402df44a95afccf3103488ee6b5bac05e095f60964736f6c63430008140033","sourceMap":"231:9243:21:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2843:525;;;:::i;:::-;;802:333;;;:::i;6025:586::-;;;:::i;1190:598::-;;;:::i;2907:134:6:-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3823:151;;;:::i;:::-;;;;;;;:::i;5519:500:21:-;;;:::i;3374:539::-;;;:::i;3684:133:6:-;;;:::i;3385:141::-;;;:::i;523:44:21:-;;559:8;523:44;;;;;2998:25:22;;;2986:2;2971:18;523:44:21;2852:177:22;347:36:21;;;;;-1:-1:-1;;;;;347:36:21;;;;;;-1:-1:-1;;;;;3198:32:22;;;3180:51;;3168:2;3153:18;347:36:21;3034:203:22;3193:186:6;;;:::i;:::-;;;;;;;:::i;4435:416:21:-;;;:::i;7863:868::-;;;:::i;3047:140:6:-;;;:::i;:::-;;;;;;;:::i;308:33:21:-;;;;;-1:-1:-1;;;;;308:33:21;;;468:49;;510:7;468:49;;3532:146:6;;;:::i;:::-;;;;;;;:::i;389:33:21:-;;;;;-1:-1:-1;;;;;389:33:21;;;7315:542;;;:::i;2754:147:6:-;;;:::i;2459:141::-;;;:::i;4857:656:21:-;;;:::i;276:26::-;;;;;;;;-1:-1:-1;;;;;276:26:21;;;428:33;;;;;-1:-1:-1;;;;;428:33:21;;;1306:195:1;;;:::i;:::-;;;7184:14:22;;7177:22;7159:41;;7147:2;7132:18;1306:195:1;7019:187:22;3919:510:21;;;:::i;8737:460::-;;;:::i;2269:568::-;;;:::i;2606:142:6:-;;;:::i;6669:640:21:-;;;:::i;9203:269::-;;;:::i;1794:469::-;;;:::i;1065:26:13:-;;;;;;;;;2843:525:21;2898:8;;2889:18;;-1:-1:-1;;;2889:18:21;;-1:-1:-1;;;;;2898:8:21;;;2889:18;;;3180:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;2889:8:21;;3153:18:22;;2889::21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2917:9:21;;;;;-1:-1:-1;;;;;2917:9:21;;-1:-1:-1;2917:31:21;;-1:-1:-1;2949:25:21;:15;2967:7;2949:25;:::i;:::-;2917:58;;;;;;;;;;;;;2998:25:22;;2986:2;2971:18;;2852:177;2917:58:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2986:30;2997:9;;;;;;;;;-1:-1:-1;;;;;2997:9:21;-1:-1:-1;;;;;2997:16:21;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2986:10;:30::i;:::-;3026:37;3037:9;;;;;;;;;-1:-1:-1;;;;;3037:9:21;-1:-1:-1;;;;;3037:23:21;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3026:37;3150:5;;3136:20;;-1:-1:-1;;;3136:20:21;;-1:-1:-1;;;;;3150:5:21;;;3136:20;;;3180:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;3136:13:21;;3153:18:22;;3136:20:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3166:9;;;;;;;;;-1:-1:-1;;;;;3166:9:21;-1:-1:-1;;;;;3166:17:21;;510:7;3166:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3219:9;;;;;;;;;-1:-1:-1;;;;;3219:9:21;-1:-1:-1;;;;;3219:18:21;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3258:9:21;;3277:5;;3258:25;;-1:-1:-1;;;3258:25:21;;-1:-1:-1;;;;;3277:5:21;;;3258:25;;;3180:51:22;3249:38:21;;-1:-1:-1;3258:9:21;;;;;;-1:-1:-1;3258:18:21;;3153::22;;3258:25:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3285:1;3249:8;:38::i;:::-;3303:34;;;8150:21:22;;;8207:2;8187:18;;;8180:30;;;;-1:-1:-1;;;8241:2:22;8226:18;;8219:44;3332:4:21;8330::22;8315:20;;8308:52;-1:-1:-1;;;;;;;;;;;3303:34:21;8295:3:22;8280:19;3303:34:21;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;3347:12:21;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2843:525::o;802:333::-;845:5;;836:15;;-1:-1:-1;;;836:15:21;;-1:-1:-1;;;;;845:5:21;;;836:15;;;3180:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;836:8:21;;3153:18:22;;836:15:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;559:8;887:15;:27;;;;:::i;:::-;873:42;;;;;:::i;:::-;2998:25:22;;;2986:2;2971:18;873:42:21;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;861:9:21;:54;;-1:-1:-1;;;;;;861:54:21;;-1:-1:-1;;;;;861:54:21;;;;;;;969:5;;960:15;;-1:-1:-1;;;960:15:21;;969:5;;960:15;;;3180:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;960:8:21;;3153:18:22;;960:15:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;985:9:21;;1016:8;;985:40;;-1:-1:-1;;;985:40:21;;-1:-1:-1;;;;;1016:8:21;;;985:40;;;3180:51:22;985:9:21;;;;;;-1:-1:-1;985:30:21;;-1:-1:-1;3153:18:22;;985:40:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1078:5:21;;1070:24;;-1:-1:-1;;;1070:24:21;;-1:-1:-1;;;;;1078:5:21;;;1070:24;;;8572:51:22;1085:8:21;8639:18:22;;;8632:34;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;1070:7:21;;-1:-1:-1;8545:18:22;;1070:24:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1112:5:21;;1104:24;;-1:-1:-1;;;1104:24:21;;-1:-1:-1;;;;;1112:5:21;;;1104:24;;;8572:51:22;1119:8:21;8639:18:22;;;8632:34;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;1104:7:21;;-1:-1:-1;8545:18:22;;1104:24:21;;;;;;;;;;;;;;;;;;;6025:586;6086:5;;6072:20;;-1:-1:-1;;;6072:20:21;;-1:-1:-1;;;;;6086:5:21;;;6072:20;;;3180:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;6072:13:21;;3153:18:22;;6072:20:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6135:38:21;;-1:-1:-1;;;6135:38:21;;6149:4;6135:38;;;8884:41:22;;;8941:18;;;8934:50;;;6161:5:21;9000:18:22;;;8993:50;9059:18;;;9052:50;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;6135:13:21;;-1:-1:-1;8856:19:22;;6135:38:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6198:5:21;;6188:33;;510:7;2998:25:22;;-1:-1:-1;;;;;6198:5:21;;;;-1:-1:-1;6188:33:21;;-1:-1:-1;2986:2:22;2971:18;6188:33:21;;;;;;;6231:9;;;;;;;;;-1:-1:-1;;;;;6231:9:21;-1:-1:-1;;;;;6231:17:21;;510:7;6231:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6367:38:21;;-1:-1:-1;;;6367:38:21;;6381:4;6367:38;;;8884:41:22;;;8941:18;;;8934:50;;;6328:16:21;9000:18:22;;;8993:50;9059:18;;;9052:50;6355:1:21;;-1:-1:-1;;;;;;;;;;;;336:42:0;-1:-1:-1;6367:13:21;;-1:-1:-1;8856:19:22;;6367:38:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6441:5:21;;6420:37;;-1:-1:-1;;;;;6420:37:21;;;;-1:-1:-1;6441:5:21;;;;-1:-1:-1;6420:37:21;;6441:5;;6420:37;6476:5;;6467:15;;-1:-1:-1;;;6467:15:21;;-1:-1:-1;;;;;6476:5:21;;;6467:15;;;3180:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;6467:8:21;;3153:18:22;;6467:15:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6492:9:21;;:37;;-1:-1:-1;;;6492:37:21;;-1:-1:-1;;;;;3198:32:22;;;6492:37:21;;;3180:51:22;6492:9:21;;;;;;;;-1:-1:-1;6492:27:21;;-1:-1:-1;3153:18:22;;6492:37:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6545:35:21;;;9319:21:22;;;9376:2;9356:18;;;9349:30;;;;-1:-1:-1;;;9410:2:22;9395:18;;9388:45;6575:4:21;9500::22;9485:20;;9478:52;-1:-1:-1;;;;;;;;;;;6545:35:21;-1:-1:-1;9465:3:22;9450:19;;-1:-1:-1;6545:35:21;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;6590:12:21;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6062:549;6025:586::o;1190:598::-;1250:5;;1236:20;;-1:-1:-1;;;1236:20:21;;-1:-1:-1;;;;;1250:5:21;;;1236:20;;;3180:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;1236:13:21;;3153:18:22;;1236:20:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1299:60:21;;-1:-1:-1;;;1299:60:21;;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;1299:15:21;;-1:-1:-1;1299:60:21;;-1:-1:-1;;;1315:43:21;1299:60;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1369:9;;;;;;;;;-1:-1:-1;;;;;1369:9:21;-1:-1:-1;;;;;1369:17:21;;1394:12;1369:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1452:61:21;;-1:-1:-1;;;1452:61:21;;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;1452:15:21;;-1:-1:-1;1452:61:21;;-1:-1:-1;;;;1468:44:21;1452:61;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1523:9;;;;;;;;;-1:-1:-1;;;;;1523:9:21;-1:-1:-1;;;;;1523:17:21;;1548:10;1523:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1602:9;;;;;;;;;-1:-1:-1;;;;;1602:9:21;-1:-1:-1;;;;;1602:17:21;;510:7;1602:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1664:9:21;;1683:5;;1664:25;;-1:-1:-1;;;1664:25:21;;-1:-1:-1;;;;;1683:5:21;;;1664:25;;;3180:51:22;1655:52:21;;-1:-1:-1;1664:9:21;;;;;;-1:-1:-1;1664:18:21;;-1:-1:-1;3153:18:22;;1664:25:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;510:7;1655:8;:52::i;:::-;1723:34;;;9954:21:22;;;10011:2;9991:18;;;9984:30;;;;-1:-1:-1;;;10045:2:22;10030:18;;10023:44;1752:4:21;10134::22;10119:20;;10112:52;-1:-1:-1;;;;;;;;;;;1723:34:21;10099:3:22;10084:19;1723:34:21;9748:422:22;2907:134:6;2954:33;3018:16;2999:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2999:35:6;;;;;;;;;;;;;;;;;;;;;;;2907:134;:::o;3823:151::-;3872:42;3948:19;3926:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3926:41:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3823:151;:::o;5519:500:21:-;5637:9;;5659:5;;5637:28;;-1:-1:-1;;;5637:28:21;;-1:-1:-1;;;;;5659:5:21;;;5637:28;;;3180:51:22;5625:41:21;;5637:9;;;;;;;:21;;3153:18:22;;5637:28:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5625:11;:41::i;:::-;5726:9;;5760:5;;5726:40;;-1:-1:-1;;;5726:40:21;;-1:-1:-1;;;;;5760:5:21;;;5726:40;;;3180:51:22;5717:62:21;;5726:9;;;;;;;:33;;3153:18:22;;5726:40:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5768:10;5717:8;:62::i;:::-;5823:21;5847:9;;;;;;;;;-1:-1:-1;;;;;5847:9:21;-1:-1:-1;;;;;5847:26:21;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5823:52;;5885:29;5912:1;5896:13;:17;5885:10;:29::i;:::-;5924:38;559:8;5935:13;:26;;5924:10;:38::i;:::-;5978:34;;;10766:21:22;;;10823:2;10803:18;;;10796:30;-1:-1:-1;;;10857:2:22;10842:18;;10835:44;6007:4:21;10946::22;10931:20;;10924:52;5978:34:21;;-1:-1:-1;;;;;;;;;;;5978:34:21;;;;10911:3:22;5978:34:21;;;5555:464;5519:500::o;3374:539::-;3472:5;;3458:20;;-1:-1:-1;;;3458:20:21;;-1:-1:-1;;;;;3472:5:21;;;3458:20;;;3180:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;3458:13:21;;3153:18:22;;3458:20:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3515:9:21;;3507:51;;3489:12;;-1:-1:-1;3515:9:21;;;;-1:-1:-1;;;;;3515:9:21;;-1:-1:-1;510:7:21;;3489:12;3507:51;3489:12;3507:51;510:7;3515:9;3507:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3488:70;;;3568:19;3579:7;3568:10;:19::i;:::-;3606:9;;3625:5;;3606:25;;-1:-1:-1;;;3606:25:21;;-1:-1:-1;;;;;3625:5:21;;;3606:25;;;3180:51:22;3597:52:21;;3606:9;;;;;;;:18;;3153::22;;3606:25:21;3034:203:22;3597:52:21;3702:54;;-1:-1:-1;;;3702:54:21;;11398:2:22;3702:54:21;;;11380:21:22;11437:2;11417:18;;;11410:30;11476:34;11456:18;;;11449:62;-1:-1:-1;;;11527:18:22;;;11520:33;-1:-1:-1;;;;;;;;;;;336:42:0;3702:15:21;;11570:19:22;;3702:54:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3788:9:21;;3780:46;;-1:-1:-1;;;11801:34:22;;3788:9:21;;;;-1:-1:-1;;;;;3788:9:21;;-1:-1:-1;11860:2:22;11851:12;;-1:-1:-1;3780:46:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3842:40:21;;;12080:21:22;;;12137:2;12117:18;;;12110:30;;;;-1:-1:-1;;;12171:2:22;12156:18;;12149:50;3877:4:21;12266::22;12251:20;;12244:52;3766:60:21;;-1:-1:-1;;;;;;;;;;;;3842:40:21;12231:3:22;12216:19;3842:40:21;11874:428:22;3684:133:6;3730:33;3794:16;3775:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3775:35:6;;;;;;;;;;;;;;;;;;;;;;3684:133;:::o;3385:141::-;3433:35;3501:18;3480:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3480:39:6;;;;;;;;;;;;;;;;;;;;;;3385:141;:::o;3193:186::-;3249:56;3346:26;3317:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3317:55:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4435:416:21;4498:5;;4484:20;;-1:-1:-1;;;4484:20:21;;-1:-1:-1;;;;;4498:5:21;;;4484:20;;;3180:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;4484:13:21;;3153:18:22;;4484:20:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4515:17;4535:9;4515:29;;4554:9;;;;;;;;;-1:-1:-1;;;;;4554:9:21;-1:-1:-1;;;;;4554:17:21;;510:7;4554:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4607:15;4637:9;4625:21;;:9;:21;:::i;:::-;4724:9;;4743:5;;4724:25;;-1:-1:-1;;;4724:25:21;;-1:-1:-1;;;;;4743:5:21;;;4724:25;;;3180:51:22;4607:39:21;;-1:-1:-1;4715:52:21;;4724:9;;;;;;:18;;3153::22;;4724:25:21;3034:203:22;4715:52:21;4783:37;;;12646:21:22;;;12703:2;12683:18;;;12676:30;-1:-1:-1;;;12737:2:22;12722:18;;12715:47;4815:4:21;12829::22;12814:20;;12807:52;4783:37:21;;-1:-1:-1;;;;;;;;;;;4783:37:21;;;;12794:3:22;4783:37:21;;;-1:-1:-1;;;;;;;;;;;;;;;;4830:12:21;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4474:377;;4435:416::o;7863:868::-;7925:5;;7911:20;;-1:-1:-1;;;7911:20:21;;-1:-1:-1;;;;;7925:5:21;;;7911:20;;;3180:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;7911:13:21;;3153:18:22;;7911:20:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7941:9;;;;;;;;;-1:-1:-1;;;;;7941:9:21;-1:-1:-1;;;;;7941:17:21;;510:7;7941:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;7994:12:21;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8054:5:21;;8045:15;;-1:-1:-1;;;8045:15:21;;-1:-1:-1;;;;;8054:5:21;;;8045:15;;;3180:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;8045:8:21;;-1:-1:-1;3153:18:22;;8045:15:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8070:9;;;;;;;;;-1:-1:-1;;;;;8070:9:21;-1:-1:-1;;;;;8070:15:21;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8166:5:21;;8152:20;;-1:-1:-1;;;8152:20:21;;-1:-1:-1;;;;;8166:5:21;;;8152:20;;;3180:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;8152:13:21;;-1:-1:-1;3153:18:22;;8152:20:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8182:53:21;;-1:-1:-1;;;8182:53:21;;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;8182:15:21;;-1:-1:-1;8182:53:21;;-1:-1:-1;;;8198:36:21;8182:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8245:9;;;;;;;;;-1:-1:-1;;;;;8245:9:21;-1:-1:-1;;;;;8245:17:21;;510:7;8245:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8392:5:21;;8378:20;;-1:-1:-1;;;8378:20:21;;-1:-1:-1;;;;;8392:5:21;;;8378:20;;;3180:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;8378:13:21;;-1:-1:-1;3153:18:22;;;-1:-1:-1;8378:20:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8408:53:21;;-1:-1:-1;;;8408:53:21;;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;8408:15:21;;-1:-1:-1;8408:53:21;;-1:-1:-1;;;8424:36:21;8408:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8471:9;;;;;;;;;-1:-1:-1;;;;;8471:9:21;-1:-1:-1;;;;;8471:18:21;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8530:5:21;;8521:15;;-1:-1:-1;;;8521:15:21;;-1:-1:-1;;;;;8530:5:21;;;8521:15;;;3180:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;8521:8:21;;-1:-1:-1;3153:18:22;;8521:15:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8546:9;;;;;;;;;-1:-1:-1;;;;;8546:9:21;-1:-1:-1;;;;;8546:17:21;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8605:9;;;;;;;;;-1:-1:-1;;;;;8605:9:21;-1:-1:-1;;;;;8605:17:21;;510:7;8605:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;8695:4:21;8664:36;;;;;13094:2:22;13076:21;;;13133:2;13113:18;;;13106:30;-1:-1:-1;;;13167:2:22;13152:18;;13145:46;13272:14;;13265:22;13258:4;13243:20;;13236:52;13223:3;13208:19;;12870:424;3047:140:6;3095:34;3162:18;3141:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3532:146;3580:40;3653:18;3632:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3632:39:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3632:39:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7315:542:21;7386:5;;7372:20;;-1:-1:-1;;;7372:20:21;;-1:-1:-1;;;;;7386:5:21;;;7372:20;;;3180:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;7372:13:21;;3153:18:22;;7372:20:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7447:9;;;;;;;;;-1:-1:-1;;;;;7447:9:21;-1:-1:-1;;;;;7447:17:21;;7472:9;7447:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7494:9;;;;;;;;;-1:-1:-1;;;;;7494:9:21;-1:-1:-1;;;;;7494:17:21;;7519:9;7494:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7541:9;;;;;;;;;-1:-1:-1;;;;;7541:9:21;-1:-1:-1;;;;;7541:17:21;;7566:9;7541:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7598:9:21;;7617:5;;7598:25;;-1:-1:-1;;;7598:25:21;;-1:-1:-1;;;;;7617:5:21;;;7598:25;;;3180:51:22;7589:44:21;;-1:-1:-1;7598:9:21;;;;;;-1:-1:-1;7598:18:21;;-1:-1:-1;3153:18:22;;7598:25:21;3034:203:22;7589:44:21;7652:9;;7679:5;;7652:33;;-1:-1:-1;;;7652:33:21;;-1:-1:-1;;;;;7679:5:21;;;7652:33;;;3180:51:22;7643:46:21;;7652:9;;;;;;;:26;;3153:18:22;;7652:33:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7687:1;7643:8;:46::i;:::-;7699:43;7708:9;;;;;;;;;-1:-1:-1;;;;;7708:9:21;-1:-1:-1;;;;;7708:28:21;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7740:1;7699:8;:43::i;:::-;7779:47;;;13505:21:22;;;13562:2;13542:18;;;13535:30;;;;13601:29;13596:2;13581:18;;13574:57;7821:4:21;13698::22;13683:20;;13676:52;-1:-1:-1;;;;;;;;;;;7779:47:21;13663:3:22;13648:19;7779:47:21;13299:435:22;2754:147:6;2803:40;2876:18;2855:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2855:39:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2855:39:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2459:141;2508:34;2575:18;2554:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4857:656:21;4908:43;4917:9;;;;;;;;;-1:-1:-1;;;;;4917:9:21;-1:-1:-1;;;;;4917:28:21;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4908:43;4961:38;4970:9;;;;;;;;;-1:-1:-1;;;;;4970:9:21;-1:-1:-1;;;;;4970:23:21;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4961:38;5024:5;;5010:20;;-1:-1:-1;;;5010:20:21;;-1:-1:-1;;;;;5024:5:21;;;5010:20;;;3180:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;5010:13:21;;3153:18:22;;5010:20:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5040:9;;;;;;;;;-1:-1:-1;;;;;5040:9:21;-1:-1:-1;;;;;5040:17:21;;510:7;5040:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;5093:12:21;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5118:43;5127:9;;;;;;;;;-1:-1:-1;;;;;5127:9:21;-1:-1:-1;;;;;5127:28:21;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5118:43;5171:52;5180:9;;;;;;;;;-1:-1:-1;;;;;5180:9:21;-1:-1:-1;;;;;5180:23:21;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5171:52;5248:5;;5234:20;;-1:-1:-1;;;5234:20:21;;-1:-1:-1;;;;;5248:5:21;;;5234:20;;;3180:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;5234:13:21;;3153:18:22;;5234:20:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5264:9;;;;;;;;;-1:-1:-1;;;;;5264:9:21;-1:-1:-1;;;;;5264:17:21;;510:7;5264:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;5317:12:21;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5342:43;5351:9;;;;;;;;;-1:-1:-1;;;;;5351:9:21;-1:-1:-1;;;;;5351:28:21;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5383:1;5342:8;:43::i;:::-;5395:56;5404:9;;;;;;;;;-1:-1:-1;;;;;5404:9:21;-1:-1:-1;;;;;5404:23:21;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5431:19;510:7;5449:1;5431:19;:::i;:::-;5395:8;:56::i;:::-;5467:39;;;14118:21:22;;;14175:2;14155:18;;;14148:30;;;;-1:-1:-1;;;14209:2:22;14194:18;;14187:49;5501:4:21;14303::22;14288:20;;14281:52;-1:-1:-1;;;;;;;;;;;5467:39:21;14268:3:22;14253:19;5467:39:21;;;;;;;;4857:656::o;1306:195:1:-;1365:7;;1345:4;;1365:7;;1361:134;;;-1:-1:-1;1395:4:1;;1306:195::o;1361:134::-;1437:33;;-1:-1:-1;;;1437:33:1;;-1:-1:-1;;;;;;;;;;;1437:33:1;;;8572:51:22;;;-1:-1:-1;;;8639:18:22;;;8632:34;1482:1:1;;1437:7;;8545:18:22;;1437:33:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:47;;1430:54;;1306:195;:::o;3919:510:21:-;4025:5;;4011:20;;-1:-1:-1;;;4011:20:21;;-1:-1:-1;;;;;4025:5:21;;;4011:20;;;3180:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;4011:13:21;;3153:18:22;;4011:20:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4072:56:21;;-1:-1:-1;;;4072:56:21;;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;4072:15:21;;-1:-1:-1;4072:56:21;;-1:-1:-1;;;4088:39:21;4072:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4138:9;;;;;;;;;-1:-1:-1;;;;;4138:9:21;-1:-1:-1;;;;;4138:17:21;;4163:1;4138:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;4213:7:21;;559:8;4221:15;:27;;;;:::i;:::-;:31;;4251:1;4221:31;:::i;:::-;4213:40;;;;;;;;;;;;;2998:25:22;;2986:2;2971:18;;2852:177;4213:40:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4263:56:21;;-1:-1:-1;;;4263:56:21;;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;4263:15:21;;-1:-1:-1;4263:56:21;;-1:-1:-1;;;4279:39:21;4263:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4329:9;;;;;;;;;-1:-1:-1;;;;;4329:9:21;-1:-1:-1;;;;;4329:18:21;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4365:33:21;;;15018:21:22;;;15075:2;15055:18;;;15048:30;;;;-1:-1:-1;;;15109:2:22;15094:18;;15087:43;4393:4:21;15197::22;15182:20;;15175:52;-1:-1:-1;;;;;;;;;;;4365:33:21;-1:-1:-1;15162:3:22;15147:19;;-1:-1:-1;4365:33:21;14812:421:22;8737:460:21;8832:19;:17;:19::i;:::-;8861:26;:24;:26::i;:::-;8897:20;:18;:20::i;:::-;8927:19;:17;:19::i;:::-;8956:24;:22;:24::i;:::-;8990:18;:16;:18::i;:::-;9018:22;:20;:22::i;:::-;9050:24;:22;:24::i;:::-;9084:19;:17;:19::i;:::-;9113:20;:18;:20::i;:::-;9149:41;;;15444:21:22;;;15501:2;15481:18;;;15474:30;;;;-1:-1:-1;;;15535:2:22;15520:18;;15513:51;9185:4:21;15631::22;15616:20;;15609:52;-1:-1:-1;;;;;;;;;;;9149:41:21;15596:3:22;15581:19;9149:41:21;15238:429:22;2269:568:21;2362:5;;2353:15;;-1:-1:-1;;;2353:15:21;;-1:-1:-1;;;;;2362:5:21;;;2353:15;;;3180:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;2353:8:21;;3153:18:22;;2353:15:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2378:59:21;;-1:-1:-1;;;2378:59:21;;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;2378:15:21;;-1:-1:-1;2378:59:21;;-1:-1:-1;;;2394:42:21;2378:59;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2447:9;;;;;;;;;-1:-1:-1;;;;;2447:9:21;-1:-1:-1;;;;;2447:15:21;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2484:5:21;;2475:15;;-1:-1:-1;;;2475:15:21;;-1:-1:-1;;;;;2484:5:21;;;2475:15;;;3180:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;2475:8:21;;-1:-1:-1;3153:18:22;;2475:15:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2500:59:21;;-1:-1:-1;;;2500:59:21;;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;2500:15:21;;-1:-1:-1;2500:59:21;;-1:-1:-1;;;2516:42:21;2500:59;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2569:9:21;;:42;;-1:-1:-1;;;2569:42:21;;2608:1;2569:42;;;3180:51:22;2569:9:21;;;;-1:-1:-1;;;;;2569:9:21;;-1:-1:-1;2569:30:21;;-1:-1:-1;3153:18:22;;2569:42:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2631:8:21;;2622:18;;-1:-1:-1;;;2622:18:21;;-1:-1:-1;;;;;2631:8:21;;;2622:18;;;3180:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;2622:8:21;;-1:-1:-1;3153:18:22;;2622::21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2650:59:21;;-1:-1:-1;;;2650:59:21;;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;2650:15:21;;-1:-1:-1;2650:59:21;;-1:-1:-1;;;2666:42:21;2650:59;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2719:9:21;;;;;-1:-1:-1;;;;;2719:9:21;;-1:-1:-1;2719:31:21;;-1:-1:-1;2751:27:21;559:8;2751:15;:27;:::i;:::-;2719:60;;;;;;;;;;;;;2998:25:22;;2986:2;2971:18;;2852:177;2719:60:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2795:35:21;;;15878:21:22;;;15935:2;15915:18;;;15908:30;;;;-1:-1:-1;;;15969:2:22;15954:18;;15947:45;2825:4:21;16059::22;16044:20;;16037:52;-1:-1:-1;;;;;;;;;;;2795:35:21;-1:-1:-1;16024:3:22;16009:19;;-1:-1:-1;2795:35:21;15672:423:22;2606:142:6;2655:35;2723:18;2702:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2702:39:6;;;;;;;;;;;;;;;;;;;;;;2606:142;:::o;6669:640:21:-;6740:5;;6726:20;;-1:-1:-1;;;6726:20:21;;-1:-1:-1;;;;;6740:5:21;;;6726:20;;;3180:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;6726:13:21;;3153:18:22;;6726:20:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6776:9;;;;;;;;;-1:-1:-1;;;;;6776:9:21;-1:-1:-1;;;;;6776:17:21;;510:7;6776:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6838:9:21;;6857:5;;6838:25;;-1:-1:-1;;;6838:25:21;;-1:-1:-1;;;;;6857:5:21;;;6838:25;;;3180:51:22;6829:52:21;;-1:-1:-1;6838:9:21;;;;;;-1:-1:-1;6838:18:21;;-1:-1:-1;3153:18:22;;6838:25:21;3034:203:22;6829:52:21;6891:49;6900:9;;;;;;;;;-1:-1:-1;;;;;6900:9:21;-1:-1:-1;;;;;6900:20:21;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6891:49;-1:-1:-1;;;;;;;;;;;6990:7:21;6998:27;559:8;6998:15;:27;:::i;:::-;:31;;7028:1;6998:31;:::i;:::-;6990:40;;;;;;;;;;;;;2998:25:22;;2986:2;2971:18;;2852:177;6990:40:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7061:9;;;;;;;;;-1:-1:-1;;;;;7061:9:21;-1:-1:-1;;;;;7061:18:21;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7100:9:21;;7119:5;;7100:25;;-1:-1:-1;;;7100:25:21;;-1:-1:-1;;;;;7119:5:21;;;7100:25;;;3180:51:22;7091:38:21;;-1:-1:-1;7100:9:21;;;;;;-1:-1:-1;7100:18:21;;3153::22;;7100:25:21;3034:203:22;7091:38:21;7148:5;;7139:51;;-1:-1:-1;;;;;7148:5:21;:13;7163:26;510:7;7163:8;:26;:::i;7139:51::-;7231:47;;;16306:21:22;;;16363:2;16343:18;;;16336:30;;;;16402:29;16397:2;16382:18;;16375:57;7273:4:21;16499::22;16484:20;;16477:52;-1:-1:-1;;;;;;;;;;;7231:47:21;16464:3:22;16449:19;7231:47:21;16100:435:22;9203:269:21;9304:30;:28;:30::i;:::-;9344;:28;:30::i;:::-;9384:21;:19;:21::i;:::-;9421:44;;;16746:21:22;;;16803:2;16783:18;;;16776:30;;;;16842:26;16837:2;16822:18;;16815:54;9460:4:21;16936::22;16921:20;;16914:52;-1:-1:-1;;;;;;;;;;;9421:44:21;16901:3:22;16886:19;9421:44:21;16540:432:22;1794:469:21;1861:5;;1847:20;;-1:-1:-1;;;1847:20:21;;-1:-1:-1;;;;;1861:5:21;;;1847:20;;;3180:51:22;-1:-1:-1;;;;;;;;;;;336:42:0;1847:13:21;;3153:18:22;;1847:20:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1877:9;;;;;;;;;-1:-1:-1;;;;;1877:9:21;-1:-1:-1;;;;;1877:17:21;;510:7;1877:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;1970:7:21;;559:8;1978:15;:27;;;;:::i;:::-;:31;;2008:1;1978:31;:::i;:::-;1970:40;;;;;;;;;;;;;2998:25:22;;2986:2;2971:18;;2852:177;1970:40:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2092:53:21;;-1:-1:-1;;;2092:53:21;;-1:-1:-1;;;;;;;;;;;336:42:0;-1:-1:-1;2092:15:21;;-1:-1:-1;2092:53:21;;-1:-1:-1;;;2108:36:21;2092:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2155:9;;;;;;;;;-1:-1:-1;;;;;2155:9:21;-1:-1:-1;;;;;2155:18:21;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2191:41:21;;;17183:21:22;;;17240:2;17220:18;;;17213:30;;;;-1:-1:-1;;;17274:2:22;17259:18;;17252:51;2227:4:21;17370::22;17355:20;;17348:52;-1:-1:-1;;;;;;;;;;;2191:41:21;-1:-1:-1;17335:3:22;17320:19;;-1:-1:-1;2191:41:21;16977:429:22;1764:124:1;1832:4;1827:55;;1852:19;;-1:-1:-1;;;1852:19:1;;7184:14:22;;7177:22;1852:19:1;;;7159:41:22;-1:-1:-1;;;;;;;;;;;1852:13:1;;;7132:18:22;;1852:19:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1827:55;1764:124;:::o;2664:153::-;2755:5;2747:4;:13;2743:68;;2776:24;;-1:-1:-1;;;2776:24:1;;;;;17585:25:22;;;17626:18;;;17619:34;;;-1:-1:-1;;;;;;;;;;;2776:11:1;;;17558:18:22;;2776:24:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2743:68;2664:153;;:::o;2048:125::-;2116:4;2112:55;;;2136:20;;-1:-1:-1;;;2136:20:1;;7184:14:22;;7177:22;2136:20:1;;;7159:41:22;-1:-1:-1;;;;;;;;;;;2136:14:1;;;7132:18:22;;2136:20:1;7019:187:22;-1:-1:-1;;;;;;;;:::o;14:658:22:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:195;465:6;462:1;459:13;451:195;;;530:13;;-1:-1:-1;;;;;526:39:22;514:52;;621:15;;;;586:12;;;;562:1;480:9;451:195;;;-1:-1:-1;663:3:22;;14:658;-1:-1:-1;;;;;;14:658:22:o;677:423::-;719:3;757:5;751:12;784:6;779:3;772:19;809:1;819:162;833:6;830:1;827:13;819:162;;;895:4;951:13;;;947:22;;941:29;923:11;;;919:20;;912:59;848:12;819:162;;;823:3;1026:1;1019:4;1010:6;1005:3;1001:16;997:27;990:38;1089:4;1082:2;1078:7;1073:2;1065:6;1061:15;1057:29;1052:3;1048:39;1044:50;1037:57;;;677:423;;;;:::o;1105:1742::-;1338:2;1390:21;;;1460:13;;1363:18;;;1482:22;;;1309:4;;1338:2;1523;;1541:18;;;;1578:1;1621:15;;;1606:31;;1602:40;;1665:15;;;1309:4;;1729:1089;1745:6;1740:3;1737:15;1729:1089;;;-1:-1:-1;;1814:22:22;;;1810:36;1798:49;;1870:13;;1957:9;;-1:-1:-1;;;;;1953:35:22;1938:51;;2028:11;;2022:18;2060:15;;;2053:27;;;2141:19;;1910:15;;;2173:24;;;2354:21;;;;2220:2;2302:17;;;2290:30;;2286:39;;;2244:15;;;;2399:1;2413:296;2429:8;2424:3;2421:17;2413:296;;;2535:2;2531:7;2522:6;2514;2510:19;2506:33;2499:5;2492:48;2567:42;2602:6;2591:8;2585:15;2567:42;:::i;:::-;2638:17;;;;2557:52;-1:-1:-1;2681:14:22;;;;2457:1;2448:11;2413:296;;;-1:-1:-1;;;2796:12:22;;;;2732:6;-1:-1:-1;;2761:15:22;;;;1771:1;1762:11;1729:1089;;;-1:-1:-1;2835:6:22;;1105:1742;-1:-1:-1;;;;;;;;;;1105:1742:22:o;3242:461::-;3294:3;3332:5;3326:12;3359:6;3354:3;3347:19;3385:4;3414:2;3409:3;3405:12;3398:19;;3451:2;3444:5;3440:14;3472:1;3482:196;3496:6;3493:1;3490:13;3482:196;;;3561:13;;-1:-1:-1;;;;;;3557:40:22;3545:53;;3618:12;;;;3653:15;;;;3518:1;3511:9;3482:196;;;-1:-1:-1;3694:3:22;;3242:461;-1:-1:-1;;;;;3242:461:22:o;3708:1185::-;3926:4;3955:2;3995;3984:9;3980:18;4025:2;4014:9;4007:21;4048:6;4083;4077:13;4114:6;4106;4099:22;4140:2;4130:12;;4173:2;4162:9;4158:18;4151:25;;4235:2;4225:6;4222:1;4218:14;4207:9;4203:30;4199:39;4273:2;4265:6;4261:15;4294:1;4304:560;4318:6;4315:1;4312:13;4304:560;;;4383:22;;;-1:-1:-1;;4379:36:22;4367:49;;4439:13;;4485:9;;4507:18;;;4552:48;4584:15;;;4485:9;4552:48;:::i;:::-;4641:11;;;4635:18;4690:19;;;4673:15;;;4666:44;4635:18;4538:62;-1:-1:-1;4733:51:22;4538:62;4635:18;4733:51;:::i;:::-;4842:12;;;;4723:61;-1:-1:-1;;;4807:15:22;;;;4340:1;4333:9;4304:560;;;-1:-1:-1;4881:6:22;;3708:1185;-1:-1:-1;;;;;;;;3708:1185:22:o;4898:803::-;5060:4;5089:2;5129;5118:9;5114:18;5159:2;5148:9;5141:21;5182:6;5217;5211:13;5248:6;5240;5233:22;5286:2;5275:9;5271:18;5264:25;;5348:2;5338:6;5335:1;5331:14;5320:9;5316:30;5312:39;5298:53;;5386:2;5378:6;5374:15;5407:1;5417:255;5431:6;5428:1;5425:13;5417:255;;;5524:2;5520:7;5508:9;5500:6;5496:22;5492:36;5487:3;5480:49;5552:40;5585:6;5576;5570:13;5552:40;:::i;:::-;5542:50;-1:-1:-1;5650:12:22;;;;5615:15;;;;5453:1;5446:9;5417:255;;;-1:-1:-1;5689:6:22;;4898:803;-1:-1:-1;;;;;;;4898:803:22:o;5706:1073::-;5908:4;5937:2;5977;5966:9;5962:18;6007:2;5996:9;5989:21;6030:6;6065;6059:13;6096:6;6088;6081:22;6122:2;6112:12;;6155:2;6144:9;6140:18;6133:25;;6217:2;6207:6;6204:1;6200:14;6189:9;6185:30;6181:39;6255:2;6247:6;6243:15;6276:1;6286:464;6300:6;6297:1;6294:13;6286:464;;;6365:22;;;-1:-1:-1;;6361:36:22;6349:49;;6421:13;;6466:9;;-1:-1:-1;;;;;6462:35:22;6447:51;;6537:11;;6531:18;6569:15;;;6562:27;;;6612:58;6654:15;;;6531:18;6612:58;:::i;:::-;6728:12;;;;6602:68;-1:-1:-1;;6693:15:22;;;;6322:1;6315:9;6286:464;;7211:127;7272:10;7267:3;7263:20;7260:1;7253:31;7303:4;7300:1;7293:15;7327:4;7324:1;7317:15;7343:125;7408:9;;;7429:10;;;7426:36;;;7442:18;;:::i;:::-;7343:125;;;;:::o;7473:277::-;7540:6;7593:2;7581:9;7572:7;7568:23;7564:32;7561:52;;;7609:1;7606;7599:12;7561:52;7641:9;7635:16;7694:5;7687:13;7680:21;7673:5;7670:32;7660:60;;7716:1;7713;7706:12;7660:60;7739:5;7473:277;-1:-1:-1;;;7473:277:22:o;7755:184::-;7825:6;7878:2;7866:9;7857:7;7853:23;7849:32;7846:52;;;7894:1;7891;7884:12;7846:52;-1:-1:-1;7917:16:22;;7755:184;-1:-1:-1;7755:184:22:o;9541:202::-;-1:-1:-1;;;;;;9703:33:22;;;;9685:52;;9673:2;9658:18;;9541:202::o;10175:380::-;10254:1;10250:12;;;;10297;;;10318:61;;10372:4;10364:6;10360:17;10350:27;;10318:61;10425:2;10417:6;10414:14;10394:18;10391:38;10388:161;;10471:10;10466:3;10462:20;10459:1;10452:31;10506:4;10503:1;10496:15;10534:4;10531:1;10524:15;10388:161;;10175:380;;;:::o;12307:128::-;12374:9;;;12395:11;;;12392:37;;;12409:18;;:::i;13739:168::-;13812:9;;;13843;;13860:15;;;13854:22;;13840:37;13830:71;;13881:18;;:::i","linkReferences":{}},"methodIdentifiers":{"INITIAL_DEPOSIT()":"8eb4f434","IS_TEST()":"fa7626d4","LOCK_TIME()":"413d9c3a","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSelectors()":"b0464fdc","excludeSenders()":"1ed7831c","failed()":"ba414fa6","guardian()":"452a9320","owner()":"8da5cb5b","piggyBank()":"b7d5d4c0","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testAccessControls()":"dc73d494","testAllIntegrationFeatures()":"ea673c85","testAllSecurityFeatures()":"db086b7d","testContractPausing()":"76013534","testCustomErrors()":"d43f0b3f","testDepositLimits()":"167c1490","testDirectETHTransfers()":"385e5330","testEmergencyMode()":"07c80257","testEventEmissions()":"15de0567","testFullDepositWithdrawCycle()":"e39bbddd","testGasOptimizations()":"6f911760","testMultipleDepositsSameUser()":"aff797aa","testReentrancyProtection()":"eb7aabd4","testStatisticsTracking()":"b5678a21","testViewFunctions()":"349c8be6","user1()":"ac1717b0","user2()":"b9edb1af"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"testName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"passed\",\"type\":\"bool\"}],\"name\":\"TestResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"INITIAL_DEPOSIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_TIME\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"guardian\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"piggyBank\",\"outputs\":[{\"internalType\":\"contract PiggyBank\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"artifact\",\"type\":\"string\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzArtifactSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testAccessControls\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testAllIntegrationFeatures\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testAllSecurityFeatures\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testContractPausing\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCustomErrors\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testDepositLimits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testDirectETHTransfers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testEmergencyMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testEventEmissions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testFullDepositWithdrawCycle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testGasOptimizations\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testMultipleDepositsSameUser\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testReentrancyProtection\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testStatisticsTracking\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testViewFunctions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"user1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"user2\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"PiggyBankSecurityTest\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Comprehensive security tests for enhanced PiggyBank contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/PiggyBankSecurity.t.sol\":\"PiggyBankSecurityTest\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4b2a5a85e045dcf6a082700c7252e43854c2eed88f860aaa18ec1e85218ae2bf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://98d060ed5be569a92d908fc358149039dc8f833d61973aa1b9d1d8235676bf6d\",\"dweb:/ipfs/QmaWQpn5dJmbMS5skwmPPMeUWZG35BLkignPpcA3zyagEs\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0xd8eec16034b53b52c90a3d720e121ce7d30d64cc57d854db7d817d5b382dda43\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://612780755e32668c7e3b747d94d16c7291101144e084dd9ee563f071711e99e3\",\"dweb:/ipfs/QmQgtFJXEmDtSHT7tZQTMbb6PCDpq5UDYFvrBnWk1Xo2SY\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xae394f477769a38276d98d4854bc865fc8d281edbd4e72167507adb8236812aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34a0e609a4ec617b5c349f5e89a3352810cc5e4d3adaf939b32a27e4a5e46de2\",\"dweb:/ipfs/QmPfjimWAGGb6rzDjNMtLeZ93JJbCJJMov5gaNKyTy1doe\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x0fa6ec03602648b62cce41aab2096e6b7e052f2846075d967b6958dd586db746\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cd84e2ca9c1eaed6b76768cc12bb8c1af8289170ea8b7706f58d516460d79c41\",\"dweb:/ipfs/QmQ7BK7co6DE4eWUqMyv11s5eHYkS1tyx8tDSZGZVtf2aK\"]},\"lib/forge-std/src/StdConstants.sol\":{\"keccak256\":\"0x319ccdabfa2c0b2428301445873270ffea20f0e039d4fd5e6eeba65158e4e534\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b633f9d3a719e1d035ce7daa6cc051ddf89a72d34200d14cec37728e245cdabc\",\"dweb:/ipfs/QmRP7HQJpHMx1CsFrY8tXVVx1DQmi2dcb2BoGfiWaA923r\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x4dab3021edfa9511bbdd80c48f060ef62eaf457f99eaf841f561fc2557d9a08d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07668628673174cf8f27f8f4e1f862bab775013ec247eb34f698c5005f229391\",\"dweb:/ipfs/QmPJsiiYwmCZXMsHmQv5tg8VF3CAhNdat7WnKLTWZZH2v5\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xbc0132abe1c2accc2867c0f03667afffdf92f3e95a581bb03c9557eaa38ea500\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb6fab37dc73c219cfbb7b4f4998bcf7677ca5397a867e850f40232192073974\",\"dweb:/ipfs/QmUHsbVdp9SKmgek7ZfPcLTKrpZFXpqaqt4sVejzxGEQL3\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x04102de0a79398e4bdea57b7a4818655b4cc66d6f81d1cff08bf428cd0b384cd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53edc6c8f7f67cafc0129f039637c77d979880f7f1947defea31e8f0c05095bc\",\"dweb:/ipfs/QmUKXJd1vFCkxxrkXNLURdXrx2apoyWQFrFb5UqNkjdHVi\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdToml.sol\":{\"keccak256\":\"0x58a72c765ed3f7ff6b105509689658795b8a3739b8931772a497155878381861\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4a3746f4fabaeb980bd77d9e091d3904ee38a6c0e191bfa8ba6874c6f8558a3\",\"dweb:/ipfs/QmUfFDMEn461FgGEXt5HicyGD54sc28sLaQ9JRWDMBKed8\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0xb2469a902a326074034c4f7081d868113db0edbb7cf48b86528af2d6b07295f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1430a81c4978be875e2a3b31a8bfa4e1438fecd327f23771b690d64db63c020a\",\"dweb:/ipfs/QmW6aB2u1LNaRgGQFwjV7L7UbxsRg63iJ7AuujPouEa4cT\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x3dda6083a83dfa3e8526e97bcc28e862ee2442dd58fe94d5c426d65b8e38f73c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33f8c02e4dabdab86a6825125856446a8657eacd712318b51b7818e4a6f6e3f4\",\"dweb:/ipfs/QmRKSjVnrk54yr8wTK2e6QxRjiuba2H8HJSKunHAkdo7RG\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x6f235e293b4406784ff3bd89b2e4d51d0922918cf6825e7a7a09413606932e39\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://afc4fceb24a18596a239e82eb354c41d9a4e28d3fc56fcce04146af2c692b1b9\",\"dweb:/ipfs/QmQCHSAb5k9KQW9kEzeoPdirSknkWso4q4t5CSVFLNnMLB\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57\",\"dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d\",\"dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab\",\"dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3\"]},\"src/PiggyBank.sol\":{\"keccak256\":\"0x7f872fc53bc934074bfffccf4204f76f66a8a51fc252e8a2e7ce97f806690ea1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fd6a936a003deea234e6d45971529963c847614be170b5387d22c6c52d54314\",\"dweb:/ipfs/QmQsDEV4j18P4RQt5onsGdG3fAAqi9gm29CEgJnowvab8r\"]},\"test/PiggyBankSecurity.t.sol\":{\"keccak256\":\"0x6073c076be2637194b1727a49cf2e2384a1ab97662f737b99d5ebd789cb42f1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d2e004d326a7238bef685c492ef9ce972ed01b55ae41ec5f154f1ea9222e1ff\",\"dweb:/ipfs/Qmf24EMJpmWrZ1Ni3YuzDj3ouLkd1FREBj5ZZm9nZedA14\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"depositor","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Deposited","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"string","name":"testName","type":"string","indexed":false},{"internalType":"bool","name":"passed","type":"bool","indexed":false}],"type":"event","name":"TestResult","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"INITIAL_DEPOSIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_TIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"excludedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"guardian","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"piggyBank","outputs":[{"internalType":"contract PiggyBank","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzArtifactSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"string","name":"artifact","type":"string"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testAccessControls"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testAllIntegrationFeatures"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testAllSecurityFeatures"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testContractPausing"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCustomErrors"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testDepositLimits"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testDirectETHTransfers"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testEmergencyMode"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testEventEmissions"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testFullDepositWithdrawCycle"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testGasOptimizations"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testMultipleDepositsSameUser"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testReentrancyProtection"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testStatisticsTracking"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testViewFunctions"},{"inputs":[],"stateMutability":"view","type":"function","name":"user1","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"user2","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/PiggyBankSecurity.t.sol":"PiggyBankSecurityTest"},"evmVersion":"shanghai","libraries":{}},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4b2a5a85e045dcf6a082700c7252e43854c2eed88f860aaa18ec1e85218ae2bf","urls":["bzz-raw://98d060ed5be569a92d908fc358149039dc8f833d61973aa1b9d1d8235676bf6d","dweb:/ipfs/QmaWQpn5dJmbMS5skwmPPMeUWZG35BLkignPpcA3zyagEs"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0xd8eec16034b53b52c90a3d720e121ce7d30d64cc57d854db7d817d5b382dda43","urls":["bzz-raw://612780755e32668c7e3b747d94d16c7291101144e084dd9ee563f071711e99e3","dweb:/ipfs/QmQgtFJXEmDtSHT7tZQTMbb6PCDpq5UDYFvrBnWk1Xo2SY"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xae394f477769a38276d98d4854bc865fc8d281edbd4e72167507adb8236812aa","urls":["bzz-raw://34a0e609a4ec617b5c349f5e89a3352810cc5e4d3adaf939b32a27e4a5e46de2","dweb:/ipfs/QmPfjimWAGGb6rzDjNMtLeZ93JJbCJJMov5gaNKyTy1doe"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0x0fa6ec03602648b62cce41aab2096e6b7e052f2846075d967b6958dd586db746","urls":["bzz-raw://cd84e2ca9c1eaed6b76768cc12bb8c1af8289170ea8b7706f58d516460d79c41","dweb:/ipfs/QmQ7BK7co6DE4eWUqMyv11s5eHYkS1tyx8tDSZGZVtf2aK"],"license":"MIT"},"lib/forge-std/src/StdConstants.sol":{"keccak256":"0x319ccdabfa2c0b2428301445873270ffea20f0e039d4fd5e6eeba65158e4e534","urls":["bzz-raw://b633f9d3a719e1d035ce7daa6cc051ddf89a72d34200d14cec37728e245cdabc","dweb:/ipfs/QmRP7HQJpHMx1CsFrY8tXVVx1DQmi2dcb2BoGfiWaA923r"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x4dab3021edfa9511bbdd80c48f060ef62eaf457f99eaf841f561fc2557d9a08d","urls":["bzz-raw://07668628673174cf8f27f8f4e1f862bab775013ec247eb34f698c5005f229391","dweb:/ipfs/QmPJsiiYwmCZXMsHmQv5tg8VF3CAhNdat7WnKLTWZZH2v5"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0xbc0132abe1c2accc2867c0f03667afffdf92f3e95a581bb03c9557eaa38ea500","urls":["bzz-raw://eb6fab37dc73c219cfbb7b4f4998bcf7677ca5397a867e850f40232192073974","dweb:/ipfs/QmUHsbVdp9SKmgek7ZfPcLTKrpZFXpqaqt4sVejzxGEQL3"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0x04102de0a79398e4bdea57b7a4818655b4cc66d6f81d1cff08bf428cd0b384cd","urls":["bzz-raw://53edc6c8f7f67cafc0129f039637c77d979880f7f1947defea31e8f0c05095bc","dweb:/ipfs/QmUKXJd1vFCkxxrkXNLURdXrx2apoyWQFrFb5UqNkjdHVi"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdToml.sol":{"keccak256":"0x58a72c765ed3f7ff6b105509689658795b8a3739b8931772a497155878381861","urls":["bzz-raw://b4a3746f4fabaeb980bd77d9e091d3904ee38a6c0e191bfa8ba6874c6f8558a3","dweb:/ipfs/QmUfFDMEn461FgGEXt5HicyGD54sc28sLaQ9JRWDMBKed8"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0xb2469a902a326074034c4f7081d868113db0edbb7cf48b86528af2d6b07295f8","urls":["bzz-raw://1430a81c4978be875e2a3b31a8bfa4e1438fecd327f23771b690d64db63c020a","dweb:/ipfs/QmW6aB2u1LNaRgGQFwjV7L7UbxsRg63iJ7AuujPouEa4cT"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x3dda6083a83dfa3e8526e97bcc28e862ee2442dd58fe94d5c426d65b8e38f73c","urls":["bzz-raw://33f8c02e4dabdab86a6825125856446a8657eacd712318b51b7818e4a6f6e3f4","dweb:/ipfs/QmRKSjVnrk54yr8wTK2e6QxRjiuba2H8HJSKunHAkdo7RG"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x6f235e293b4406784ff3bd89b2e4d51d0922918cf6825e7a7a09413606932e39","urls":["bzz-raw://afc4fceb24a18596a239e82eb354c41d9a4e28d3fc56fcce04146af2c692b1b9","dweb:/ipfs/QmQCHSAb5k9KQW9kEzeoPdirSknkWso4q4t5CSVFLNnMLB"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5","urls":["bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57","dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f","urls":["bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d","dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11","urls":["bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab","dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3"],"license":"MIT"},"src/PiggyBank.sol":{"keccak256":"0x7f872fc53bc934074bfffccf4204f76f66a8a51fc252e8a2e7ce97f806690ea1","urls":["bzz-raw://5fd6a936a003deea234e6d45971529963c847614be170b5387d22c6c52d54314","dweb:/ipfs/QmQsDEV4j18P4RQt5onsGdG3fAAqi9gm29CEgJnowvab8r"],"license":"MIT"},"test/PiggyBankSecurity.t.sol":{"keccak256":"0x6073c076be2637194b1727a49cf2e2384a1ab97662f737b99d5ebd789cb42f1b","urls":["bzz-raw://4d2e004d326a7238bef685c492ef9ce972ed01b55ae41ec5f154f1ea9222e1ff","dweb:/ipfs/Qmf24EMJpmWrZ1Ni3YuzDj3ouLkd1FREBj5ZZm9nZedA14"],"license":"MIT"}},"version":1},"id":21} \ No newline at end of file diff --git a/out/build-info/aab777803c1ade9c.json b/out/build-info/1e2f2db3cba34709.json similarity index 79% rename from out/build-info/aab777803c1ade9c.json rename to out/build-info/1e2f2db3cba34709.json index 920d458..13695ef 100644 --- a/out/build-info/aab777803c1ade9c.json +++ b/out/build-info/1e2f2db3cba34709.json @@ -1 +1 @@ -{"id":"aab777803c1ade9c","source_id_to_path":{"0":"lib/forge-std/src/Base.sol","1":"lib/forge-std/src/StdAssertions.sol","2":"lib/forge-std/src/StdChains.sol","3":"lib/forge-std/src/StdCheats.sol","4":"lib/forge-std/src/StdConstants.sol","5":"lib/forge-std/src/StdError.sol","6":"lib/forge-std/src/StdInvariant.sol","7":"lib/forge-std/src/StdJson.sol","8":"lib/forge-std/src/StdMath.sol","9":"lib/forge-std/src/StdStorage.sol","10":"lib/forge-std/src/StdStyle.sol","11":"lib/forge-std/src/StdToml.sol","12":"lib/forge-std/src/StdUtils.sol","13":"lib/forge-std/src/Test.sol","14":"lib/forge-std/src/Vm.sol","15":"lib/forge-std/src/console.sol","16":"lib/forge-std/src/console2.sol","17":"lib/forge-std/src/interfaces/IMulticall3.sol","18":"lib/forge-std/src/safeconsole.sol","19":"src/PiggyBank.sol","20":"test/PiggyBank.t.sol"},"language":"Solidity"} \ No newline at end of file +{"id":"1e2f2db3cba34709","source_id_to_path":{"0":"lib/forge-std/src/Base.sol","1":"lib/forge-std/src/StdAssertions.sol","2":"lib/forge-std/src/StdChains.sol","3":"lib/forge-std/src/StdCheats.sol","4":"lib/forge-std/src/StdConstants.sol","5":"lib/forge-std/src/StdError.sol","6":"lib/forge-std/src/StdInvariant.sol","7":"lib/forge-std/src/StdJson.sol","8":"lib/forge-std/src/StdMath.sol","9":"lib/forge-std/src/StdStorage.sol","10":"lib/forge-std/src/StdStyle.sol","11":"lib/forge-std/src/StdToml.sol","12":"lib/forge-std/src/StdUtils.sol","13":"lib/forge-std/src/Test.sol","14":"lib/forge-std/src/Vm.sol","15":"lib/forge-std/src/console.sol","16":"lib/forge-std/src/console2.sol","17":"lib/forge-std/src/interfaces/IMulticall3.sol","18":"lib/forge-std/src/safeconsole.sol","19":"src/PiggyBank.sol","20":"test/PiggyBank.t.sol","21":"test/PiggyBankSecurity.t.sol"},"language":"Solidity"} \ No newline at end of file diff --git a/test/PiggyBankSecurity.t.sol b/test/PiggyBankSecurity.t.sol index 4089b14..04339d7 100644 --- a/test/PiggyBankSecurity.t.sol +++ b/test/PiggyBankSecurity.t.sol @@ -14,267 +14,269 @@ contract PiggyBankSecurityTest is Test { address public guardian = address(2); address public user1 = address(3); address public user2 = address(4); - + uint256 public constant INITIAL_DEPOSIT = 1 ether; uint256 public constant LOCK_TIME = 365 days; - + event TestResult(string testName, bool passed); - + event Deposited(address indexed depositor, uint256 amount); + event OwnershipTransferred( + address indexed previousOwner, + address indexed newOwner + ); + function setUp() public { vm.prank(owner); piggyBank = new PiggyBank(block.timestamp + LOCK_TIME); - + // Set emergency guardian vm.prank(owner); piggyBank.setEmergencyGuardian(guardian); - + // Fund users for testing vm.deal(user1, 10 ether); vm.deal(user2, 10 ether); } - + // ============ SECURITY TESTS ============ - + function testDepositLimits() public { vm.startPrank(user1); - + // Test minimum deposit vm.expectRevert(PiggyBank.PiggyBank__DepositTooLow.selector); piggyBank.deposit{value: 0.0001 ether}(); - + // Test maximum deposit vm.expectRevert(PiggyBank.PiggyBank__DepositTooHigh.selector); piggyBank.deposit{value: 2000 ether}(); - + // Test valid deposit piggyBank.deposit{value: INITIAL_DEPOSIT}(); assertEq(piggyBank.deposits(user1), INITIAL_DEPOSIT); - + emit TestResult("Deposit Limits", true); vm.stopPrank(); } - + function testReentrancyProtection() public { vm.startPrank(user1); piggyBank.deposit{value: INITIAL_DEPOSIT}(); - + // Fast-forward time to unlock vm.warp(block.timestamp + LOCK_TIME + 1); - + // Multiple simultaneous withdraw attempts should be prevented vm.expectRevert(PiggyBank.PiggyBank__Paused.selector); piggyBank.withdraw(); - + emit TestResult("Reentrancy Protection", true); vm.stopPrank(); } - + function testAccessControls() public { // Test owner-only functions vm.prank(user1); vm.expectRevert(PiggyBank.PiggyBank__Unauthorized.selector); piggyBank.pause(); - + vm.prank(user1); vm.expectRevert(PiggyBank.PiggyBank__Unauthorized.selector); piggyBank.setEmergencyGuardian(address(5)); - + vm.prank(guardian); vm.expectRevert(PiggyBank.PiggyBank__Unauthorized.selector); piggyBank.activateEmergencyMode(block.timestamp + LOCK_TIME); - + emit TestResult("Access Controls", true); } - + function testEmergencyMode() public { vm.prank(guardian); piggyBank.activateEmergencyMode(block.timestamp + 30 days); - + assertTrue(piggyBank.paused()); assertTrue(piggyBank.emergencyMode()); - + // Users should be able to withdraw in emergency mode vm.startPrank(user1); piggyBank.deposit{value: INITIAL_DEPOSIT}(); piggyBank.withdraw(); assertEq(piggyBank.deposits(user1), 0); - + emit TestResult("Emergency Mode", true); vm.stopPrank(); } - + function testDirectETHTransfers() public { // Test receive function vm.startPrank(user1); (bool success, ) = address(piggyBank).call{value: INITIAL_DEPOSIT}(""); assertTrue(success); assertEq(piggyBank.deposits(user1), INITIAL_DEPOSIT); - + // Test fallback function reverts vm.expectRevert("PiggyBank: Direct calls not allowed"); (success, ) = address(piggyBank).call("unexpected function"); - + emit TestResult("Direct ETH Transfers", true); vm.stopPrank(); } - + function testCustomErrors() public { // Test various custom error scenarios vm.startPrank(user1); - + // Zero value deposit vm.expectRevert(PiggyBank.PiggyBank__ZeroValue.selector); piggyBank.deposit{value: 0}(); - + // No deposits to withdraw vm.warp(block.timestamp + LOCK_TIME + 1); - vm.expectRevert(PiggyBank.PiggyBank__NoDeposits.selector); + vm.expectRevert(PiggyBank.PiggyBank__NoDeposit.selector); piggyBank.withdraw(); - + emit TestResult("Custom Errors", true); vm.stopPrank(); } - + function testGasOptimizations() public { vm.startPrank(user1); - + uint256 gasBefore = gasleft(); piggyBank.deposit{value: INITIAL_DEPOSIT}(); uint256 gasUsed = gasBefore - gasleft(); - + // Verify deposit was successful with minimal gas assertEq(piggyBank.deposits(user1), INITIAL_DEPOSIT); - + emit TestResult("Gas Optimizations", true); vm.stopPrank(); } - + function testStatisticsTracking() public { assertEq(piggyBank.numberOfDepositors(), 0); assertEq(piggyBank.totalDeposits(), 0); - + vm.startPrank(user1); piggyBank.deposit{value: INITIAL_DEPOSIT}(); vm.stopPrank(); - + assertEq(piggyBank.numberOfDepositors(), 1); assertEq(piggyBank.totalDeposits(), INITIAL_DEPOSIT); - + vm.startPrank(user2); piggyBank.deposit{value: INITIAL_DEPOSIT}(); vm.stopPrank(); - + assertEq(piggyBank.numberOfDepositors(), 2); assertEq(piggyBank.totalDeposits(), INITIAL_DEPOSIT * 2); - + emit TestResult("Statistics Tracking", true); } - + function testViewFunctions() public { - // Test canDeposit - assertTrue(piggyBank.canDeposit(user1)); - // Test canWithdraw (should be false before unlock) assertFalse(piggyBank.canWithdraw(user1)); - + // Test getMaxAdditionalDeposit assertEq(piggyBank.getMaxAdditionalDeposit(user1), 1000 ether); - + // Test getTimeRemaining uint256 timeRemaining = piggyBank.getTimeRemaining(); assertTrue(timeRemaining > 0); assertTrue(timeRemaining <= LOCK_TIME); - + emit TestResult("View Functions", true); } - + function testEventEmissions() public { vm.startPrank(user1); - + // Test Deposited event vm.expectEmit(true, true, false, true); - emit Deposited(user1, INITIAL_DEPOSIT, block.timestamp); + emit Deposited(user1, INITIAL_DEPOSIT); piggyBank.deposit{value: INITIAL_DEPOSIT}(); - + // Test OwnershipTransferred event address newOwner = address(5); vm.expectEmit(true, true, false, true); emit OwnershipTransferred(owner, newOwner); vm.prank(owner); piggyBank.transferOwnership(newOwner); - + emit TestResult("Event Emissions", true); vm.stopPrank(); } - + // ============ INTEGRATION TESTS ============ - + function testFullDepositWithdrawCycle() public { vm.startPrank(user1); - + // Deposit piggyBank.deposit{value: INITIAL_DEPOSIT}(); assertEq(piggyBank.deposits(user1), INITIAL_DEPOSIT); assertEq(piggyBank.getBalance(), INITIAL_DEPOSIT); - + // Fast-forward to unlock time vm.warp(block.timestamp + LOCK_TIME + 1); - + // Withdraw piggyBank.withdraw(); assertEq(piggyBank.deposits(user1), 0); assertEq(user1.balance, 10 ether - INITIAL_DEPOSIT); // Account for gas costs - + emit TestResult("Full Deposit Withdraw Cycle", true); vm.stopPrank(); } - + function testMultipleDepositsSameUser() public { vm.startPrank(user1); - + // Multiple deposits from same user piggyBank.deposit{value: 0.5 ether}(); piggyBank.deposit{value: 0.3 ether}(); piggyBank.deposit{value: 0.2 ether}(); - + assertEq(piggyBank.deposits(user1), 1 ether); assertEq(piggyBank.userDepositCount(user1), 3); assertEq(piggyBank.numberOfDepositors(), 1); // Should still be 1 - + emit TestResult("Multiple Deposits Same User", true); vm.stopPrank(); } - + function testContractPausing() public { vm.startPrank(user1); piggyBank.deposit{value: INITIAL_DEPOSIT}(); vm.stopPrank(); - + // Pause contract vm.prank(owner); piggyBank.pause(); - + // Should not be able to deposit while paused vm.startPrank(user2); vm.expectRevert(PiggyBank.PiggyBank__Paused.selector); piggyBank.deposit{value: INITIAL_DEPOSIT}(); - + // Should not be able to withdraw while paused (unless emergency mode) vm.startPrank(user1); vm.expectRevert(PiggyBank.PiggyBank__Paused.selector); piggyBank.withdraw(); - + // Unpause vm.prank(owner); piggyBank.unpause(); - + // Should work again piggyBank.deposit{value: INITIAL_DEPOSIT}(); - + emit TestResult("Contract Pausing", true); vm.stopPrank(); } - + function testAllSecurityFeatures() public { // Run comprehensive security test testDepositLimits(); @@ -287,16 +289,16 @@ contract PiggyBankSecurityTest is Test { testStatisticsTracking(); testViewFunctions(); testEventEmissions(); - + emit TestResult("All Security Features", true); } - + function testAllIntegrationFeatures() public { // Run comprehensive integration test testFullDepositWithdrawCycle(); testMultipleDepositsSameUser(); testContractPausing(); - + emit TestResult("All Integration Features", true); } -} \ No newline at end of file +}