From d732bfba1da0d154ea47546b8a9bcc13e90b9944 Mon Sep 17 00:00:00 2001 From: tim Date: Tue, 11 Nov 2025 18:46:39 -0400 Subject: [PATCH] sepolia redeploy --- deployment/11155111/v1/out/Address.sol/Address.json | 2 +- deployment/11155111/v1/out/Context.sol/Context.json | 2 +- deployment/11155111/v1/out/DeploySepolia.sol/DeploySepolia.json | 2 +- deployment/11155111/v1/out/ERC20.sol/ERC20.json | 2 +- deployment/11155111/v1/out/ERC20External.sol/ERC20External.json | 2 +- deployment/11155111/v1/out/ERC20Internal.sol/ERC20Internal.json | 2 +- deployment/11155111/v1/out/Errors.sol/Errors.json | 2 +- deployment/11155111/v1/out/IERC165.sol/IERC165.json | 2 +- deployment/11155111/v1/out/IERC20.sol/IERC20.json | 2 +- .../11155111/v1/out/IERC20Metadata.sol/IERC20Metadata.json | 2 +- deployment/11155111/v1/out/IOwnable.sol/IOwnable.json | 2 +- .../v1/out/IPartyFlashCallback.sol/IPartyFlashCallback.json | 2 +- deployment/11155111/v1/out/IPartyPlanner.sol/IPartyPlanner.json | 2 +- deployment/11155111/v1/out/IPartyPool.sol/IPartyPool.json | 2 +- .../11155111/v1/out/LMSRStabilized.sol/LMSRStabilized.json | 2 +- .../LMSRStabilizedBalancedPair.json | 2 +- deployment/11155111/v1/out/LowLevelCall.sol/LowLevelCall.json | 2 +- deployment/11155111/v1/out/MockERC20.sol/MockERC20.json | 2 +- deployment/11155111/v1/out/NativeWrapper.sol/NativeWrapper.json | 2 +- .../11155111/v1/out/OwnableExternal.sol/OwnableExternal.json | 2 +- .../11155111/v1/out/OwnableInternal.sol/OwnableInternal.json | 2 +- deployment/11155111/v1/out/PartyPlanner.sol/PartyPlanner.json | 2 +- deployment/11155111/v1/out/PartyPool.sol/PartyPool.json | 2 +- .../v1/out/PartyPoolBalancedPair.sol/PartyPoolBalancedPair.json | 2 +- deployment/11155111/v1/out/PartyPoolBase.sol/PartyPoolBase.json | 2 +- .../v1/out/PartyPoolDeployer.sol/IPartyPoolDeployer.json | 2 +- .../PartyPoolDeployer.sol/PartyPoolBalancedPairDeployer.json | 2 +- .../v1/out/PartyPoolDeployer.sol/PartyPoolDeployer.json | 2 +- .../11155111/v1/out/PartyPoolHelpers.sol/PartyPoolHelpers.json | 2 +- .../v1/out/PartyPoolMintImpl.sol/PartyPoolMintImpl.json | 2 +- .../v1/out/PartyPoolSwapImpl.sol/PartyPoolSwapImpl.json | 2 +- .../11155111/v1/out/ReentrancyGuard.sol/ReentrancyGuard.json | 2 +- deployment/11155111/v1/out/SafeERC20.sol/SafeERC20.json | 2 +- deployment/11155111/v1/out/StorageSlot.sol/StorageSlot.json | 2 +- .../11155111/v1/out/draft-IERC6093.sol/IERC1155Errors.json | 2 +- deployment/11155111/v1/out/draft-IERC6093.sol/IERC20Errors.json | 2 +- .../11155111/v1/out/draft-IERC6093.sol/IERC721Errors.json | 2 +- 37 files changed, 37 insertions(+), 37 deletions(-) diff --git a/deployment/11155111/v1/out/Address.sol/Address.json b/deployment/11155111/v1/out/Address.sol/Address.json index 2ed716f..21ab568 100644 --- a/deployment/11155111/v1/out/Address.sol/Address.json +++ b/deployment/11155111/v1/out/Address.sol/Address.json @@ -1 +1 @@ -{"abi":[{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220eb0570070fec78251db3fa24b17454c9bec7df5e60c2499d03d66c5c28208ff764736f6c634300081e0033","sourceMap":"282:6520:27:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea2646970667358221220eb0570070fec78251db3fa24b17454c9bec7df5e60c2499d03d66c5c28208ff764736f6c634300081e0033","sourceMap":"282:6520:27:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd274645d15bb7e4fcb9c833e401b2c5837404f90057f11a49118f25e0af7c76f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d38e0b997bb7aebae26d190b03d0991feb0d204c45f945e60014e1ca9175de69\",\"dweb:/ipfs/QmWzsUHHAZcjMyF8uMDEtNpMTkYZdQrfvdKPobXvwVHKo6\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x50e81a8b089e3f382b6c915aa0166773de64ea4756e8f9479d9943a5f956ddf5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bfeb96a150537222e2191c03887127499a4f21dfb5f9a7211da4d81749b52848\",\"dweb:/ipfs/QmYR75ECbsBuxSiXmGvGfNKJRLoK5MdLUZL1bd8SixzxL4\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/Address.sol":"Address"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd274645d15bb7e4fcb9c833e401b2c5837404f90057f11a49118f25e0af7c76f","urls":["bzz-raw://d38e0b997bb7aebae26d190b03d0991feb0d204c45f945e60014e1ca9175de69","dweb:/ipfs/QmWzsUHHAZcjMyF8uMDEtNpMTkYZdQrfvdKPobXvwVHKo6"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol":{"keccak256":"0x50e81a8b089e3f382b6c915aa0166773de64ea4756e8f9479d9943a5f956ddf5","urls":["bzz-raw://bfeb96a150537222e2191c03887127499a4f21dfb5f9a7211da4d81749b52848","dweb:/ipfs/QmYR75ECbsBuxSiXmGvGfNKJRLoK5MdLUZL1bd8SixzxL4"],"license":"MIT"}},"version":1},"id":27} \ No newline at end of file +{"abi":[{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220eb0570070fec78251db3fa24b17454c9bec7df5e60c2499d03d66c5c28208ff764736f6c634300081e0033","sourceMap":"282:6520:25:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea2646970667358221220eb0570070fec78251db3fa24b17454c9bec7df5e60c2499d03d66c5c28208ff764736f6c634300081e0033","sourceMap":"282:6520:25:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd274645d15bb7e4fcb9c833e401b2c5837404f90057f11a49118f25e0af7c76f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d38e0b997bb7aebae26d190b03d0991feb0d204c45f945e60014e1ca9175de69\",\"dweb:/ipfs/QmWzsUHHAZcjMyF8uMDEtNpMTkYZdQrfvdKPobXvwVHKo6\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x50e81a8b089e3f382b6c915aa0166773de64ea4756e8f9479d9943a5f956ddf5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bfeb96a150537222e2191c03887127499a4f21dfb5f9a7211da4d81749b52848\",\"dweb:/ipfs/QmYR75ECbsBuxSiXmGvGfNKJRLoK5MdLUZL1bd8SixzxL4\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/Address.sol":"Address"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd274645d15bb7e4fcb9c833e401b2c5837404f90057f11a49118f25e0af7c76f","urls":["bzz-raw://d38e0b997bb7aebae26d190b03d0991feb0d204c45f945e60014e1ca9175de69","dweb:/ipfs/QmWzsUHHAZcjMyF8uMDEtNpMTkYZdQrfvdKPobXvwVHKo6"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol":{"keccak256":"0x50e81a8b089e3f382b6c915aa0166773de64ea4756e8f9479d9943a5f956ddf5","urls":["bzz-raw://bfeb96a150537222e2191c03887127499a4f21dfb5f9a7211da4d81749b52848","dweb:/ipfs/QmYR75ECbsBuxSiXmGvGfNKJRLoK5MdLUZL1bd8SixzxL4"],"license":"MIT"}},"version":1},"id":25} \ No newline at end of file diff --git a/deployment/11155111/v1/out/Context.sol/Context.json b/deployment/11155111/v1/out/Context.sol/Context.json index f9e4696..eca1cf4 100644 --- a/deployment/11155111/v1/out/Context.sol/Context.json +++ b/deployment/11155111/v1/out/Context.sol/Context.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/Context.sol":"Context"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"}},"version":1},"id":28} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/Context.sol":"Context"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"}},"version":1},"id":26} \ No newline at end of file diff --git a/deployment/11155111/v1/out/DeploySepolia.sol/DeploySepolia.json b/deployment/11155111/v1/out/DeploySepolia.sol/DeploySepolia.json index 1f29fca..a92af2e 100644 --- a/deployment/11155111/v1/out/DeploySepolia.sol/DeploySepolia.json +++ b/deployment/11155111/v1/out/DeploySepolia.sol/DeploySepolia.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"IS_SCRIPT","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"PROTOCOL_FEE_ADDRESS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"PROTOCOL_FEE_PPM","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"WETH","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract NativeWrapper"}],"stateMutability":"view"},{"type":"function","name":"run","inputs":[],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x608080604052346028576201000162ff00ff19600c541617600c556201e94090816200002d8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c90816341a20a931461330d5750806350615d53146132c1578063ad5c464814613275578063c04062261461009b5763f8ccbf4714610055575f80fd5b3461009857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009857602060ff600c5460101c166040519015158152f35b80fd5b5034612992575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126129925762aa36a7460361321757737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15612992576040517f7fb5297f0000000000000000000000000000000000000000000000000000000081525f8160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015612b3557613204575b5080768e4d16886b8946dfe463fa172129eabf4825fb090000007fffffffffffffffffff0000000000000000000000000000000000000000ffffff600c54161780600c5573dc225280216822ca956738390f589c794129bd537fffffffffffffffffffffffff0000000000000000000000000000000000000000600d541617600d55737ba123e4e7395a361284d069bd0d545f3f8206417fffffffffffffffffffffffff0000000000000000000000000000000000000000600e541617600e557388125947bbf1a6dd0fed4b257bb3f9e1fbdcb3cc7fffffffffffffffffffffffff0000000000000000000000000000000000000000600f541617600f5573c8db65c0b9f4cf59097d4c5bcb9e8e92b9e4e15f7fffffffffffffffffffffffff00000000000000000000000000000000000000006010541617601055737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156131445773ffffffffffffffffffffffffffffffffffffffff604051917fc657c71800000000000000000000000000000000000000000000000000000000835260181c1660048201526040602482015281818061031b60448201604090600481527f555358440000000000000000000000000000000000000000000000000000000060208201520190565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156130bd576131ef575b5073ffffffffffffffffffffffffffffffffffffffff600d5416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561314457604051907fc657c7180000000000000000000000000000000000000000000000000000000082526004820152604060248201528181806103e360448201604090600481527f465553440000000000000000000000000000000000000000000000000000000060208201520190565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156130bd576131da575b5073ffffffffffffffffffffffffffffffffffffffff600e5416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561314457604051907fc657c7180000000000000000000000000000000000000000000000000000000082526004820152604060248201528181806104ab60448201604090600481527f444956450000000000000000000000000000000000000000000000000000000060208201520190565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156130bd576131c5575b5073ffffffffffffffffffffffffffffffffffffffff600f5416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561314457604051907fc657c71800000000000000000000000000000000000000000000000000000000825260048201526040602482015281818061057360448201604090600481527f425554430000000000000000000000000000000000000000000000000000000060208201520190565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156130bd576131b0575b5073ffffffffffffffffffffffffffffffffffffffff60105416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561314457604051907fc657c71800000000000000000000000000000000000000000000000000000000825260048201526040602482015281818061063b60448201604090600581527f575445544800000000000000000000000000000000000000000000000000000060208201520190565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156130bd5761319b575b5073ffffffffffffffffffffffffffffffffffffffff600c5460181c16803b15613144576040517f40c10f1900000000000000000000000000000000000000000000000000000000815233600482015264e8d4a5100060248201529082908290604490829084905af180156130bd57613186575b5073ffffffffffffffffffffffffffffffffffffffff600d5416803b15613144576040517f40c10f1900000000000000000000000000000000000000000000000000000000815233600482015264e8d4a5100060248201529082908290604490829084905af180156130bd57613171575b5073ffffffffffffffffffffffffffffffffffffffff600e5416803b15613144576040517f40c10f1900000000000000000000000000000000000000000000000000000000815233600482015269d3c21bcecceda100000060248201529082908290604490829084905af180156130bd5761315c575b5073ffffffffffffffffffffffffffffffffffffffff600f5416803b15613144578180916044604051809481937f40c10f19000000000000000000000000000000000000000000000000000000008352336004840152655af3107a400060248401525af180156130bd57613147575b5073ffffffffffffffffffffffffffffffffffffffff60105416803b15613144576040517f40c10f1900000000000000000000000000000000000000000000000000000000815233600482015269d3c21bcecceda100000060248201529082908290604490829084905af180156130bd5761312f575b50506040516138d68082019082821067ffffffffffffffff83111761310257602091839162003acf833973fff9976782d46cc05630d1f6ebab18b2324d6b14815203019082f080156130f5576040516155388082019082821067ffffffffffffffff8311176130c8576020918391620073a5833973fff9976782d46cc05630d1f6ebab18b2324d6b14815203019083f080156130bd576040516158b08082019082821067ffffffffffffffff831117613090579082916200c8dd8339039084f091821561308557604051615e0e8082019082821067ffffffffffffffff831117613058579082916201218d8339039085f0801561304d576040516136f2928382019382851067ffffffffffffffff8611176130205773ffffffffffffffffffffffffffffffffffffffff80808061010095879562017f9b8739338a5273fff9976782d46cc05630d1f6ebab18b2324d6b1460208b015216988960408a01521698896060890152169485608088015216948560a0820152620186a060c0820152730e280f5eda58872d7cdaa8ac0a57a55fd6133aed60e082015203019086f080156130155773ffffffffffffffffffffffffffffffffffffffff1692610a64846135cc565b604051608096610a748883613346565b600382527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08801908136602085013773ffffffffffffffffffffffffffffffffffffffff600c5460181c16610ac88461339f565b5273ffffffffffffffffffffffffffffffffffffffff600f5416610aeb846133d9565b5273ffffffffffffffffffffffffffffffffffffffff60105416610b0e846133e9565b5260405192610b1d8a85613346565b6003845282366020860137620f4240610b358561339f565b526305f5e100610b44856133d9565b52670de0b6b3a7640000610b57856133e9565b5260405193610b668b86613346565b60038552833660208701376032610b7c8661339f565b5260fa610b88866133d9565b5261015e610b95866133e9565b52604051610ba38c82613346565b60038152843660208301376001610bb98261339f565b52620186a0610bc7826133d9565b52610fa0610bd4826133e9565b5260405191610be38d84613346565b6003835285366020850137610bf78161339f565b51806127100290612710820403612fe857610c1c90610c158461339f565b51906133f9565b610c258461339f565b52610c2f816133d9565b51806127100290612710820403612fe85790610c51610c6092610c15856133d9565b610c5a856133d9565b526133e9565b5190816127100291612710830403612fbb5790610c15610c7f926133e9565b610c88826133e9565b526719999999999999999280612f8e575082600f0b925f841315612f305768010000000000000000841215612ed2576f028f5c28f5c28f5c000000000000000060401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612eb8575b1561299257600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612e9e575b1561299257600f0b5f811315612e405768010147ae147ae147ae610d55916139f3565b600f0b5f81138080612e2e575b15612dd05715612992575f908068010000000000000000821215612dc3575b806401000000006002921215612db7575b62010000811215612dab575b610100811215612d9f575b6010811215612d93575b6004811215612d88575b1215612d7e575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f8313612d6257506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b028c1d907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082600f0b1461299257610e55915f03600f0b6139f3565b600f0b5f811315612d0457801561299257700100000000000000000000000000000000057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612cea575b1561299257600f0b915f831315612c8c57610fed610f6c92610fa16040958651998a9687967f60cf7d4a0000000000000000000000000000000000000000000000000000000088526101806004890152600a6101848901527f546f6b656e20506f6f6c000000000000000000000000000000000000000000006101a48901526101c0602489015260026101c48901527f54500000000000000000000000000000000000000000000000000000000000006101e48901526102006044890152610204880190613464565b9160648701527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8683030160848701526134ad565b906109c460a48501525f60c48501523360e4850152336101048501527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc848303016101248501526134ad565b69021e19e0c9bab24000006101448301525f61016483015203815f8b5af1928315612b35575f93612c6a575b50604051906110288a83613346565b600382528236602084013773ffffffffffffffffffffffffffffffffffffffff600c5460181c166110588361339f565b5273ffffffffffffffffffffffffffffffffffffffff600d541661107b836133d9565b5273ffffffffffffffffffffffffffffffffffffffff600e541661109e836133e9565b526040516110ac8b82613346565b6003815283366020830137620f42406110c48261339f565b52620f42406110d2826133d9565b52670de0b6b3a76400006110e5826133e9565b52604051936110f48c86613346565b600385523660208601376111078161339f565b516127108102908082046127101490151715612c1f576111268561339f565b52611130816133d9565b51906127108202918083046127101490151715612c1f5761115491610c5a866133d9565b51916127108302928084046127101490151715612c1f576112906112339260409461117e876133e9565b5266068db8bac710cb95855196879586957fa4689b240000000000000000000000000000000000000000000000000000000087526101a06004880152600f6101a48801527f537461626c65636f696e20506f6f6c00000000000000000000000000000000006101c48801526101e0602488015260046101e48801527f53544150000000000000000000000000000000000000000000000000000000006102048801526102206044880152610224870190613464565b9260648601526084850152606460a4850152606460c48501525f60e485015233610104850152336101248501527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc848303016101448501526134ad565b69021e19e0c9bab24000006101648301525f61018483015203815f8a5af18015612b3557612c4c575b50606094604051976112cb878a613346565b600289527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08701803660208c013773ffffffffffffffffffffffffffffffffffffffff600c5460181c1661131e8b61339f565b5273ffffffffffffffffffffffffffffffffffffffff600e54166113418b6133d9565b5260405161134f8982613346565b6002815281366020830137620f42406113678261339f565b52670de0b6b3a764000061137a826133d9565b52604051916113898a84613346565b6002835236602084013761139c8161339f565b51906127108202918083046127101490151715612c1f576113c6916113c08461339f565b526133d9565b516127108102908082046127101490151715612c1f576113e5826133d9565b5260406114a45f9b6114fc67cccccccccccccccc845195869485947ff63772fc0000000000000000000000000000000000000000000000000000000086526101806004870152600b6101848701527f537461626c6520506169720000000000000000000000000000000000000000006101a48701526101c0602487015260056101c48701527f53504149520000000000000000000000000000000000000000000000000000006101e48701526102006044870152610204860190613464565b91606485015260076084850152600760a4850152600160c48501523360e4850152336101048501527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc848303016101248501526134ad565b69021e19e0c9bab24000006101448301525f61016483015203815f875af18015612b3557612bf1575b50604051612fd38082019082821067ffffffffffffffff8311176129d45760409183916201b68d83398781528b60208201520301905ff08015612b355773ffffffffffffffffffffffffffffffffffffffff8091169316604051977f6ff97f1d0000000000000000000000000000000000000000000000000000000089525f89600481855afa988915612b35575f99612b40575b508851906115c6836135cc565b604051997f18160ddd000000000000000000000000000000000000000000000000000000008b5260208b600481875afa9a8b15612b35575f9b612b01575b5061164760409b8c61161881519182613346565b601481527f706f73742d6372656174696f6e20737570706c790000000000000000000000006020820152613a54565b8a517fb3f1c93d0000000000000000000000000000000000000000000000000000000081523360048201523360248201526104d260448201525f60648201526020816084815f895af18015612a8f575f90612acd575b8c516116dd92506116ae8e82613346565b600681527f6d696e74656400000000000000000000000000000000000000000000000000006020820152613a54565b8a517f18160ddd000000000000000000000000000000000000000000000000000000008152602081600481885afa8015612a8f575f90612a99575b8c5161175892506117298e82613346565b601081527f706f73742d6d696e7420737570706c79000000000000000000000000000000006020820152613a54565b8a517f6863f5bc000000000000000000000000000000000000000000000000000000008152336004820152336024820152600760448201525f60648201525f60848201525f8160a48183895af18015612a8f57612a01575b508a516102ab80820182811067ffffffffffffffff8211176129d45782916201e660833903905ff080156129ca5773ffffffffffffffffffffffffffffffffffffffff6117fc8361339f565b5116908c51917fad8448930000000000000000000000000000000000000000000000000000000083528660048401526024830152630328b74060448301526020826064818c5afa918215612988575f92612996575b5073ffffffffffffffffffffffffffffffffffffffff806118718561339f565b5116911691813b15612992575f9160448f9284935194859384927f40c10f1900000000000000000000000000000000000000000000000000000000845288600485015260248401525af1801561298857612972575b50611954918e8d60209373ffffffffffffffffffffffffffffffffffffffff6119028351958b888801528787526118fd8588613346565b61339f565b51169151958694859384937f5cffe9de00000000000000000000000000000000000000000000000000000000855260048501526024840152630328b74060448401528b60648401526084830190613571565b0391885af1801561293b57612945575b5060a4818d8c51928380927fcb717f3a00000000000000000000000000000000000000000000000000000000825233600483015233602483015280604483015263132212406064830152806084830152885af1801561293b5761291e575b5060018211918c831561291257507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81019081116128e557908c949392915b8b51907f0eeee627000000000000000000000000000000000000000000000000000000008252336004830152866024830152336044830152866064830152608482015263054e084060a48201528560c48201528560e48201528561010482015281816101248189885af180156128db576128af575b5050813b156128015789517fa1af5b9a000000000000000000000000000000000000000000000000000000008152848160048183875af180156128a557908591612890575b505015612885578860ff60c460015b86845195869485937f491e79980000000000000000000000000000000000000000000000000000000085523360048601523360248601526729a2241af62c000060448601521660648401528160848401528160a48401525af1801561283d5790899161285c575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156126e75787517f76eadd36000000000000000000000000000000000000000000000000000000008152828160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561283d57908391612847575b50508751907f56ca623e0000000000000000000000000000000000000000000000000000000082528360048301528282602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa91821561283d578392612821575b508851917f56ca623e0000000000000000000000000000000000000000000000000000000083528560048401528383602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9283156127f7578493612805575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156128015783611cdb918b805193849283927f3d5923ee0000000000000000000000000000000000000000000000000000000084526004840152600760448401527f504c414e4e45520000000000000000000000000000000000000000000000000060648401528660248401526084830190613571565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156127f7579084916127e2575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156127de57611d929183918a5193849283927f3d5923ee0000000000000000000000000000000000000000000000000000000084528d6004850152600460448501527f494e464f00000000000000000000000000000000000000000000000000000000606485015260248401526084830190613571565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156126dd576127c9575b5073ffffffffffffffffffffffffffffffffffffffff600c5460181c168751907f56ca623e00000000000000000000000000000000000000000000000000000000825260048201528181602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9081156126dd5782916127af575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156126e75781611ee1918951809381927f3d5923ee0000000000000000000000000000000000000000000000000000000083528c6004840152611eb160448401604090600481527f555358440000000000000000000000000000000000000000000000000000000060208201520190565b907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc848303016024850152613571565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156126dd5761279a575b5073ffffffffffffffffffffffffffffffffffffffff600d54168751907f56ca623e00000000000000000000000000000000000000000000000000000000825260048201528181602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9081156126dd578291612780575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156126e75781611ffd918951809381927f3d5923ee0000000000000000000000000000000000000000000000000000000083528c6004840152611eb160448401604090600481527f465553440000000000000000000000000000000000000000000000000000000060208201520190565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156126dd5761276b575b5073ffffffffffffffffffffffffffffffffffffffff600e54168751907f56ca623e00000000000000000000000000000000000000000000000000000000825260048201528181602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9081156126dd578291612751575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156126e75781612119918951809381927f3d5923ee0000000000000000000000000000000000000000000000000000000083528c6004840152611eb160448401604090600481527f444956450000000000000000000000000000000000000000000000000000000060208201520190565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156126dd5761273c575b5073ffffffffffffffffffffffffffffffffffffffff600f54168751907f56ca623e00000000000000000000000000000000000000000000000000000000825260048201528181602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9081156126dd578291612722575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156126e75781612235918951809381927f3d5923ee0000000000000000000000000000000000000000000000000000000083528c6004840152611eb160448401604090600481527f425554430000000000000000000000000000000000000000000000000000000060208201520190565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156126dd5761270d575b5073ffffffffffffffffffffffffffffffffffffffff601054168751907f56ca623e00000000000000000000000000000000000000000000000000000000825260048201528181602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9081156126dd5782916126eb575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156126e75781612351918951809381927f3d5923ee0000000000000000000000000000000000000000000000000000000083528c6004840152611eb160448401604090600581527f575445544800000000000000000000000000000000000000000000000000000060208201520190565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156126dd576126bc575b50506126b99661244c6124c2946124116124fd9897956123d66124879661239b613912565b8c516123a78e82613346565b600e81527f20205061727479506c616e6e65720000000000000000000000000000000000006020820152613963565b8a516123e28c82613346565b600e81527f20202020205061727479496e666f0000000000000000000000000000000000006020820152613963565b885161241d8a82613346565b600e81527f20202020202053776170496d706c0000000000000000000000000000000000006020820152613963565b86516124588882613346565b600e81527f2020202020204d696e74496d706c0000000000000000000000000000000000006020820152613963565b84516124938682613346565b600e81527f2020202020204465706c6f7965720000000000000000000000000000000000006020820152613963565b82516124ce8482613346565b600e81527f4250616972204465706c6f7965720000000000000000000000000000000000006020820152613963565b612505613912565b61255f73ffffffffffffffffffffffffffffffffffffffff600c5460181c1682516125308482613346565b600e81527f20202020202020202020555358440000000000000000000000000000000000006020820152613963565b6125b673ffffffffffffffffffffffffffffffffffffffff600d541682516125878482613346565b600e81527f20202020202020202020465553440000000000000000000000000000000000006020820152613963565b61260d73ffffffffffffffffffffffffffffffffffffffff600e541682516125de8482613346565b600e81527f20202020202020202020444956450000000000000000000000000000000000006020820152613963565b61266473ffffffffffffffffffffffffffffffffffffffff600f541682516126358482613346565b600e81527f20202020202020202020425554430000000000000000000000000000000000006020820152613963565b73ffffffffffffffffffffffffffffffffffffffff601054169061268a81519182613346565b600e81527f20202020202020202057544554480000000000000000000000000000000000006020820152613963565b80f35b816126ca9197969497613346565b6126d957875f95929495612376565b8780fd5b88513d84823e3d90fd5b5080fd5b61270791503d8084833e6126ff8183613346565b8101906134e0565b5f6122c9565b8161271791613346565b6126d957875f61225a565b61273691503d8084833e6126ff8183613346565b5f6121ad565b8161274691613346565b6126d957875f61213e565b61276591503d8084833e6126ff8183613346565b5f612091565b8161277591613346565b6126d957875f612022565b61279491503d8084833e6126ff8183613346565b5f611f75565b816127a491613346565b6126d957875f611f06565b6127c391503d8084833e6126ff8183613346565b5f611e29565b816127d391613346565b6126d957875f611db7565b8280fd5b816127ec91613346565b6127de57825f611d03565b8a513d86823e3d90fd5b8380fd5b61281a9193503d8086833e6126ff8183613346565b915f611c4d565b6128369192503d8085833e6126ff8183613346565b905f611bf6565b89513d85823e3d90fd5b8161285191613346565b6126e757815f611b9e565b813d831161287e575b61286f8183613346565b810103126126e757875f611b31565b503d612865565b8860ff60c485611aca565b8161289a91613346565b61280157835f611abb565b8b513d87823e3d90fd5b816128ce92903d106128d4575b6128c68183613346565b8101906138f7565b50611a76565b503d6128bc565b8c513d88823e3d90fd5b60248d7f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b80959493929150611a01565b61293490823d84116128d4576128c68183613346565b50506119c2565b8b513d8f823e3d90fd5b6129669060203d60201161296b575b61295e8183613346565b8101906135b4565b611964565b503d612954565b8c929e505f61298091613346565b5f9d916118c6565b8d513d5f823e3d90fd5b5f80fd5b9091506020813d6020116129c2575b816129b260209383613346565b810103126129925751905f611851565b3d91506129a5565b8b513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b3d805f833e612a108183613346565b8101906020818303126129925780519067ffffffffffffffff821161299257019080601f830112156129925781518d92612a55612a4c83613387565b94519485613346565b81845260208085019260051b82010192831161299257602001905b828210612a7f575050506117b0565b8151815260209182019101612a70565b8c513d5f823e3d90fd5b506020813d602011612ac5575b81612ab360209383613346565b81010312612992576117589051611718565b3d9150612aa6565b506020813d602011612af9575b81612ae760209383613346565b81010312612992576116dd905161169d565b3d9150612ada565b909a506020813d602011612b2d575b81612b1d60209383613346565b810103126129925751995f611604565b3d9150612b10565b6040513d5f823e3d90fd5b9098503d805f833e612b528183613346565b8101906020818303126129925780519067ffffffffffffffff821161299257019080601f8301121561299257815190612b8a82613387565b92612b986040519485613346565b82845260208085019360051b82010191821161299257602001915b818310612bc457505050975f6115b9565b825173ffffffffffffffffffffffffffffffffffffffff8116810361299257815260209283019201612bb3565b612c129060403d604011612c18575b612c0a8183613346565b810190613430565b50611525565b503d612c00565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b612c649060403d604011612c1857612c0a8183613346565b506112b9565b612c8491935060403d604011612c1857612c0a8183613346565b50915f611019565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4d53523a206b617070613c3d300000000000000000000000000000000000006044820152fd5b506f7fffffffffffffffffffffffffffffff811315610ea3565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4c4d53523a20793c3d30000000000000000000000000000000000000000000006044820152fd5b8002908160ff1c9182607f011c918302019160011d9190610dfb565b9060010190610dc4565b92810192811d610dbd565b6004938401931d610db3565b6008938401931d610da9565b6010938401931d610d9e565b6020938401931d610d92565b506040915080821d610d81565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4c4d53523a20626164204520726174696f0000000000000000000000000000006044820152fd5b50680100000000000000008212610d62565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4c4d53523a2062616420736c697070616765206f72206e0000000000000000006044820152fd5b506f7fffffffffffffffffffffffffffffff811315610d32565b506f7fffffffffffffffffffffffffffffff811315610cf5565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4c4d53523a20663e3d31000000000000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4c4d53523a20663d3000000000000000000000000000000000000000000000006044820152fd5b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526012600452fd5b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b6040513d87823e3d90fd5b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b6040513d86823e3d90fd5b6024877f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b6040513d85823e3d90fd5b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b6040513d84823e3d90fd5b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b50604051903d90823e3d90fd5b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8161313991613346565b61009857805f6108a0565b50fd5b8161315191613346565b61009857805f61082a565b8161316691613346565b61009857805f6107bb565b8161317b91613346565b61009857805f610745565b8161319091613346565b61009857805f6106d4565b816131a591613346565b61009857805f610660565b816131ba91613346565b61009857805f610598565b816131cf91613346565b61009857805f6104d0565b816131e491613346565b61009857805f610408565b816131f991613346565b61009857805f610340565b61321091505f90613346565b5f5f61013d565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e6f74205365706f6c69610000000000000000000000000000000000000000006044820152fd5b34612992575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261299257602060405173fff9976782d46cc05630d1f6ebab18b2324d6b148152f35b34612992575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112612992576020604051730e280f5eda58872d7cdaa8ac0a57a55fd6133aed8152f35b34612992575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126129925780620186a060209252f35b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176129d457604052565b67ffffffffffffffff81116129d45760051b60200190565b8051156133ac5760200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8051600110156133ac5760400190565b8051600210156133ac5760600190565b8115613403570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b919082604091031261299257815173ffffffffffffffffffffffffffffffffffffffff811681036129925760209092015190565b90602080835192838152019201905f5b8181106134815750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101613474565b90602080835192838152019201905f5b8181106134ca5750505090565b82518452602093840193909201916001016134bd565b6020818303126129925780519067ffffffffffffffff8211612992570181601f820112156129925780519067ffffffffffffffff82116129d45760405192613550601f84017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200185613346565b8284526020838301011161299257815f9260208093018386015e8301015290565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b90816020910312612992575180151581036129925790565b5f90602073ffffffffffffffffffffffffffffffffffffffff604481600c5460181c169360405195869384927f095ea7b300000000000000000000000000000000000000000000000000000000845216958660048401527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248401525af1918215612b35575f926138da575b50602073ffffffffffffffffffffffffffffffffffffffff600d54166044604051809581937f095ea7b30000000000000000000000000000000000000000000000000000000083528660048401527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248401525af1918215612b35575f926138bd575b50602073ffffffffffffffffffffffffffffffffffffffff600e54166044604051809581937f095ea7b30000000000000000000000000000000000000000000000000000000083528660048401527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248401525af1918215612b35575f926138a0575b50602073ffffffffffffffffffffffffffffffffffffffff600f54166044604051809581937f095ea7b30000000000000000000000000000000000000000000000000000000083528660048401527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248401525af1908115612b35575f92602092613885575b50604473ffffffffffffffffffffffffffffffffffffffff601054169160405194859384927f095ea7b300000000000000000000000000000000000000000000000000000000845260048401527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248401525af18015612b355761386a5750565b6138829060203d60201161296b5761295e8183613346565b50565b61389b90833d851161296b5761295e8183613346565b6137e8565b6138b89060203d60201161296b5761295e8183613346565b613761565b6138d59060203d60201161296b5761295e8183613346565b6136dd565b6138f29060203d60201161296b5761295e8183613346565b613659565b90816060910312612992578051916040602083015192015190565b5f806040517f51973ec90000000000000000000000000000000000000000000000000000000060208201526004815261394c602482613346565b6020815191016a636f6e736f6c652e6c6f675afa50565b6139c061394c5f9392849373ffffffffffffffffffffffffffffffffffffffff6040519485937f319af333000000000000000000000000000000000000000000000000000000006020860152604060248601526064850190613571565b91166044830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282613346565b90600f0b9081156129925760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613a3a575b1561299257600f0b90565b506f7fffffffffffffffffffffffffffffff811315613a2f565b613a9c61394c5f939284936040519384927fb60e72cc000000000000000000000000000000000000000000000000000000006020850152604060248501526064840190613571565b906044830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810183528261334656fe60a03461009c57601f6138d638819003918201601f19168301916001600160401b038311848410176100a05780849260209460405283398101031261009c57516001600160a01b038116810361009c5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005560805260405161382190816100b58239608051818181610cfc015281816113670152611dfa0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f5f3560e01c80632a54db01146116555780638a3d858d146109d8578063bf05a0a6146107db5763e49cd47514610046575f80fd5b346107d85760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107d85760043573ffffffffffffffffffffffffffffffffffffffff811681036107d65761009d61192b565b60443567ffffffffffffffff606435116107d2573660236064350112156107d25767ffffffffffffffff60643560040135116107d257366024606435600401356064350101116107d25760a435916100f3611caa565b61010260ff6008541615611aab565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff86165afa9081156107c7578691610795575b5082116107375773ffffffffffffffffffffffffffffffffffffffff81168552600e602052604085205480156106d957807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101116106ac576101c0608435846129da565b50908694801515806106a3575b61060d575b5061020a8473ffffffffffffffffffffffffffffffffffffffff881673ffffffffffffffffffffffffffffffffffffffff8616611d21565b6040517f23e30c8b00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015284604482015282606482015260a060848201526064356004013560a48201526064356004013560246064350160c48301378760c4606435600401358301015260208160c4817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60643560040135011681010301818b73ffffffffffffffffffffffffffffffffffffffff8c165af1801561054e5788906105b7575b7f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd9915003610559576103576103248386611b10565b73ffffffffffffffffffffffffffffffffffffffff851673ffffffffffffffffffffffffffffffffffffffff8916611de2565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff88165afa90811561054e57869798969596916104ef575b507f249e0bf62ff982342c6a63926041694a221796af4b9ebacefc45823da42348139473ffffffffffffffffffffffffffffffffffffffff94936104938461045d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6104566104989761043e61042f846104bd9c016119e4565b90549060031b1c821015611b67565b6104498386016119e4565b90549060031b1c90611a71565b9201611a41565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b611a71565b9583604051948594169816963396846040919493926060820195825260208201520152565b0390a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055602060405160018152f35b94505091906020843d602011610546575b8161050d6020938361195e565b8101031261054257925185939192907f249e0bf62ff982342c6a63926041694a221796af4b9ebacefc45823da42348136103b5565b5f80fd5b3d9150610500565b6040513d8a823e3d90fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f666c6173683a2063616c6c6261636b00000000000000000000000000000000006044820152fd5b506020813d602011610605575b816105d16020938361195e565b81010312610601577f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd990516102ef565b8780fd5b3d91506105c4565b620f424091955061061e9083611b1d565b04938461062c575b5f6101d2565b61069e61065a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83016119e4565b61066a8883548360031b1c611b10565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b610626565b508215156101cd565b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f666c6173683a20746f6b656e206e6f7420696e20706f6f6c00000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f666c6173683a20616d6f756e74203e2062616c616e63650000000000000000006044820152fd5b90506020813d6020116107bf575b816107b06020938361195e565b8101031261054257515f61015b565b3d91506107a3565b6040513d88823e3d90fd5b8380fd5b505b80fd5b50346107d85760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107d8576004356024356044359182600f0b83036107d2576064359067ffffffffffffffff82116109d457366023830112156109d45781600401359161084c836119cc565b9261085a604051948561195e565b8084526024602085019160051b8301019136831161060157602401905b8282106109c45750505061088961194e565b9360a43567ffffffffffffffff81116109c057366023820112156109c05780600401356108b5816119cc565b916108c3604051938461195e565b8183526024602084019260051b820101903682116109bc57602401915b81831061099e575050509161090361091392868361090c98979660c4359a611f9d565b95909184611bcc565b5190612757565b9461091f861515611be0565b9480948061096f575b50509161093b6109429261096b94611bcc565b5190612b1a565b9261094e841515611c45565b604051938493846040919493926060820195825260208201520152565b0390f35b81965061096b949295509261099461098d6109429561093b946129a1565b8098611b10565b9592945092610928565b823580600f0b81036109b8578152602092830192016108e0565b8a80fd5b8980fd5b8680fd5b8135815260209182019101610877565b8480fd5b506101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261054257610a0c611908565b90610a1561192b565b610a1d61194e565b9160c43560a43581151582036105425760e43590610a4060ff6008541615611aab565b610a48611caa565b600b5480604435109081611649575b50156115eb575f86600f0b131561158d578015908115611582575b501561152457602495602073ffffffffffffffffffffffffffffffffffffffff610a9d604435611a29565b90549060031b1c16604051988980927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa958615611294575f966114ef575b60249750602073ffffffffffffffffffffffffffffffffffffffff610b0b606435611a29565b90549060031b1c16604051998a80927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa978815611294575f986114bb575b50600954604051600a80548083525f918252602083019493600f0b91907fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a85b8160018401106114905795610bbf928592610bcc98549181811061147c575b1061146b575b50038361195e565b6064359160443591611f9d565b610bea610bdd604499939935611a59565b90549060031b1c89612757565b97610bf6891515611be0565b5f9789958061144a575b50610c1c610c0f606435611a59565b90549060031b1c84612b1a565b9a610c288c1515611c45565b73ffffffffffffffffffffffffffffffffffffffff610c48604435611a29565b90549060031b1c1696610c5c818989611de2565b604051957f70a082310000000000000000000000000000000000000000000000000000000087523060048801526020876024818c5afa968715611294575f97611412575b5090610cab91611b10565b850361138e5773ffffffffffffffffffffffffffffffffffffffff610cd1606435611a29565b90549060031b1c16978061134f575b1561129f5773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b15610542575f809160248f60405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af1908115611294578d9161127f575b508980808093865af13d1561127a573d67ffffffffffffffff811161124d5760405190610dbe60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116018361195e565b81528a60203d92013e5b156111ef575b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526020816024818c5afa9081156111e4578d908b926111ae575b50610e1e9192611a71565b810361112a5788948a61010435151580611121575b6110c8575b50610e8f91610e6b610e60610e8493610e5561042f6044356119e4565b6104496044356119e4565b61045d604435611a41565b610e7961042f6064356119e4565b6104496064356119e4565b61045d606435611a41565b8782600f0b131561106a578783600f0b131561100c577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c93610f5e610f5360a095610f39610f0673ffffffffffffffffffffffffffffffffffffffff97610ef7604435611f5d565b90549060031b1c600f0b6129ff565b610f11604435611f5d565b9091906fffffffffffffffffffffffffffffffff83549160031b928116831b921b1916179055565b610f44606435611f5d565b90549060031b1c600f0b612a57565b610f11606435611f5d565b610f68818b611a71565b83604051971687528b60208801528c6040880152606087015260808601521692a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015610fdb575b50505061096b90604051938493846040919493926060820195825260208201520152565b8280809381938290611003575b3390f115610ff7578080610fb7565b604051903d90823e3d90fd5b506108fc610fe8565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a20616d6f756e744f7574203c3d20300000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4d53523a20616d6f756e74496e203c3d2030000000000000000000000000006044820152fd5b610e8491965091610e6b610e60620f42406110ea610e8f966101043590611b1d565b0498896110fe575b9350505091508a610e38565b61111c61110c6044356119e4565b61066a8d83548360031b1c611b10565b6110f2565b50801515610e33565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f73776170546f4c696d69743a206e6f6e2d7374616e6461726420746f6b656e4f60448201527f75740000000000000000000000000000000000000000000000000000000000006064820152fd5b9150506020813d6020116111dc575b816111ca6020938361195e565b8101031261054257518c610e1e610e13565b3d91506111bd565b6040513d8c823e3d90fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b60248b7f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b610dc8565b61128c919a505f9061195e565b5f985f610d69565b6040513d5f823e3d90fd5b6040517fa9059cbb000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff83166004528c60245260205f604481808d5af19060015f511482161561132e575b604052610dce57877f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b90600181151661134657893b15153d151616906112fb565b503d5f823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168814610ce0565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f73776170546f4c696d69743a206e6f6e2d7374616e6461726420746f6b656e4960448201527f6e000000000000000000000000000000000000000000000000000000000000006064820152fd5b919096506020823d602011611442575b8161142f6020938361195e565b8101031261054257905195610cab610ca0565b3d9150611422565b909550611459919850896129a1565b96611464888a611b10565b945f610c00565b60801d600f0b81526020015f610bb7565b92602060019184600f0b8152019301610bb1565b8054600f81810b895260809190911d900b602088015260409096019560029290920191600101610b92565b9097506020813d6020116114e7575b816114d76020938361195e565b810103126105425751965f610b53565b3d91506114ca565b95506020873d60201161151c575b8161150a6020938361195e565b81010312610542576024965195610ae5565b3d91506114fd565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f73776170546f4c696d69743a20646561646c696e6520657863656564656400006044820152fd5b90504211155f610a72565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f73776170546f4c696d69743a206c696d6974203c3d20300000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f73776170546f4c696d69743a20696478000000000000000000000000000000006044820152fd5b9050606435105f610a57565b346105425760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105425761168c611908565b611694611caa565b73ffffffffffffffffffffffffffffffffffffffff8116156118aa57600b545f5b818110611706577fd508feb4afc81230b8e5dcca865a405a72db1f928a5064f893ab22ab56ec25215f80a160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055005b61170f816119e4565b90549060031b1c9081156118a1576024602073ffffffffffffffffffffffffffffffffffffffff61173f84611a29565b90549060031b1c16604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa908115611294575f91611870575b5082811061181257826117e06117d760019561180c946117a6876119e4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82549160031b1b19169055611a71565b61045d85611a41565b8573ffffffffffffffffffffffffffffffffffffffff6117ff85611a29565b90549060031b1c16611d21565b016116b5565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f636f6c6c6563743a20666565203e2062616c00000000000000000000000000006044820152fd5b90506020813d8211611899575b8161188a6020938361195e565b81010312610542575185611787565b3d915061187d565b6001915061180c565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f636f6c6c6563743a207a65726f206164647200000000000000000000000000006044820152fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361054257565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361054257565b6084359081600f0b820361054257565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761199f57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b67ffffffffffffffff811161199f5760051b60200190565b600c548110156119fc57600c5f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600b548110156119fc57600b5f5260205f2001905f90565b600f548110156119fc57600f5f5260205f2001905f90565b600d548110156119fc57600d5f5260205f2001905f90565b91908203918211611a7e57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b15611ab257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b91908201809211611a7e57565b81810292918115918404141715611a7e57565b8115611b3a570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b15611b6e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f62616c616e6365203c2070726f746f636f6c206f7765640000000000000000006044820152fd5b80518210156119fc5760209160051b010190565b15611be757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f73776170546f4c696d69743a20696e707574207a65726f0000000000000000006044820152fd5b15611c4c57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f73776170546f4c696d69743a206f7574707574207a65726f00000000000000006044820152fd5b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005414611cf95760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b9173ffffffffffffffffffffffffffffffffffffffff604051927fa9059cbb000000000000000000000000000000000000000000000000000000005f521660045260245260205f60448180865af19060015f5114821615611dca575b60405215611d885750565b73ffffffffffffffffffffffffffffffffffffffff907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b90600181151661134657823b15153d15161690611d7d565b9073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169173ffffffffffffffffffffffffffffffffffffffff82169183831480611f53575b15611e9457505050803b15610542575f906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af1801561129457611e885750565b5f611e929161195e565b565b919390925073ffffffffffffffffffffffffffffffffffffffff604051937f23b872dd000000000000000000000000000000000000000000000000000000005f52166004523060245260445260205f60648180855af19060015f5114821615611f34575b50906040525f60605215611f095750565b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6001821516611f4a573b15153d1516165f611ef8565b823d5f823e3d90fd5b5084341015611e3c565b90600a548210156119fc57600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b93929491909483600f0b905f8213156126f9575f94855b8851871015611fdf57611fd7600191611fcd898c611bcc565b51600f0b906129ff565b960195611fb4565b90929496919395505f81600f0b131561269b57611ffb91612a94565b9081600f0b80156105425770010000000000000000000000000000000005947fffffffffffffffffffffffffffffffff8000000000000000000000000000000086121580612681575b15610542576120806120859161207b61206398600f0b9889928c611bcc565b51600f0b612071888d611bcc565b51600f0b90612a57565b612a94565b612b75565b9081600f0b948512156125fd578161209c91612ad4565b600f0b5f811315610542575f9080680100000000000000008212156125f0575b8064010000000060029212156125e4575b620100008112156125d8575b6101008112156125cc575b60108112156125c0575b60048112156125b5575b12156125ab575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f831361258f57506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d926121638484612a94565b937fffffffffffffffffffffffffffffffff8000000000000000000000000000000081600f0b146105425761219c905f03600f0b612b75565b600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612575575b15610542576121e690600f0b83612a94565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061255b575b1561054257600f0b5f811315610542575f90806801000000000000000082121561254e575b806401000000006002921215612542575b62010000811215612536575b61010081121561252a575b601081121561251e575b6004811215612513575b1215612509575b607f8290031b91907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160401b6780000000000000005b5f81136124e957506122f292506fb17217f7d1cf79abc9e3b39803f2f6af6122ec91600f0b0260801d85612a94565b98611bcc565b51600f0b9383958589600f0b1361230e575b5050505050509190565b85985068010000000000000000929496506120809061232f92949699612a94565b9101907fffffffffffffffffffffffffffffffff80000000000000000000000000000000821215806124cf575b156105425761236d91600f0b612a57565b905f600f83900b13612388575050505b5f8080808080612304565b612393929350612ad4565b600f0b5f811315610542575f9080680100000000000000008212156124c2575b8064010000000060029212156124b6575b620100008112156124aa575b61010081121561249e575b6010811215612492575b6004811215612487575b121561247d575b607f8290031b91907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160401b6780000000000000005b5f811361245d57506124589250600f0b6fb17217f7d1cf79abc9e3b39803f2f6af0260801d90612a94565b61237d565b91928002908160ff1c9182607f011c918302019160011d9291909261242d565b90600101906123f6565b92810192811d6123ef565b6004938401931d6123e5565b6008938401931d6123db565b6010938401931d6123d0565b6020938401931d6123c4565b506040915080821d6123b3565b506f7fffffffffffffffffffffffffffffff82131561235c565b91928002908160ff1c9182607f011c918302019160011d929190926122bd565b9060010190612286565b92810192811d61227f565b6004938401931d612275565b6008938401931d61226b565b6010938401931d612260565b6020938401931d612254565b506040915080821d612243565b506f7fffffffffffffffffffffffffffffff81131561221e565b506f7fffffffffffffffffffffffffffffff8113156121d4565b8002908160ff1c9182607f011c918302019160011d9190612136565b90600101906120ff565b92810192811d6120f8565b6004938401931d6120ee565b6008938401931d6120e4565b6010938401931d6120d9565b6020938401931d6120cd565b506040915080821d6120bc565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4c4d53523a206c696d69745072696365203c3d2063757272656e74207072696360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152fd5b506f7fffffffffffffffffffffffffffffff861315612044565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4c4d53523a206c696d69745072696365203c3d203000000000000000000000006044820152fd5b6127618282612b1a565b9180156105425777ffffffffffffffffffffffffffffffffffffffffffffffff83116127f257612794908360401b611b30565b6fffffffffffffffffffffffffffffffff8111610542576fffffffffffffffffffffffffffffffff16906f7fffffffffffffffffffffffffffffff821161054257600f0b90600f0b126127e45790565b60018101809111611a7e5790565b60c083811c8091640100000000821015612994575b60028262010000612894941015612988575b61010081101561297c575b6010811015612970575b6004811015612965575b101561295d575b8560017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b611b30565b916fffffffffffffffffffffffffffffffff8311610542578060801c83026fffffffffffffffffffffffffffffffff82168402838760401b90828210612933575b5003928160801b9182851061290a575b60801c036128ff576128f79203611b30565b905b01612794565b5050506001906128f9565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906128e5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f6128d5565b60010161283f565b91810191811c612838565b6004928301921c61282e565b6008928301921c612824565b6010928301921c612819565b505060e084811c90612807565b9080156129d4576129b191611b1d565b620f4240810190818111611a7e57620f423f01908111611a7e57620f4240900490565b50505f90565b919080156129f9576129ef6129f691846129a1565b8093611a71565b90565b505f9190565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612a3d575b1561054257600f0b90565b506f7fffffffffffffffffffffffffffffff811315612a32565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612a3d571561054257600f0b90565b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612a3d571561054257600f0b90565b90600f0b9081156105425760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612a3d571561054257600f0b90565b81156129d457600f0b5f8112610542576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116105425760401b81198111610542570190565b600f0b68400000000000000000811215610542577fffffffffffffffffffffffffffffffffffffffffffffffc000000000000000008112612bd257700171547652b82fe1777d0ffda0d23a7d126129f6910260801d600f0b612bd7565b505f90565b80600f0b68400000000000000000811215610542577fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000081126129d4576f80000000000000000000000000000000915f6780000000000000008216600f0b136137d3575b5f6740000000000000008216600f0b136137b6575b5f6720000000000000008216600f0b13613799575b5f6710000000000000008216600f0b1361377c575b5f6708000000000000008216600f0b1361375f575b5f6704000000000000008216600f0b13613742575b5f6702000000000000008216600f0b13613725575b5f6701000000000000008216600f0b13613708575b5f66800000000000008216600f0b136136eb575b5f66400000000000008216600f0b136136ce575b5f66200000000000008216600f0b136136b1575b5f66100000000000008216600f0b13613694575b5f66080000000000008216600f0b13613677575b5f66040000000000008216600f0b1361365a575b5f66020000000000008216600f0b1361363d575b5f66010000000000008216600f0b13613620575b5f658000000000008216600f0b13613603575b5f654000000000008216600f0b136135e6575b5f652000000000008216600f0b136135c9575b5f651000000000008216600f0b136135ac575b5f650800000000008216600f0b1361358f575b5f650400000000008216600f0b13613572575b5f650200000000008216600f0b13613555575b5f650100000000008216600f0b13613538575b5f6480000000008216600f0b1361351b575b5f6440000000008216600f0b136134fe575b5f6420000000008216600f0b136134e1575b5f6410000000008216600f0b136134c4575b5f6408000000008216600f0b136134a7575b5f6404000000008216600f0b1361348a575b5f6402000000008216600f0b1361346d575b5f6401000000008216600f0b13613450575b5f63800000008216600f0b13613433575b5f63400000008216600f0b13613416575b5f63200000008216600f0b136133f9575b5f63100000008216600f0b136133dc575b5f63080000008216600f0b136133bf575b5f63040000008216600f0b136133a2575b5f63020000008216600f0b13613385575b5f63010000008216600f0b13613368575b5f628000008216600f0b1361334b575b5f624000008216600f0b1361332e575b5f622000008216600f0b13613311575b5f621000008216600f0b136132f4575b5f620800008216600f0b136132d7575b5f620400008216600f0b136132ba575b5f620200008216600f0b1361329d575b5f620100008216600f0b13613280575b5f6180008216600f0b13613263575b5f6140008216600f0b13613246575b5f6120008216600f0b13613229575b5f6110008216600f0b1361320c575b5f6108008216600f0b136131ef575b5f6104008216600f0b136131d2575b5f6102008216600f0b136131b5575b5f6101008216600f0b13613198575b5f60808216600f0b1361317b575b5f60408216600f0b1361315e575b5f60208216600f0b13613141575b5f60108216600f0b13613124575b5f60088216600f0b13613107575b5f60048216600f0b136130ea575b5f60028216600f0b136130cc575b60015f9116600f0b136130af575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161054257600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c90613085565b7001000000000000000162e42fefa39ef35890920260801c91613077565b9170010000000000000002c5c85fdf473de6b20260801c91613069565b91700100000000000000058b90bfbe8e7bcd6d0260801c9161305b565b917001000000000000000b17217f7d1cf79afa0260801c9161304d565b91700100000000000000162e42fefa39ef366f0260801c9161303f565b917001000000000000002c5c85fdf473de6eca0260801c91613031565b9170010000000000000058b90bfbe8e7bce5440260801c91613023565b91700100000000000000b17217f7d1cf79e9490260801c91613015565b9170010000000000000162e42fefa39ef44d910260801c91613006565b91700100000000000002c5c85fdf473dea871f0260801c91612ff7565b917001000000000000058b90bfbe8e7bdcbe2e0260801c91612fe8565b9170010000000000000b17217f7d1cf7d83c1a0260801c91612fd9565b917001000000000000162e42fefa39f02b772c0260801c91612fca565b9170010000000000002c5c85fdf473e242ea380260801c91612fbb565b91700100000000000058b90bfbe8e7cc35c3f00260801c91612fac565b917001000000000000b17217f7d1cfb72b45e10260801c91612f9d565b91700100000000000162e42fefa39fe95583c20260801c91612f8d565b917001000000000002c5c85fdf4741bea6e77e0260801c91612f7d565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c91612f6d565b91700100000000000b17217f7d1d351a389d400260801c91612f5d565b9170010000000000162e42fefa3ae53369388c0260801c91612f4d565b91700100000000002c5c85fdf477b662b269450260801c91612f3d565b917001000000000058b90bfbe8f71cb4e4b33d0260801c91612f2d565b9170010000000000b17217f7d20cf927c8e94c0260801c91612f1d565b917001000000000162e42fefa494f1478fde050260801c91612f0c565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c91612efb565b91700100000000058b90bfbe9ddbac5e109cce0260801c91612eea565b917001000000000b17217f7d5a7716bba4a9ae0260801c91612ed9565b91700100000000162e42fefb2fed257559bdaa0260801c91612ec8565b917001000000002c5c85fdf84bd62ae30a74cc0260801c91612eb7565b9170010000000058b90bfbf8479bd5a81b51ad0260801c91612ea6565b91700100000000b17217f80f4ef5aadda455540260801c91612e95565b9170010000000162e42ff0999ce3541b9fffcf0260801c91612e83565b91700100000002c5c85fe31f35a6a30da1be500260801c91612e71565b917001000000058b90bfcdee5acd3c1cedc8230260801c91612e5f565b9170010000000b17217fba9c739aa5819f44f90260801c91612e4d565b917001000000162e42fff037df38aa2b219f060260801c91612e3b565b9170010000002c5c8601cc6b9e94213c72737a0260801c91612e29565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91612e17565b917001000000b1721835514b86e6d96efd1bfe0260801c91612e05565b91700100000162e430e5a18f6119e3c02282a50260801c91612df2565b917001000002c5c863b73f016468f6bac5ca2b0260801c91612ddf565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91612dcc565b91700100000b1721bcfc99d9f890ea069117630260801c91612db9565b9170010000162e43f4f831060e02d839a9d16d0260801c91612da6565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c91612d93565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c91612d80565b9170010000b17255775c040618bf4a4ade83fc0260801c91612d6d565b917001000162e525ee054754457d59952920260260801c91612d59565b9170010002c5cc37da9491d0985c348c68e7b30260801c91612d45565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91612d31565b917001000b175effdc76ba38e31671ca9397250260801c91612d1d565b91700100162f3904051fa128bca9c55c31e5df0260801c91612d09565b917001002c605e2e8cec506d21bfc89a23a00f0260801c91612cf5565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c91612ce1565b91700100b1afa5abcbed6129ab13ec11dc95430260801c91612ccd565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c91612cb8565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c91612ca3565b917001059b0d31585743ae7c548eb68ca417fd0260801c91612c8e565b9170010b5586cf9890f6298b92b71842a983630260801c91612c79565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c91612c64565b917001306fe0a31b7152de8d5a46305c85edec0260801c91612c4f565b6fb504f333f9de6484597d89b3754abe9f9250612c3a56fea2646970667358221220bcd855312fe832ac7c3b814efb1009a00aa9ab02b83ec77246e3ce037c88990c64736f6c634300081e003360a03461009c57601f61553838819003918201601f19168301916001600160401b038311848410176100a05780849260209460405283398101031261009c57516001600160a01b038116810361009c5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005560805260405161548390816100b58239608051818181612cd6015281816131e7015261343f0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c8063228fa850146124535780633dd3c80514611d5c5780636863f5bc146119a55780638d01fa4414611483578063b3f1c93d14611009578063c5eabfb914610831578063cdc2468b14610803578063e9f317f0146102285763f16b7c261461007c575f80fd5b346102245761008a366125fe565b94919080949394518410156101c657821561016857851561010a576100dc846100d46100e3946100fd976100c360409b6100ea99613689565b9160208151600f0b910151906141fe565b939050612798565b5190612e7c565b9283612c31565b50826100f882809511612abd565b61295c565b9082519182526020820152f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6275726e53776170416d6f756e74733a20656d70747920737570706c790000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6275726e53776170416d6f756e74733a207a65726f206c7000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6275726e53776170416d6f756e74733a206964780000000000000000000000006044820152fd5b5f80fd5b3461022457610236366125fe565b925f9594959291925082518510156107a5578515610747576020820191825151156106e9578115159387856106b8575b61027b906102748984612798565b5190613689565b5f81600f0b13156106345761029e6102a691896102ad9551600f0b88519061397d565b989092612798565b51906141c9565b9081156105b0575f9361055b575b50826102c69161294f565b948515159081610550575b50156104cc5751935f92835b8651851015610308576103006001916102f6878a612798565b51600f0b90612f34565b9401936102dd565b90855f83600f0b131561046e5761032b6103309161032585612e62565b94612f34565b612e62565b91816103c3575050915b82156103655761036190604051938493846040919493926060820195825260208201520152565b0390f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761704d696e74416d6f756e74733a207a65726f204c50206d696e746564006044820152fd5b90918115610410578180821115610407576103dd9161295c565b915b82156103fd576103f7926103f2916127d9565b6127ec565b9161033a565b5050505f9161033a565b50505f916103df565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761704d696e74416d6f756e74733a206f6c645363616c6564207a65726f006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f737761704d696e74416d6f756e74733a207a65726f20746f74616c00000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f737761704d696e74416d6f756e74733a207472616e736665722065786365656460448201527f73206d61780000000000000000000000000000000000000000000000000000006064820152fd5b9050851115866102d1565b816105679294506127d9565b620f423f810180911161058357620f42409004916102c66102bb565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f737761704d696e74416d6f756e74733a20696e707574207a65726f206166746560448201527f7220696e7465726e616c20636f6e76657273696f6e00000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f737761704d696e74416d6f756e74733a20696e70757420746f6f20736d616c6c60448201527f20616674657220666565000000000000000000000000000000000000000000006064820152fd5b506106c383896127d9565b620f423f8101809111610583576106e2620f424061027b92048a61295c565b9050610266565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f737761704d696e74416d6f756e74733a20756e696e697420706f6f6c000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f737761704d696e74416d6f756e74733a20696e707574207a65726f00000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f737761704d696e74416d6f756e74733a206964780000000000000000000000006044820152fd5b346102245761036161081d61081736612523565b91612b22565b604051918291602083526020830190612577565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610224576108636125aa565b602435906044359081600f0b82036102245761088460ff600854161561288a565b61088c612bba565b600b5490600354158015610fff575b15610f7b576108a982612749565b936108b383612749565b925f5b818110610d54575050600a548551809103610b5e575b505f5b855181101561092457806108e560019288612798565b51600f0b61091c6108f5836129fd565b81939154906fffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b9055016108cf565b50835f610937610932612969565b612e37565b600f0b1315610b00577fffffffffffffffffffffffffffffffff0000000000000000000000000000000060095416906fffffffffffffffffffffffffffffffff16176009555f600954600f0b1315610aa25780610a7757507f6bc0553967b8bb727947c938555c0e061c3f96b629935c8f82a43b558dfb1c576109f3670de0b6b3a7640000935b84610a68575b73ffffffffffffffffffffffffffffffffffffffff6040519283925f8452606060208501526060840190612577565b9486604084015216930390a260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015610a38575b602083604051908152f35b5f80809381938290610a5f575b3390f115610a54578180610a2d565b6040513d5f823e3d90fd5b506108fc610a45565b610a72858561312a565b6109c4565b6109f37f6bc0553967b8bb727947c938555c0e061c3f96b629935c8f82a43b558dfb1c5791936109be565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4c4d53523a206b617070613e30000000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4c4d53523a20746f74616c207a65726f000000000000000000000000000000006044820152fd5b610b6790612749565b80519067ffffffffffffffff8211610d2757680100000000000000008211610d2757600a5482600a55808310610c90575b5060200190600a5f5260205f208160011c915f5b838110610c4257507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8116900380610be7575b5050506108cc565b925f935f5b818110610c0157505050015585808080610bdf565b9091946020610c386001928851600f0b908560041b6fffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b9601929101610bec565b5f5f5b60028110610c5a575083820155600101610bac565b86519096916001916020916fffffffffffffffffffffffffffffffff60078b901b81811b199092169216901b1792019601610c45565b600a5f5260205f206001808501811c8201920160011c019060108460041b1680610ccf575b505b818110610cc45750610b98565b5f8155600101610cb7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82549160200360031b1c16905589610cb5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6024602073ffffffffffffffffffffffffffffffffffffffff610d7684612907565b90549060031b1c16604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa908115610a54575f91610f4a575b508015610ec65780610e3b91610dd48489612798565b52610e1881610de285612937565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b610e2581610de2856128ef565b610e2e836128ef565b90549060031b1c90613689565b610e458289612798565b90600f0b90525f610e568289612798565b51600f0b1315610e68576001016108b6565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f696e697469616c4d696e743a207a65726f20696e7465726e616c2071000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f696e697469616c4d696e743a207a65726f20696e697469616c2062616c616e6360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152fd5b90506020813d8211610f73575b81610f646020938361246d565b81010312610224575188610dbe565b3d9150610f57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f696e697469616c4d696e743a20706f6f6c20616c726561647920696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152fd5b50600a541561089b565b60807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102245761103b6125aa565b6110436125cd565b906044359160643561105a60ff600854161561288a565b611062612bba565b8015908115611478575b501561141a57600b5460035480158015611410575b61138c57841561132e576110ac61109c61032b610932612969565b916110a5612a3d565b9087612b22565b915f5b8181106112d557506110c081612749565b905f5b81811061128857505061032b816109326110dc93613047565b818082111561127f576110ee9161295c565b905b8115611276576103f2611105926003546127d9565b935b8415611218576201869f81029081046201869f0361058357620186a0900484106111ba578161117f8573ffffffffffffffffffffffffffffffffffffffff93611171827f6bc0553967b8bb727947c938555c0e061c3f96b629935c8f82a43b558dfb1c579761312a565b604051948594169684612a85565b0390a260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015610a3857602083604051908152f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6d696e743a20696e73756666696369656e74204c50206d696e746564000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6d696e743a207a65726f204c50206d696e7465640000000000000000000000006044820152fd5b50505f93611107565b50505f906110f0565b806112bf6112b261129a600194612937565b90549060031b1c6112ab848a612798565b519061294f565b610e2581610de285612937565b6112c98286612798565b90600f0b9052016110c3565b806112e260019286612798565b516112ee575b016110af565b61132973ffffffffffffffffffffffffffffffffffffffff61130f83612907565b90549060031b1c166113218388612798565b519089612cbe565b6112e8565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6d696e743a207a65726f204c5020616d6f756e740000000000000000000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f6d696e743a2075736520696e697469616c4d696e7420666f7220706f6f6c206960448201527f6e697469616c697a6174696f6e000000000000000000000000000000000000006064820152fd5b50600a5415611081565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f6d696e743a20646561646c696e652065786365656465640000000000000000006044820152fd5b90504211158461106c565b34610224576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610224576114bb6125aa565b6114c36125cd565b9060443591606435916084359360a4359182151583036102245760e435936114e9612bba565b6114f860ff600854161561288a565b600b5496878710156119475783156118e95780159081156118de575b5015611880576003548015611822576115486115336115609286613689565b88600954600f0b611542612969565b906141fe565b9050611553886128ef565b90549060031b1c90612e7c565b9461157e61157060c43588612c31565b50876100f882809a11612abd565b965f9180151580611819575b6117a5575b506115b88573ffffffffffffffffffffffffffffffffffffffff861695863303611760576135b1565b6115ea73ffffffffffffffffffffffffffffffffffffffff6115d983612907565b90549060031b1c16968985896131c1565b6115f389612749565b905f5b8a81106117075750506001985f5b8181106116ca575b50509161168973ffffffffffffffffffffffffffffffffffffffff927f8c012c6148e8ecc34b864721470dcc1e938d162c498b7d28961a8a78238cfe139460409b5f146116bc575061165c61347c565b611666818a61295c565b8b51978852602088018b9052604088015260608701529116939081906080820190565b0390a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005582519182526020820152f35b6116c590613047565b61165c565b6116d48184612798565b51600f0b6116e457600101611604565b505f9950611689905073ffffffffffffffffffffffffffffffffffffffff61160c565b80611736611716600193612937565b90549060031b1c868d86851461174c575b5050610e2581610de285612937565b6117408286612798565b90600f0b9052016115f6565b6100f8906117599361295c565b868d611727565b865f52600260205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f526020526117a06117998360405f205461295c565b33836134dc565b6135b1565b620f42409192506117b690886127d9565b0490816117c4575b8961158f565b6118146117d08261291f565b6117e08583548360031b1c61294f565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b6117be565b5087151561158a565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6275726e537761703a20656d70747920737570706c79000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6275726e537761703a20646561646c696e6500000000000000000000000000006044820152fd5b905042111588611514565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6275726e537761703a207a65726f206c700000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6275726e537761703a20696478000000000000000000000000000000000000006044820152fd5b346102245760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610224576119dc6125aa565b6119e46125cd565b6084359160443591606435841515850361022457611a00612bba565b8015908115611d51575b5015611cf357600b54928015611c95576003548015611c3757611a3990611a32969596612a3d565b9083612823565b935f5b868110611bd8575050611a4e85612749565b5f5b868110611b9257506001955f5b818110611b55575b505091611adb73ffffffffffffffffffffffffffffffffffffffff927f3f84ed8aa11ed632de380466083280b4c5da668f12695b08636d7848eaf896b494610361985f14611b475750611ab661347c565b838616803303611b16575b50611acc81876135b1565b86604051948594169684612a85565b0390a260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055604051918291602083526020830190612577565b5f52600260205260405f208433165f52602052611b41611b3a8260405f205461295c565b33886134dc565b88611ac1565b611b5090613047565b611ab6565b611b5f8184612798565b51600f0b611b6f57600101611a5d565b505f9650611adb905073ffffffffffffffffffffffffffffffffffffffff611a65565b80611bbf6112b2611ba76001949a999a612937565b90549060031b1c611bb8848c612798565b519061295c565b611bc98285612798565b90600f0b905201959495611a50565b80611be7600192889998612798565b51611bf6575b01959495611a3c565b611c328373ffffffffffffffffffffffffffffffffffffffff611c1884612907565b90549060031b1c1687611c2b858d612798565b51916131c1565b611bed565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6275726e3a20656d70747920737570706c7900000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6275726e3a207a65726f206c70000000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f6275726e3a20646561646c696e652065786365656465640000000000000000006044820152fd5b905042111585611a0a565b60e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022457611d8e6125aa565b611d966125cd565b604435606435916084359360a4359360c43592611db860ff600854161561288a565b611dc0612bba565b600b5496878610156123f557821561239757801590811561238c575b501561232e57600a54156122d057611e02611df78784612c31565b9050610e2e876128ef565b945f86600f0b131561224c57611e2a611e429682600954600f0b611e24612969565b9061397d565b9690611e35836128ef565b90549060031b1c90612c53565b9687156121c857611e539088612c85565b95611e5e878961294f565b9384151590816121bd575b501561215f57611e9f8473ffffffffffffffffffffffffffffffffffffffff611e9185612907565b90549060031b1c1687612cbe565b5f9580151580612156575b612116575b50611ed8611ebd878661295c565b6117e0611ec985612937565b91909283548360031b1c61294f565b611ee3610932612969565b98611ef7611ef08b612e62565b928b612f34565b91611f0183612e62565b6003549091816120d4575050995b8a1561207657611f1e82612749565b925f5b838110612038575050505091611fbf73ffffffffffffffffffffffffffffffffffffffff611f838194611f747fcbf41a060d7827197acec8e5ef3abf36d633e77060f7aec03943608d1cd84ebe97613047565b611f7e8d8661312a565b612907565b90549060031b1c1696611f96818a61295c565b8b8560405196879616991697859094939260609260808301968352602083015260408201520152565b0390a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015612013575b505061036190604051938493846040919493926060820195825260208201520152565b5f8080938193829061202f575b3390f115610a54578380611ff0565b506108fc612020565b806120608461205b8561204c6001966129fd565b90549060031b1c600f0b612f71565b613001565b61206a8288612798565b90600f0b905201611f21565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f737761704d696e743a207a65726f204c50206d696e74656400000000000000006044820152fd5b9091818082111561210d576120e89161295c565b915b8215612103576120fd926103f2916127d9565b99611f0f565b5050505f99611f0f565b50505f916120ea565b620f424091965061212790886127d9565b049485612135575b89611eaf565b6121516121418361291f565b6117e08983548360031b1c61294f565b61212f565b50871515611eaa565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f737761704d696e743a207472616e736665722065786365656473206d617800006044820152fd5b90508411158a611e69565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f737761704d696e743a20696e707574207a65726f20616674657220696e74657260448201527f6e616c20636f6e76657273696f6e0000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f737761704d696e743a20696e70757420746f6f20736d616c6c2061667465722060448201527f66656500000000000000000000000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f737761704d696e743a20756e696e697420706f6f6c00000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f737761704d696e743a20646561646c696e6500000000000000000000000000006044820152fd5b905042111588611ddc565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f737761704d696e743a20696e707574207a65726f0000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f737761704d696e743a20696478000000000000000000000000000000000000006044820152fd5b346102245761036161081d61246736612523565b91612823565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610d2757604052565b67ffffffffffffffff8111610d275760051b60200190565b9080601f830112156102245781356124dd816124ae565b926124eb604051948561246d565b81845260208085019260051b82010192831161022457602001905b8282106125135750505090565b8135815260209182019101612506565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102245760043591602435916044359067ffffffffffffffff821161022457612574916004016124c6565b90565b90602080835192838152019201905f5b8181106125945750505090565b8251845260209384019390920191600101612587565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361022457565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361022457565b359081600f0b820361022457565b60c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102245760043591602435916044359160643567ffffffffffffffff81116102245760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc828503011261022457604051906040820182811067ffffffffffffffff821117610d275760405261269c816004016125f0565b825260248101359067ffffffffffffffff8211610224570183602382011215610224576004810135906126ce826124ae565b916126dc604051938461246d565b808352602060048185019260051b840101019186831161022457602401905b828210612731575050506020820152916084359067ffffffffffffffff82116102245761272a916004016124c6565b9060a43590565b6020809161273e846125f0565b8152019101906126fb565b90612753826124ae565b612760604051918261246d565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061278e82946124ae565b0190602036910137565b80518210156127ac5760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8181029291811591840414171561058357565b81156127f6570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b9082519161283083612749565b9382158015612882575b61287b575f5b84811061284f57505050505090565b8061286a856103f261286360019587612798565b51876127d9565b6128748289612798565b5201612840565b5050505090565b50831561283a565b1561289157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b600d548110156127ac57600d5f5260205f2001905f90565b600b548110156127ac57600b5f5260205f2001905f90565b600c548110156127ac57600c5f5260205f2001905f90565b600f548110156127ac57600f5f5260205f2001905f90565b9190820180921161058357565b9190820391821161058357565b60405190600a548083528260208101600a5f5260205f20925f905b8060018301106129d1576129aa9454918181106129bd575b106129ac575b50038361246d565b565b60801d600f0b81526020015f6129a2565b92602060019184600f0b815201930161299c565b9160029193506040600191865480600f0b825260801d600f0b6020820152019401920185929391612984565b90600a548210156127ac57600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b60405190600f548083528260208101600f5f5260205f20925f5b818110612a6c5750506129aa9250038361246d565b8454835260019485019487945060209093019201612a57565b939291612ab89073ffffffffffffffffffffffffffffffffffffffff604093168652606060208701526060860190612577565b930152565b15612ac457565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6275726e53776170416d6f756e74733a206f7574707574207a65726f000000006044820152fd5b825190612b2e82612749565b9383158015612bb2575b61287b575f5b838110612b4d57505050505090565b612b6a85612b65612b5e8486612798565b51866127d9565b61294f565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820191821161058357612ba1866001936127ec565b612bab8289612798565b5201612b3e565b508215612b38565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005414612c095760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b91908015612c4d57612c466125749184612c85565b809361295c565b505f9190565b612c67612c608383612e7c565b9283613689565b90600f0b90600f0b12612c775790565b600181018091116105835790565b908015612cb857612c95916127d9565b620f424081019081811161058357620f423f0190811161058357620f4240900490565b50505f90565b9073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169173ffffffffffffffffffffffffffffffffffffffff82169183831480612e2d575b15612d6e57505050803b15610224575f906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af18015610a5457612d645750565b5f6129aa9161246d565b919390925073ffffffffffffffffffffffffffffffffffffffff604051937f23b872dd000000000000000000000000000000000000000000000000000000005f52166004523060245260445260205f60648180855af19060015f5114821615612e0e575b50906040525f60605215612de35750565b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6001821516612e24573b15153d1516165f612dd2565b823d5f823e3d90fd5b5084341015612d18565b5f90815b8151831015612e5c57612e546001916102f68585612798565b920191612e3b565b91505090565b600f0b5f811261022457670de0b6b3a76400000260401c90565b8115612cb857600f0b5f8112610224576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116102245760401b81198111610224570190565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a575b1561022457600f0b90565b506f7fffffffffffffffffffffffffffffff811315612f0f565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b600f0b801561022457700100000000000000000000000000000000057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b90600f0b9081156102245760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b5f61305182612e37565b600f0b13156130cc578051600a915f5b82811061306e5750505050565b6130788183612798565b51600f0b9084548110156127ac57600191855f526130c460205f2083851c019160108460041b168354906fffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b905501613061565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a206e657720746f74616c207a65726f0000000000000000000000006044820152fd5b73ffffffffffffffffffffffffffffffffffffffff16908115613195577fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6020826131785f9460035461294f565b6003558484526001825260408420818154019055604051908152a3565b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b90919280613427575b1561335d575073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b15610224576040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081525f816024818380978960048401525af18015610a5457613348575b508180809481935af1903d15613342573d9067ffffffffffffffff821161331557604051916132a760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116018461246d565b825260203d92013e5b156132b757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526041600452fd5b506132b0565b6133559192505f9061246d565b5f905f613250565b9173ffffffffffffffffffffffffffffffffffffffff604051927fa9059cbb000000000000000000000000000000000000000000000000000000005f521660045260245260205f60448180865af19060015f5114821615613406575b604052156133c45750565b73ffffffffffffffffffffffffffffffffffffffff907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b90600181151661341e57823b15153d151616906133b9565b503d5f823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8216146131ca565b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000060095416600955600a545f600a55806134b35750565b600a5f52600160205f20910160011c8101905b8181106134d1575050565b5f81556001016134c6565b73ffffffffffffffffffffffffffffffffffffffff169081156135855773ffffffffffffffffffffffffffffffffffffffff169182156135595760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591835f526002825260405f20855f5282528060405f2055604051908152a3565b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b90919073ffffffffffffffffffffffffffffffffffffffff16801561365d57805f52600160205260405f205483811061362a576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef93858752600184520360408620558060035403600355604051908152a3565b91507fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b81156102245777ffffffffffffffffffffffffffffffffffffffffffffffff811161370157906136bb9160401b6127ec565b6fffffffffffffffffffffffffffffffff8111610224576fffffffffffffffffffffffffffffffff166f7fffffffffffffffffffffffffffffff811161022457600f0b90565b60c09181831c80936401000000008210156138a6575b600282620100006137a494101561389a575b61010081101561388e575b6010811015613882575b6004811015613877575b101561386f575b8360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b6127ec565b926fffffffffffffffffffffffffffffffff8411610224578160801c8402906fffffffffffffffffffffffffffffffff8316850290809460401b90828210613845575b5003928160801b9182851061381c575b60801c036138115761380992036127ec565b905b016136bb565b50505060019061380b565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906137f7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f6137e7565b60010161374f565b91810191811c613748565b6004928301921c61373e565b6008928301921c613734565b6010928301921c613729565b505060e082811c90613717565b156138ba57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b1561391f57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4c4d53523a20623c3d30000000000000000000000000000000000000000000006044820152fd5b90919392938251928382101561416b575f86600f0b131561410d576139a181612e37565b936139bb855f81600f0b13956139b6876138b3565b612f71565b906139ca5f83600f0b13613918565b6139d382612fb1565b916139dd82612749565b955f5b8381106140c357506510c6f7a0b5ed905f901561406557613a01898c613001565b916801000000000000000083600f0b12614054575b5f5b60408110613e39575b505f9b5f935b60408510613c09575b50505050505f955f935f5b848110613b05575b5050505050613af95791613a6b613a61613a7093613a769695612798565b51600f0b87612f71565b612f34565b93612f71565b915f83600f0b13801590613aec575b613a8d579190565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4c4d53523a207a65726f206f75747075740000000000000000000000000000006044820152606490fd5b505f81600f0b1315613a85565b5050505090505f905f90565b878103613b15575b600101613a3b565b613b2c613b228289612798565b51600f0b8d612f71565b5f81600f0b13613b3d575b50613b0d565b82613b4a919a929a612f71565b6820000000000000000081600f0b13613bf557613b69613b84916146aa565b613b7f613b768c87612798565b51600f0b612ed7565b614655565b5f81600f0b1315613bf557613ba690613b9d8b86612798565b51600f0b613001565b5f81600f0b1315613bf557613bbd613bc39161470c565b85612f71565b905f82600f0b12613be157600191613bda91612f34565b9890613b37565b985050505050505060015f80808080613a43565b509750505050505060015f80808080613a43565b68020000000000000000613c1d8286612f34565b60401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613e1f575b1561022457600f0b90898c8c5f915f905f905b8d8210613d01575b505015613ce2575050506f7fffffffffffffffffffffffffffffff5b83600f0b90600f0b135f14613cd95750935b82613ca28587614655565b600f0b1315613cc757603f8114613cbd575b60010193613a27565b929c508c92613cb4565b50505091995050975f80808080613a30565b94935092613c97565b613cf2613a6b91613cfc94612798565b51600f0b85612f71565b613c85565b9092839592949503613d1f575b50506001018c92918f918f92613c61565b8d613d37613d2d8585612798565b51600f0b89612f71565b5f81600f0b13613d49575b5050613d0e565b90613d5691969496612f71565b6820000000000000000081600f0b13613e0f57613d75613d82916146aa565b613b7f613b768885612798565b915f83600f0b1315613dff575090613b9d85613d9d93612798565b8d5f82600f0b1315613df05750613db6613dbc9161470c565b8b612f71565b908d5f83600f0b12613de15750600191613dd591612f34565b9290508c8f8d5f613d42565b93509150508c60018f80613c69565b93505090508c60018f80613c69565b9450505090508c60018f80613c69565b5050925090508c60018f80613c69565b506f7fffffffffffffffffffffffffffffff811315613c4e565b925f5f5f5b888110613f36575b5015613f1657506f7fffffffffffffffffffffffffffffff5b8d600f0b90600f0b12801590613efe575b613ef857600f0b60411b60401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613ede575b1561022457600f0b926a10000000000000000000008413613ecb575b600101613a18565b6a10000000000000000000009350613ec3565b506f7fffffffffffffffffffffffffffffff811315613ea7565b92613a21565b506a100000000000000000000081600f0b1215613e70565b613f3190613a6b613f278c8c612798565b51600f0b84612f71565b613e5f565b839e9c9a98969f9d9b9980989695948b8303613f65575b50506001019e9597999b9d92939496989a9c9e613e3e565b613f7d90613f73848d612798565b51600f0b90612f71565b5f81600f0b13613f8f575b508f613f4d565b90613f9c91949294612f71565b6820000000000000000081600f0b1361403a578b613b7f613b7686613fc3613fc9956146aa565b93612798565b5f81600f0b131561403a57613fe290613b9d858e612798565b5f81600f0b131561403a57613ff9613fff9161470c565b87612f71565b905f82600f0b126140205760019161401691612f34565b929050875f613f88565b9250505060019d9496989a9c9192939597999b9d5f613e46565b5091505060019d9496989a9c9192939597999b9d5f613e46565b680100000000000000009250613a16565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4c4d53523a20737761704d696e7420646567656e6572617465000000000000006044820152fd5b6001906140f76140f2876139b66140da8c8c612798565b51600f0b6140e8868d612798565b51600f0b90614655565b6146aa565b614101828b612798565b90600f0b9052016139e0565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4c4d53523a20616d6f756e74203c3d20300000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4c4d53523a2069647800000000000000000000000000000000000000000000006044820152fd5b6141ee6141df6141d98484612e7c565b93614692565b6141e884614692565b92612f71565b90600f0b90600f0b13612c775790565b93919383600f0b5f8113156145b55768010000000000000000126145575761423861422883612e37565b80926139b65f83600f0b136138b3565b906142475f83600f0b13613918565b61425082612fb1565b61425c84519287612f71565b9661426683612749565b935f5b84811061451e575061427e613d2d8388612798565b975f89600f0b13965f5b8681106142b25750505050505050501580156142a5575b613a8d57565b505f82600f0b131561429f565b8481036142c5575b600101955b95614288565b6142d2613f278284612798565b5f81600f0b136142e3575b506142ba565b6142f387829d949d9b939b612f71565b9182600f0b926820000000000000000084136144f2577fffffffffffffffffffffffffffffffff8000000000000000000000000000000061434e6140f28b8f8f6140e88e6143446139b69484612798565b51600f0b92612798565b94146102245761436d614368614373925f03600f0b6146aa565b614613565b84612f71565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580614504575b1561022457600f0b5f8113156144f257613ff96143c79161470c565b9288888c6143d58282612798565b51600f0b87600f0b1361444a576144049450614440979593506143fb92508e9150612798565b51600f0b612f34565b61440e8b8b612798565b90600f0b905261442b82614422888c612798565b51600f0b614655565b614435878b612798565b90600f0b9052612f34565b98600197886142dd565b61447694965061446d9395506140f2929161446491612798565b51600f0b612f71565b613b7f83612ed7565b915f83600f0b13156144e157506144a561449f61449a6144c995946144af94613001565b61470c565b86612f71565b6143fb8b8b612798565b6144b98a8a612798565b90600f0b90526102f68589612798565b985f6144d58589612798565b526001809801956142bf565b999050600191509a919a01956142bf565b50999050600191509a919a01956142bf565b506f7fffffffffffffffffffffffffffffff8113156143ab565b8061454161452e6001938a612798565b51600f0b61453b8c614613565b90612f71565b61454b8289612798565b90600f0b905201614269565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4275726e20746f6f206c617267650000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4275726e20746f6f20736d616c6c0000000000000000000000000000000000006044820152fd5b600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b677fffffffffffffff81116102245760401b600f0b90565b600f0b68400000000000000000811215610224577fffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000811261470757700171547652b82fe1777d0ffda0d23a7d12612574910260801d600f0b614839565b505f90565b600f0b5f811315610224575f90806801000000000000000082121561482c575b806401000000006002921215614820575b62010000811215614814575b610100811215614808575b60108112156147fc575b60048112156147f1575b12156147e7575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f83136147cb57506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d90565b8002908160ff1c9182607f011c918302019160011d91906147a6565b906001019061476f565b92810192811d614768565b6004938401931d61475e565b6008938401931d614754565b6010938401931d614749565b6020938401931d61473d565b506040915080821d61472c565b80600f0b68400000000000000000811215610224577fffffffffffffffffffffffffffffffffffffffffffffffc000000000000000008112612cb8576f80000000000000000000000000000000915f6780000000000000008216600f0b13615435575b5f6740000000000000008216600f0b13615418575b5f6720000000000000008216600f0b136153fb575b5f6710000000000000008216600f0b136153de575b5f6708000000000000008216600f0b136153c1575b5f6704000000000000008216600f0b136153a4575b5f6702000000000000008216600f0b13615387575b5f6701000000000000008216600f0b1361536a575b5f66800000000000008216600f0b1361534d575b5f66400000000000008216600f0b13615330575b5f66200000000000008216600f0b13615313575b5f66100000000000008216600f0b136152f6575b5f66080000000000008216600f0b136152d9575b5f66040000000000008216600f0b136152bc575b5f66020000000000008216600f0b1361529f575b5f66010000000000008216600f0b13615282575b5f658000000000008216600f0b13615265575b5f654000000000008216600f0b13615248575b5f652000000000008216600f0b1361522b575b5f651000000000008216600f0b1361520e575b5f650800000000008216600f0b136151f1575b5f650400000000008216600f0b136151d4575b5f650200000000008216600f0b136151b7575b5f650100000000008216600f0b1361519a575b5f6480000000008216600f0b1361517d575b5f6440000000008216600f0b13615160575b5f6420000000008216600f0b13615143575b5f6410000000008216600f0b13615126575b5f6408000000008216600f0b13615109575b5f6404000000008216600f0b136150ec575b5f6402000000008216600f0b136150cf575b5f6401000000008216600f0b136150b2575b5f63800000008216600f0b13615095575b5f63400000008216600f0b13615078575b5f63200000008216600f0b1361505b575b5f63100000008216600f0b1361503e575b5f63080000008216600f0b13615021575b5f63040000008216600f0b13615004575b5f63020000008216600f0b13614fe7575b5f63010000008216600f0b13614fca575b5f628000008216600f0b13614fad575b5f624000008216600f0b13614f90575b5f622000008216600f0b13614f73575b5f621000008216600f0b13614f56575b5f620800008216600f0b13614f39575b5f620400008216600f0b13614f1c575b5f620200008216600f0b13614eff575b5f620100008216600f0b13614ee2575b5f6180008216600f0b13614ec5575b5f6140008216600f0b13614ea8575b5f6120008216600f0b13614e8b575b5f6110008216600f0b13614e6e575b5f6108008216600f0b13614e51575b5f6104008216600f0b13614e34575b5f6102008216600f0b13614e17575b5f6101008216600f0b13614dfa575b5f60808216600f0b13614ddd575b5f60408216600f0b13614dc0575b5f60208216600f0b13614da3575b5f60108216600f0b13614d86575b5f60088216600f0b13614d69575b5f60048216600f0b13614d4c575b5f60028216600f0b13614d2e575b60015f9116600f0b13614d11575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161022457600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c90614ce7565b7001000000000000000162e42fefa39ef35890920260801c91614cd9565b9170010000000000000002c5c85fdf473de6b20260801c91614ccb565b91700100000000000000058b90bfbe8e7bcd6d0260801c91614cbd565b917001000000000000000b17217f7d1cf79afa0260801c91614caf565b91700100000000000000162e42fefa39ef366f0260801c91614ca1565b917001000000000000002c5c85fdf473de6eca0260801c91614c93565b9170010000000000000058b90bfbe8e7bce5440260801c91614c85565b91700100000000000000b17217f7d1cf79e9490260801c91614c77565b9170010000000000000162e42fefa39ef44d910260801c91614c68565b91700100000000000002c5c85fdf473dea871f0260801c91614c59565b917001000000000000058b90bfbe8e7bdcbe2e0260801c91614c4a565b9170010000000000000b17217f7d1cf7d83c1a0260801c91614c3b565b917001000000000000162e42fefa39f02b772c0260801c91614c2c565b9170010000000000002c5c85fdf473e242ea380260801c91614c1d565b91700100000000000058b90bfbe8e7cc35c3f00260801c91614c0e565b917001000000000000b17217f7d1cfb72b45e10260801c91614bff565b91700100000000000162e42fefa39fe95583c20260801c91614bef565b917001000000000002c5c85fdf4741bea6e77e0260801c91614bdf565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c91614bcf565b91700100000000000b17217f7d1d351a389d400260801c91614bbf565b9170010000000000162e42fefa3ae53369388c0260801c91614baf565b91700100000000002c5c85fdf477b662b269450260801c91614b9f565b917001000000000058b90bfbe8f71cb4e4b33d0260801c91614b8f565b9170010000000000b17217f7d20cf927c8e94c0260801c91614b7f565b917001000000000162e42fefa494f1478fde050260801c91614b6e565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c91614b5d565b91700100000000058b90bfbe9ddbac5e109cce0260801c91614b4c565b917001000000000b17217f7d5a7716bba4a9ae0260801c91614b3b565b91700100000000162e42fefb2fed257559bdaa0260801c91614b2a565b917001000000002c5c85fdf84bd62ae30a74cc0260801c91614b19565b9170010000000058b90bfbf8479bd5a81b51ad0260801c91614b08565b91700100000000b17217f80f4ef5aadda455540260801c91614af7565b9170010000000162e42ff0999ce3541b9fffcf0260801c91614ae5565b91700100000002c5c85fe31f35a6a30da1be500260801c91614ad3565b917001000000058b90bfcdee5acd3c1cedc8230260801c91614ac1565b9170010000000b17217fba9c739aa5819f44f90260801c91614aaf565b917001000000162e42fff037df38aa2b219f060260801c91614a9d565b9170010000002c5c8601cc6b9e94213c72737a0260801c91614a8b565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91614a79565b917001000000b1721835514b86e6d96efd1bfe0260801c91614a67565b91700100000162e430e5a18f6119e3c02282a50260801c91614a54565b917001000002c5c863b73f016468f6bac5ca2b0260801c91614a41565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91614a2e565b91700100000b1721bcfc99d9f890ea069117630260801c91614a1b565b9170010000162e43f4f831060e02d839a9d16d0260801c91614a08565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c916149f5565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c916149e2565b9170010000b17255775c040618bf4a4ade83fc0260801c916149cf565b917001000162e525ee054754457d59952920260260801c916149bb565b9170010002c5cc37da9491d0985c348c68e7b30260801c916149a7565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91614993565b917001000b175effdc76ba38e31671ca9397250260801c9161497f565b91700100162f3904051fa128bca9c55c31e5df0260801c9161496b565b917001002c605e2e8cec506d21bfc89a23a00f0260801c91614957565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c91614943565b91700100b1afa5abcbed6129ab13ec11dc95430260801c9161492f565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c9161491a565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c91614905565b917001059b0d31585743ae7c548eb68ca417fd0260801c916148f0565b9170010b5586cf9890f6298b92b71842a983630260801c916148db565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c916148c6565b917001306fe0a31b7152de8d5a46305c85edec0260801c916148b1565b6fb504f333f9de6484597d89b3754abe9f925061489c56fea2646970667358221220467f854c2026e7b4a953423ce7e4a2a365f7727509b2ab675bcdc27887fb74c664736f6c634300081e003360808060405234601557615896908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c636ae73ce314610024575f80fd5b34610373576101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103735760043573ffffffffffffffffffffffffffffffffffffffff81168091036103735760243567ffffffffffffffff8111610373576100959036906004016103f8565b9060443567ffffffffffffffff8111610373576100b69036906004016103f8565b6064359067ffffffffffffffff82116103735736602383011215610373578160040135916100eb6100e684610468565b6103b4565b9060208285815201906024829560051b8201019036821161037357602401915b8183106103875750505060843580600f0b8091036103735760a43567ffffffffffffffff81116103735736602382011215610373578060040135946101526100e687610468565b91602083888152016024819860051b8301019136831161037357602401905b82821061037757505050610104359173ffffffffffffffffffffffffffffffffffffffff831680930361037357610124359373ffffffffffffffffffffffffffffffffffffffff851680950361037357610144359573ffffffffffffffffffffffffffffffffffffffff871680970361037357610164359773ffffffffffffffffffffffffffffffffffffffff8916809903610373576040519b8c9b8c9261539d8094019e8f9081109067ffffffffffffffff1017610346576102528f92938f94602096610260966104c49039845261018086850152610180840190610480565b916040818403910152610480565b8c810360608e01529151808352910193905f5b81811061031a575050509060209160808b015289830360a08b015251918281520195905f5b81811061030457505050918596916101609360c43560c085015260e43560e0850152610100840152610120830152610140820152015203905ff080156102f95760209073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b6040513d5f823e3d90fd5b8251885260209788019790920191600101610298565b825173ffffffffffffffffffffffffffffffffffffffff16865260209586019590920191600101610273565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f80fd5b8135815260209182019101610171565b823573ffffffffffffffffffffffffffffffffffffffff811681036103735781526020928301920161010b565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff82111761034657604052565b81601f820112156103735780359067ffffffffffffffff82116103465761044660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116016103b4565b928284526020838301011161037357815f926020809301838601378301015290565b67ffffffffffffffff81116103465760051b60200190565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f858286010152011601019056fe610140604052346106ee5761539d8038038061001a81610a6a565b9283398101610180828203126106ee5761003382610a8f565b60208301516001600160401b0381116106ee5782610052918501610aa3565b60408401519091906001600160401b0381116106ee5783610074918601610aa3565b60608501519094906001600160401b0381116106ee5781019284601f850112156106ee578351956100ac6100a788610af4565b610a6a565b9460208689815201906020829960051b820101908882116106ee57602001915b818310610a4a57505050608083015180600f0b81036106ee5760a08401516001600160401b0381116106ee5784019680601f890112156106ee5787516101146100a782610af4565b986020808b848152019260051b8201019283116106ee57602001905b828210610a3a5750505060c08401519760e0850151926101536101008701610a8f565b610120870151979095906001600160a01b03891689036106ee57610140880151976001600160a01b03891689036106ee576101600151986001600160a01b038a168a036106ee5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00556080526001600160a01b03168015610a27575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a38051906001600160401b0382116106335760045490600182811c92168015610a1d575b60208310146109405781601f8493116109cf575b50602090601f8311600114610969575f9261095e575b50508160011b915f199060031b1c1916176004555b8051906001600160401b0382116106335760055490600182811c92168015610954575b60208310146109405781601f849311610904575b50602090601f831160011461089e575f92610893575b50508160011b915f199060031b1c1916176005555b60018751111561084e578651906001600160401b0382116106335768010000000000000000821161063357600b5482600b55808310610814575b50600b5f5260205f205f5b8381106107f7575050505060a05285518551036107be5761033a8651610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600654836006558084106107a2575b500160065f5260205f205f5b83811061078e57505050505f5b86518110156104185761271061039c8289610b49565b5110156103e1576103ad8188610b49565b51906006548110156103cd5760019160065f528160205f20015501610386565b634e487b7160e01b5f52603260045260245ffd5b60405162461bcd60e51b815260206004820152600f60248201526e506f6f6c3a20666565203e3d20312560881b6044820152606490fd5b50866127108110156107495760c05262061a8081101561070457801580156106f2575b156106ee5760e052601080546001600160a01b0319166001600160a01b039290921691909117905561012052610100528051905f5b8281106106a7578261048181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600d5483600d5580841061068b575b5001600d5f5260205f205f5b83811061067757846104d181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600f5483600f5580841061065b575b5001600f5f5260205f205f5b8381106106475761052085610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600c5483600c55808410610617575b500190600c5f5260205f20915f5b8281106106035760405161483f9081610b5e8239608051818181611abd01528181611d0e0152818161206101526125bf015260a051818181610f130152610f7f015260c05181818161134801526116a6015260e0518181816105ac01528181610c550152818161105d0152818161136e015281816114be0152611b9701526101005181818161031701526105f70152610120518181816108050152610a720152f35b600190602083519301928186015501610561565b61062d90600c5f5284845f209182019101610b0b565b83610553565b634e487b7160e01b5f52604160045260245ffd5b600190602084519401938184015501610510565b61067190600f5f5284845f209182019101610b0b565b84610504565b6001906020845194019381840155016104c0565b6106a190600d5f5284845f209182019101610b0b565b846104b4565b60018101908181116106da576001600160a01b03906106c69084610b49565b51165f52600e6020528060405f2055610470565b634e487b7160e01b5f52601160045260245ffd5b5f80fd5b506001600160a01b038216151561043b565b60405162461bcd60e51b815260206004820152601960248201527f506f6f6c3a2070726f746f636f6c20666565203e3d20343025000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601560248201527f506f6f6c3a20666c61736820666565203e3d20312500000000000000000000006044820152606490fd5b600190602084519401938184015501610379565b6107b89060065f5284845f209182019101610b0b565b5f61036d565b60405162461bcd60e51b81526020600482015260116024820152700a0deded87440cccacae640d8cadccee8d607b1b6044820152606490fd5b82516001600160a01b031681830155602090920191600101610319565b600b5f52610848907f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9908101908401610b0b565b5f61030e565b60405162461bcd60e51b815260206004820152601360248201527f506f6f6c3a206e656564203e31206173736574000000000000000000000000006044820152606490fd5b015190505f806102bf565b60055f9081528281209350601f198516905b8181106108ec57509084600195949392106108d4575b505050811b016005556102d4565b01515f1960f88460031b161c191690555f80806108c6565b929360206001819287860151815501950193016108b0565b6109309060055f5260205f20601f850160051c81019160208610610936575b601f0160051c0190610b0b565b5f6102a9565b9091508190610923565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610295565b015190505f8061025d565b60045f9081528281209350601f198516905b8181106109b7575090846001959493921061099f575b505050811b01600455610272565b01515f1960f88460031b161c191690555f8080610991565b9293602060018192878601518155019501930161097b565b60045f52610a17907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f850160051c8101916020861061093657601f0160051c0190610b0b565b5f610247565b91607f1691610233565b631e4fbdf760e01b5f525f60045260245ffd5b8151815260209182019101610130565b82516001600160a01b03811681036106ee578152602092830192016100cc565b6040519190601f01601f191682016001600160401b0381118382101761063357604052565b51906001600160a01b03821682036106ee57565b81601f820112156106ee578051906001600160401b03821161063357610ad2601f8301601f1916602001610a6a565b92828452602083830101116106ee57815f9260208093018386015e8301015290565b6001600160401b0381116106335760051b60200190565b818110610b16575050565b5f8155600101610b0b565b90610b2e6100a783610af4565b8281528092610b3f601f1991610af4565b0190602036910137565b80518210156103cd5760209160051b01019056fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c908163017504b6146128c357508063017cf6611461283157806306fdde03146126e8578063095ea7b3146125e35780630d246214146125755780630eeee6271461191757806318160ddd146118db5780631f3a0e411461189a57806323b872dd14611703578063313ce567146116c957806331596a6a1461167057806341c0e1b5146115da578063476e44b614611519578063491e7998146113f15780635cffe9de146112115780636863f5bc146110805780636b4082d1146110275780636b7b911214610fa55780636bba3f2f14610f495780636d8d0ff314610e8e5780636ff97f1d14610d8e57806370a0823114610d2b578063715018a614610c8f57806379a68d5314610b6b5780638da5cb5b14610b1a5780638e499bcf14610ade578063939f5ea414610a965780639517606614610a2757806395d89b41146108cd5780639af1d35a1461082e578063a1af5b9a14610765578063a9059cbb14610715578063b3f1c93d14610648578063cb717f3a146104f3578063cce516b7146104a1578063d516b8c614610416578063dd62ed3e1461039d578063e4b50cb81461033b578063f0d1ae4f146102cc5763f2fde38b0361000f57346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff6102286129d2565b61023061301e565b16801561029d5773ffffffffffffffffffffffffffffffffffffffff8254827fffffffffffffffffffffffff00000000000000000000000000000000000000008216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b6024827f1e4fbdf700000000000000000000000000000000000000000000000000000000815280600452fd5b80fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff61038d600435612aa2565b90549060031b1c16604051908152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff60406103ec6129d2565b92826103f66129f5565b9416815260026020522091165f52602052602060405f2054604051908152f35b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043590602435916064359182600f0b83036102c95761049d61047985858561046f8382613143565b9260443591612d3d565b92505050604093919351938493846040919493926060820195825260208201520152565b0390f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff60105416604051908152f35b5060a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761049d61062b61061c61052f6129d2565b6105376129f5565b60443573ffffffffffffffffffffffffffffffffffffffff6105588261306a565b9281604051957f3dd3c8050000000000000000000000000000000000000000000000000000000060208801521660248601521660448401526064830152606435608483015260843560a483015260c48201527f000000000000000000000000000000000000000000000000000000000000000060e482015260e481526105e061010482612a61565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001661308a565b60208082518301019101612cd1565b604080519384526020840192909252908201529081906060820190565b5060807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f161067e6129d2565b73ffffffffffffffffffffffffffffffffffffffff61069b6129f5565b81604051937fb3f1c93d00000000000000000000000000000000000000000000000000000000602086015216602484015216604482015260443560648201526064356084820152608481526105e060a482612a61565b602081519181808201938492010103126107115760209051604051908152f35b5f80fd5b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761075a6107506129d2565b6024359033612ef9565b602060405160018152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761082a73ffffffffffffffffffffffffffffffffffffffff60105416604051907f2a54db010000000000000000000000000000000000000000000000000000000060208301526024820152602481526107ee604482612a61565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001661308a565b5080f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760405180916020600654928381520191600682527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f915b8181106108b75761049d856108ab81870382612a61565b60405191829182612951565b8254845260209093019260019283019201610894565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576040519080600554908160011c91600181168015610a1d575b6020841081146109f0578386529081156109ab575060011461094e575b61049d8461094281860382612a61565b6040519182918261298a565b600581527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0939250905b8082106109915750909150810160200161094282610932565b919260018160209254838588010152019101909291610978565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208087019190915292151560051b850190920192506109429150839050610932565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b92607f1692610915565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020610ad6602435600435613143565b604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600b54604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b5060e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610b9e6129d2565b90610ba76129f5565b906044356064356084359182600f0b809303610c8b5760c435938415158095036102c95761049d61062b61061c89898989898973ffffffffffffffffffffffffffffffffffffffff610bf98383612cec565b9581604051987f8a3d858d0000000000000000000000000000000000000000000000000000000060208b01521660248901521660448701526064860152608485015260a484015260a43560c484015260e48301526101048201527f000000000000000000000000000000000000000000000000000000000000000061012482015261012481526107ee61014482612a61565b8380fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610cc661301e565b8073ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604060209173ffffffffffffffffffffffffffffffffffffffff610d7d6129d2565b168152600183522054604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604051806020600b5491828152018091600b85527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db990855b818110610e625750505082610e0b910383612a61565b604051928392602084019060208552518091526040840192915b818110610e33575050500390f35b825173ffffffffffffffffffffffffffffffffffffffff16845285945060209384019390920191600101610e25565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610df5565b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f1610ec46129d2565b73ffffffffffffffffffffffffffffffffffffffff604051917fc5eabfb900000000000000000000000000000000000000000000000000000000602084015216602482015260243560448201527f0000000000000000000000000000000000000000000000000000000000000000600f0b6064820152606481526105e0608482612a61565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f0000000000000000000000000000000000000000000000000000000000000000600f0b8152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610ff26129d2565b610ffa61301e565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000601054161760105580f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c95760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576110b86129d2565b6110c06129f5565b90608435801515809103610c8b5773ffffffffffffffffffffffffffffffffffffffff6111429381604051947f6863f5bc0000000000000000000000000000000000000000000000000000000060208701521660248501521660448301526044356064830152606435608483015260a482015260a481526105e060c482612a61565b805181019060208181840193031261120d5760208101519067ffffffffffffffff8211610c8b57019181603f840112156102c95760208301519267ffffffffffffffff84116111e0578360051b91604051946111a16020850187612a61565b855260208080870194840101019384116102c95750604001905b8282106111d0576040518061049d8682612951565b81518152602091820191016111bb565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8280fd5b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043573ffffffffffffffffffffffffffffffffffffffff81168091036113e95761126a6129f5565b60643567ffffffffffffffff8111610c8b5736602382011215610c8b5780600401359067ffffffffffffffff82116113ed5736602483830101116113ed576113c3937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f846107ee9560246101049673ffffffffffffffffffffffffffffffffffffffff6040519a8b987fe49cd4750000000000000000000000000000000000000000000000000000000060208b0152848a0152166044880152604435606488015260c060848801528260e48801520186860137888582860101527f000000000000000000000000000000000000000000000000000000000000000060a48501527f000000000000000000000000000000000000000000000000000000000000000060c48501520116810103017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612a61565b6020818051810103126113e957602001518015158091036113e957602090604051908152f35b5080fd5b8480fd5b50346102c95760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576114296129d2565b6114316129f5565b906064359160a4358015158091036113ed578373ffffffffffffffffffffffffffffffffffffffff6114656114f49661306a565b9381604051967f8d01fa440000000000000000000000000000000000000000000000000000000060208901521660248701521660448501526044356064850152608484015260843560a484015260c483015260e48201527f000000000000000000000000000000000000000000000000000000000000000061010482015261010481526105e061012482612a61565b6040818051810103126113e95780604060208193015191015182519182526020820152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576060602060405161155881612a18565b838152015260405161156981612a18565b600954600f0b8152611579612c3d565b906020810191825260405192839260208452606084019251600f0b6020850152519160408085015282518091526020608085019301915b8181106115be575050500390f35b8251600f0b8452859450602093840193909201916001016115b0565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761161161301e565b60085460ff811615611621575080f35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001176008557f0f8eeedbc400fd6686703559f58d1e6143fdaed533f19a86c93d67a2fe4fb3318180a180f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405160128152f35b50346102c95760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761173b6129d2565b6117436129f5565b6044359173ffffffffffffffffffffffffffffffffffffffff811680855260026020526040852073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f2054907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82106117c0575b505061075a9350612ef9565b84821061186657801561183a57331561180e578560409161075a975260026020522073ffffffffffffffffffffffffffffffffffffffff33165f526020528360405f20910390555f806117b4565b6024867f94280d6200000000000000000000000000000000000000000000000000000000815280600452fd5b6024867fe602df0500000000000000000000000000000000000000000000000000000000815280600452fd5b60648686847ffb8f41b200000000000000000000000000000000000000000000000000000000835233600452602452604452fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060ff600854166040519015158152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600354604051908152f35b506101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107115761194b6129d2565b906024357fffffffff00000000000000000000000000000000000000000000000000000000811691828203610711576044359273ffffffffffffffffffffffffffffffffffffffff84169283850361071157606435936084359660c43580600f0b810361071157610104359060e43582151583036107115760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00541461254d5760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005560ff600854166124ef5780159081156124e4575b501561248657611a4390611a388b8a612cec565b9060a4358c8b612d3d565b9b859d9596949e9293915073ffffffffffffffffffffffffffffffffffffffff611a6c82612aa2565b90549060031b1c169973ffffffffffffffffffffffffffffffffffffffff611a9385612aa2565b90549060031b1c169b155f146122d95750878a73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001698898214806122cf575b156121f857505050863b15610711575f8e976004604051809a81937fd0e30db00000000000000000000000000000000000000000000000000000000083525af19687156121ed578f908f908f996121d6575b50611b70611b92915b611b6b611b4e86612ae7565b90549060031b1c611b5e87612aff565b90549060031b1c90612b81565b612b81565b91611b8d611b7d87612ae7565b90549060031b1c611b5e88612aff565b612b47565b908d987f000000000000000000000000000000000000000000000000000000000000000090811515806121cd575b612144575b5050611c6391611c45611c06611c5a93611bf0611be188612aff565b90549060031b1c821015612bd8565b611bf987612aff565b90549060031b1c90612b47565b611c0f86612ae7565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b611c51611be187612aff565b611bf986612aff565b611c0f85612ae7565b8b82600f0b13156120e6578b84600f0b131561208857611cec93611cd482611cac611ca6611cac96611c97611ca697612eb9565b90549060031b1c600f0b613210565b91612eb9565b9091906fffffffffffffffffffffffffffffffff83549160031b928116831b921b1916179055565b611cdd84612eb9565b90549060031b1c600f0b613268565b80612049575b15611f835773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b15611f7f5787809160248d60405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af18015611f74579188918c93611f56575b5081809381925af13d15611f51573d67ffffffffffffffff8111611f245760405190611dd160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160183612a61565b81528760203d92013e5b15611ec6577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a0915b611e10818a612b47565b73ffffffffffffffffffffffffffffffffffffffff604051931683528a60208401528b604084015260608301526080820152a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015611e95575b50505061049d90604051938493846040919493926060820195825260208201520152565b8280809381938290611ebd575b3390f115611eb1578080611e71565b604051903d90823e3d90fd5b506108fc611ea2565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b611ddb565b611f639193508290612a61565b611f7057868a915f611d7d565b8680fd5b6040513d8a823e3d90fd5b8780fd5b506040517fa9059cbb0000000000000000000000000000000000000000000000000000000087528360045289602452602087604481808a5af1906001885114821615612028575b60405215611ffc577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a091611e06565b602486867f5274afe7000000000000000000000000000000000000000000000000000000008252600452fd5b90600181151661204057863b15153d15161690611fca565b503d87823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168614611cf2565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a20616d6f756e744f7574203c3d20300000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4d53523a20616d6f756e74496e203c3d2030000000000000000000000000006044820152fd5b611c5a929a50611c06620f4240612162611c639694611c4594612b8e565b049b8c612175575b93505050918f611bc5565b6121c88d6121946121858a612aff565b91909283548360031b1c612b81565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b61216a565b50801515611bc0565b6121e3919e505f90612a61565b5f9c611b70611b39565b6040513d5f823e3d90fd5b60209293949596979899505f80809360649373ffffffffffffffffffffffffffffffffffffffff604051987f23b872dd00000000000000000000000000000000000000000000000000000000855216600452306024526044525af19060015f51148216156122ae575b6040525f6060521561228257908b95949392918e611b928f611b7090611b42565b887f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9060018115166122c6578a3b15153d15161690612261565b503d5f823e3d90fd5b5080341015611ae7565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529197506020826024818e5afa9182156121ed578f905f9361244e575b5060249291612352916040519160208301528d8583015260448201526044815261234c606482612a61565b8a6131ed565b5060208b604051938480927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa80156121ed578f925f91612415575b50906123a291612b47565b036123b7578b958e611b928f611b7090611b42565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e742066756e647300000000000000000000000000006044820152fd5b919250506020813d602011612446575b8161243260209383612a61565b8101031261071157518e91906123a2612397565b3d9150612425565b9250506020823d60201161247e575b8161246a60209383612a61565b81010312610711579051908e612352612321565b3d915061245d565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f737761703a20646561646c696e652065786365656465640000000000000000006044820152fd5b90504211155f611a24565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346107115760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107115761261a6129d2565b6024359033156126bc5773ffffffffffffffffffffffffffffffffffffffff1690811561269057335f52600260205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576040515f6004548060011c90600181168015612827575b6020831081146127fa578285529081156127b8575060011461275a575b61049d8361094281850382612a61565b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b80821061279e5750909150810160200161094261274a565b919260018160209254838588010152019101909291612786565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b84019091019150610942905061274a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f169161272d565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157604051806020600d54918281520190600d5f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5905f5b8181106128ad5761049d856108ab81870382612a61565b8254845260209093019260019283019201612896565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157600c548082526020820190600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7905f5b81811061293b5761049d856108ab81870382612a61565b8254845260209093019260019283019201612924565b60206040818301928281528451809452019201905f5b8181106129745750505090565b8251845260209384019390920191600101612967565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6040810190811067ffffffffffffffff821117612a3457604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612a3457604052565b600b54811015612aba57600b5f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600f54811015612aba57600f5f5260205f2001905f90565b600c54811015612aba57600c5f5260205f2001905f90565b600d54811015612aba57600d5f5260205f2001905f90565b600654811015612aba5760065f5260205f2001905f90565b91908203918211612b5457565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b91908201809211612b5457565b81810292918115918404141715612b5457565b8115612bab570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b15612bdf57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f62616c616e6365203c2070726f746f636f6c206f7765640000000000000000006044820152fd5b60405190600a548083528260208101600a5f5260205f20925f905b806001830110612ca557612c7e945491818110612c91575b10612c80575b500383612a61565b565b60801d600f0b81526020015f612c76565b92602060019184600f0b8152019301612c70565b9160029193506040600191865480600f0b825260801d600f0b6020820152019401920185929391612c58565b90816060910312610711578051916040602083015192015190565b9190826103e8026103e881048403612b545781612d0891612b81565b90815f52600760205260405f2054938415612d2257505050565b612d2d929450613143565b915f5260076020528160405f2055565b92949394919091612d69612d518784613160565b9050612d5c86612b17565b90549060031b1c906132be565b905f82600f0b1315612e5b57612d8f918486600954600f0b612d89612c3d565b90613557565b919092612dae8394612da18197612b17565b90549060031b1c90613182565b925f92849880612e3a575b508811612ddc57612dcc612dd992612b17565b90549060031b1c906134e8565b94565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f737761703a207472616e736665722065786365656473206d61780000000000006044820152fd5b909850612e49919350846131b4565b91612e548385612b81565b975f612db9565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761703a20696e70757420746f6f20736d616c6c20616674657220666565006044820152fd5b90600a54821015612aba57600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b73ffffffffffffffffffffffffffffffffffffffff16908115612ff25773ffffffffffffffffffffffffffffffffffffffff16918215612fc657815f52600160205260405f2054818110612f9457817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f52600184520360405f2055845f526001825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff5f5416330361303e57565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b600654156130855761307b90612b2f565b90549060031b1c90565b505f90565b905f8091602081519101845af48080613130575b156130b05750506130ad6132a5565b90565b156130f75773ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b3d15613108576040513d5f823e3d90fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b503d15158061309e5750813b151561309e565b90611b5e6131536130ad93612b2f565b90549060031b1c91612b2f565b9190801561317c576131756130ad91846131b4565b8093612b47565b505f9190565b61319661318f83836134e8565b92836132be565b90600f0b90600f0b126131a65790565b60018101809111612b545790565b9080156131e7576131c491612b8e565b620f4240810190818111612b5457620f423f01908111612b5457620f4240900490565b50505f90565b905f809160208151910182855af1808061313057156130b05750506130ad6132a5565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061324e575b1561071157600f0b90565b506f7fffffffffffffffffffffffffffffff811315613243565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061324e571561071157600f0b90565b604051903d82523d5f602084013e60203d830101604052565b81156107115777ffffffffffffffffffffffffffffffffffffffffffffffff811161333657906132f09160401b612ba1565b6fffffffffffffffffffffffffffffffff8111610711576fffffffffffffffffffffffffffffffff166f7fffffffffffffffffffffffffffffff811161071157600f0b90565b60c09181831c80936401000000008210156134db575b600282620100006133d99410156134cf575b6101008110156134c3575b60108110156134b7575b60048110156134ac575b10156134a4575b8360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b612ba1565b926fffffffffffffffffffffffffffffffff8411610711578160801c8402906fffffffffffffffffffffffffffffffff8316850290809460401b9082821061347a575b5003928160801b91828510613451575b60801c036134465761343e9203612ba1565b905b016132f0565b505050600190613440565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019061342c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f61341c565b600101613384565b91810191811c61337d565b6004928301921c613373565b6008928301921c613369565b6010928301921c61335e565b505060e082811c9061334c565b81156131e757600f0b5f8112610711576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116107115760401b81198111610711570190565b8051821015612aba5760209160051b010190565b955f959194939092849290875b875189101561358f5761358760019161357d8b8b613543565b51600f0b90613210565b980197613564565b909294975097909294975f81600f0b13156139cd576135ad91613a2b565b9384600f0b80156107115770010000000000000000000000000000000005917fffffffffffffffffffffffffffffffff80000000000000000000000000000000831215806139b3575b15610711576136326136379161362d61361595600f0b9586928b613543565b51600f0b613623898c613543565b51600f0b90613268565b613a2b565b613a6b565b9280600f0b905f8213613823575b50509061365191613a2b565b80600f0b68200000000000000000811361379f577fffffffffffffffffffffffffffffffff800000000000000000000000000000001461071157613699905f03600f0b613a6b565b600f0b6801000000000000000003907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082121580613785575b15610711576136e491600f0b90613a2b565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061376b575b1561071157600f0b925f84131561375757505061373b61374192613ac8565b90613a2b565b905f82600f0b131561374f57565b5f9250829150565b9091506137649250613543565b51600f0b90565b506f7fffffffffffffffffffffffffffffff81131561371c565b506f7fffffffffffffffffffffffffffffff8213156136d2565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4c4d53523a20612f6220746f6f206c617267652028776f756c64206f7665726660448201527f6c6f7720657870290000000000000000000000000000000000000000000000006064820152fd5b84600f9a939a0b8092131561392f5781156107115760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613915575b1561071157600f0b5f8113156138b75761388561388b91613ac8565b86613a2b565b9780600f0b89600f0b125f146138ab57505061365190875b90915f613645565b613651929198506138a3565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4d53523a20726174696f3c3d300000000000000000000000000000000000006044820152fd5b506f7fffffffffffffffffffffffffffffff811315613869565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4c4d53523a206c696d69745072696365203c3d2063757272656e74207072696360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152fd5b506f7fffffffffffffffffffffffffffffff8313156135f6565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061324e571561071157600f0b90565b600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000811261308557700171547652b82fe1777d0ffda0d23a7d126130ad910260801d600f0b613bf5565b600f0b5f811315610711575f908068010000000000000000821215613be8575b806401000000006002921215613bdc575b62010000811215613bd0575b610100811215613bc4575b6010811215613bb8575b6004811215613bad575b1215613ba3575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f8313613b8757506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d90565b8002908160ff1c9182607f011c918302019160011d9190613b62565b9060010190613b2b565b92810192811d613b24565b6004938401931d613b1a565b6008938401931d613b10565b6010938401931d613b05565b6020938401931d613af9565b506040915080821d613ae8565b80600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000081126131e7576f80000000000000000000000000000000915f6780000000000000008216600f0b136147f1575b5f6740000000000000008216600f0b136147d4575b5f6720000000000000008216600f0b136147b7575b5f6710000000000000008216600f0b1361479a575b5f6708000000000000008216600f0b1361477d575b5f6704000000000000008216600f0b13614760575b5f6702000000000000008216600f0b13614743575b5f6701000000000000008216600f0b13614726575b5f66800000000000008216600f0b13614709575b5f66400000000000008216600f0b136146ec575b5f66200000000000008216600f0b136146cf575b5f66100000000000008216600f0b136146b2575b5f66080000000000008216600f0b13614695575b5f66040000000000008216600f0b13614678575b5f66020000000000008216600f0b1361465b575b5f66010000000000008216600f0b1361463e575b5f658000000000008216600f0b13614621575b5f654000000000008216600f0b13614604575b5f652000000000008216600f0b136145e7575b5f651000000000008216600f0b136145ca575b5f650800000000008216600f0b136145ad575b5f650400000000008216600f0b13614590575b5f650200000000008216600f0b13614573575b5f650100000000008216600f0b13614556575b5f6480000000008216600f0b13614539575b5f6440000000008216600f0b1361451c575b5f6420000000008216600f0b136144ff575b5f6410000000008216600f0b136144e2575b5f6408000000008216600f0b136144c5575b5f6404000000008216600f0b136144a8575b5f6402000000008216600f0b1361448b575b5f6401000000008216600f0b1361446e575b5f63800000008216600f0b13614451575b5f63400000008216600f0b13614434575b5f63200000008216600f0b13614417575b5f63100000008216600f0b136143fa575b5f63080000008216600f0b136143dd575b5f63040000008216600f0b136143c0575b5f63020000008216600f0b136143a3575b5f63010000008216600f0b13614386575b5f628000008216600f0b13614369575b5f624000008216600f0b1361434c575b5f622000008216600f0b1361432f575b5f621000008216600f0b13614312575b5f620800008216600f0b136142f5575b5f620400008216600f0b136142d8575b5f620200008216600f0b136142bb575b5f620100008216600f0b1361429e575b5f6180008216600f0b13614281575b5f6140008216600f0b13614264575b5f6120008216600f0b13614247575b5f6110008216600f0b1361422a575b5f6108008216600f0b1361420d575b5f6104008216600f0b136141f0575b5f6102008216600f0b136141d3575b5f6101008216600f0b136141b6575b5f60808216600f0b13614199575b5f60408216600f0b1361417c575b5f60208216600f0b1361415f575b5f60108216600f0b13614142575b5f60088216600f0b13614125575b5f60048216600f0b13614108575b5f60028216600f0b136140ea575b60015f9116600f0b136140cd575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161071157600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c906140a3565b7001000000000000000162e42fefa39ef35890920260801c91614095565b9170010000000000000002c5c85fdf473de6b20260801c91614087565b91700100000000000000058b90bfbe8e7bcd6d0260801c91614079565b917001000000000000000b17217f7d1cf79afa0260801c9161406b565b91700100000000000000162e42fefa39ef366f0260801c9161405d565b917001000000000000002c5c85fdf473de6eca0260801c9161404f565b9170010000000000000058b90bfbe8e7bce5440260801c91614041565b91700100000000000000b17217f7d1cf79e9490260801c91614033565b9170010000000000000162e42fefa39ef44d910260801c91614024565b91700100000000000002c5c85fdf473dea871f0260801c91614015565b917001000000000000058b90bfbe8e7bdcbe2e0260801c91614006565b9170010000000000000b17217f7d1cf7d83c1a0260801c91613ff7565b917001000000000000162e42fefa39f02b772c0260801c91613fe8565b9170010000000000002c5c85fdf473e242ea380260801c91613fd9565b91700100000000000058b90bfbe8e7cc35c3f00260801c91613fca565b917001000000000000b17217f7d1cfb72b45e10260801c91613fbb565b91700100000000000162e42fefa39fe95583c20260801c91613fab565b917001000000000002c5c85fdf4741bea6e77e0260801c91613f9b565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c91613f8b565b91700100000000000b17217f7d1d351a389d400260801c91613f7b565b9170010000000000162e42fefa3ae53369388c0260801c91613f6b565b91700100000000002c5c85fdf477b662b269450260801c91613f5b565b917001000000000058b90bfbe8f71cb4e4b33d0260801c91613f4b565b9170010000000000b17217f7d20cf927c8e94c0260801c91613f3b565b917001000000000162e42fefa494f1478fde050260801c91613f2a565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c91613f19565b91700100000000058b90bfbe9ddbac5e109cce0260801c91613f08565b917001000000000b17217f7d5a7716bba4a9ae0260801c91613ef7565b91700100000000162e42fefb2fed257559bdaa0260801c91613ee6565b917001000000002c5c85fdf84bd62ae30a74cc0260801c91613ed5565b9170010000000058b90bfbf8479bd5a81b51ad0260801c91613ec4565b91700100000000b17217f80f4ef5aadda455540260801c91613eb3565b9170010000000162e42ff0999ce3541b9fffcf0260801c91613ea1565b91700100000002c5c85fe31f35a6a30da1be500260801c91613e8f565b917001000000058b90bfcdee5acd3c1cedc8230260801c91613e7d565b9170010000000b17217fba9c739aa5819f44f90260801c91613e6b565b917001000000162e42fff037df38aa2b219f060260801c91613e59565b9170010000002c5c8601cc6b9e94213c72737a0260801c91613e47565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91613e35565b917001000000b1721835514b86e6d96efd1bfe0260801c91613e23565b91700100000162e430e5a18f6119e3c02282a50260801c91613e10565b917001000002c5c863b73f016468f6bac5ca2b0260801c91613dfd565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91613dea565b91700100000b1721bcfc99d9f890ea069117630260801c91613dd7565b9170010000162e43f4f831060e02d839a9d16d0260801c91613dc4565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c91613db1565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c91613d9e565b9170010000b17255775c040618bf4a4ade83fc0260801c91613d8b565b917001000162e525ee054754457d59952920260260801c91613d77565b9170010002c5cc37da9491d0985c348c68e7b30260801c91613d63565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91613d4f565b917001000b175effdc76ba38e31671ca9397250260801c91613d3b565b91700100162f3904051fa128bca9c55c31e5df0260801c91613d27565b917001002c605e2e8cec506d21bfc89a23a00f0260801c91613d13565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c91613cff565b91700100b1afa5abcbed6129ab13ec11dc95430260801c91613ceb565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c91613cd6565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c91613cc1565b917001059b0d31585743ae7c548eb68ca417fd0260801c91613cac565b9170010b5586cf9890f6298b92b71842a983630260801c91613c97565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c91613c82565b917001306fe0a31b7152de8d5a46305c85edec0260801c91613c6d565b6fb504f333f9de6484597d89b3754abe9f9250613c5856fea26469706673582212201f3500b860bc62657692a3183901310b4a9d587e54c35da242d2bb0118485b5364736f6c634300081e0033a2646970667358221220c1225d048f8eb2be410725b5e006860923c6057c760a4f91fa9ee56884d8281264736f6c634300081e003360808060405234601557615df4908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c636ae73ce314610024575f80fd5b34610373576101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103735760043573ffffffffffffffffffffffffffffffffffffffff81168091036103735760243567ffffffffffffffff8111610373576100959036906004016103f8565b9060443567ffffffffffffffff8111610373576100b69036906004016103f8565b6064359067ffffffffffffffff82116103735736602383011215610373578160040135916100eb6100e684610468565b6103b4565b9060208285815201906024829560051b8201019036821161037357602401915b8183106103875750505060843580600f0b8091036103735760a43567ffffffffffffffff81116103735736602382011215610373578060040135946101526100e687610468565b91602083888152016024819860051b8301019136831161037357602401905b82821061037757505050610104359173ffffffffffffffffffffffffffffffffffffffff831680930361037357610124359373ffffffffffffffffffffffffffffffffffffffff851680950361037357610144359573ffffffffffffffffffffffffffffffffffffffff871680970361037357610164359773ffffffffffffffffffffffffffffffffffffffff8916809903610373576040519b8c9b8c926158fb8094019e8f9081109067ffffffffffffffff1017610346576102528f92938f94602096610260966104c49039845261018086850152610180840190610480565b916040818403910152610480565b8c810360608e01529151808352910193905f5b81811061031a575050509060209160808b015289830360a08b015251918281520195905f5b81811061030457505050918596916101609360c43560c085015260e43560e0850152610100840152610120830152610140820152015203905ff080156102f95760209073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b6040513d5f823e3d90fd5b8251885260209788019790920191600101610298565b825173ffffffffffffffffffffffffffffffffffffffff16865260209586019590920191600101610273565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f80fd5b8135815260209182019101610171565b823573ffffffffffffffffffffffffffffffffffffffff811681036103735781526020928301920161010b565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff82111761034657604052565b81601f820112156103735780359067ffffffffffffffff82116103465761044660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116016103b4565b928284526020838301011161037357815f926020809301838601378301015290565b67ffffffffffffffff81116103465760051b60200190565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f858286010152011601019056fe610140604052346106ee576158fb8038038061001a81610a6a565b9283398101610180828203126106ee5761003382610a8f565b60208301516001600160401b0381116106ee5782610052918501610aa3565b60408401519091906001600160401b0381116106ee5783610074918601610aa3565b60608501519094906001600160401b0381116106ee5781019284601f850112156106ee578351956100ac6100a788610af4565b610a6a565b9460208689815201906020829960051b820101908882116106ee57602001915b818310610a4a57505050608083015180600f0b81036106ee5760a08401516001600160401b0381116106ee5784019680601f890112156106ee5787516101146100a782610af4565b986020808b848152019260051b8201019283116106ee57602001905b828210610a3a5750505060c08401519760e0850151926101536101008701610a8f565b610120870151979095906001600160a01b03891689036106ee57610140880151976001600160a01b03891689036106ee576101600151986001600160a01b038a168a036106ee5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00556080526001600160a01b03168015610a27575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a38051906001600160401b0382116106335760045490600182811c92168015610a1d575b60208310146109405781601f8493116109cf575b50602090601f8311600114610969575f9261095e575b50508160011b915f199060031b1c1916176004555b8051906001600160401b0382116106335760055490600182811c92168015610954575b60208310146109405781601f849311610904575b50602090601f831160011461089e575f92610893575b50508160011b915f199060031b1c1916176005555b60018751111561084e578651906001600160401b0382116106335768010000000000000000821161063357600b5482600b55808310610814575b50600b5f5260205f205f5b8381106107f7575050505060a05285518551036107be5761033a8651610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600654836006558084106107a2575b500160065f5260205f205f5b83811061078e57505050505f5b86518110156104185761271061039c8289610b49565b5110156103e1576103ad8188610b49565b51906006548110156103cd5760019160065f528160205f20015501610386565b634e487b7160e01b5f52603260045260245ffd5b60405162461bcd60e51b815260206004820152600f60248201526e506f6f6c3a20666565203e3d20312560881b6044820152606490fd5b50866127108110156107495760c05262061a8081101561070457801580156106f2575b156106ee5760e052601080546001600160a01b0319166001600160a01b039290921691909117905561012052610100528051905f5b8281106106a7578261048181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600d5483600d5580841061068b575b5001600d5f5260205f205f5b83811061067757846104d181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600f5483600f5580841061065b575b5001600f5f5260205f205f5b8381106106475761052085610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600c5483600c55808410610617575b500190600c5f5260205f20915f5b82811061060357604051614d9d9081610b5e8239608051818181611b4a01528181611d9b015281816120ee015261264c015260a051818181610f130152610f7f015260c0518181816113480152611733015260e0518181816105ac01528181610c550152818161105d0152818161136e015281816114be0152611c2401526101005181818161031701526105f70152610120518181816108050152610a720152f35b600190602083519301928186015501610561565b61062d90600c5f5284845f209182019101610b0b565b83610553565b634e487b7160e01b5f52604160045260245ffd5b600190602084519401938184015501610510565b61067190600f5f5284845f209182019101610b0b565b84610504565b6001906020845194019381840155016104c0565b6106a190600d5f5284845f209182019101610b0b565b846104b4565b60018101908181116106da576001600160a01b03906106c69084610b49565b51165f52600e6020528060405f2055610470565b634e487b7160e01b5f52601160045260245ffd5b5f80fd5b506001600160a01b038216151561043b565b60405162461bcd60e51b815260206004820152601960248201527f506f6f6c3a2070726f746f636f6c20666565203e3d20343025000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601560248201527f506f6f6c3a20666c61736820666565203e3d20312500000000000000000000006044820152606490fd5b600190602084519401938184015501610379565b6107b89060065f5284845f209182019101610b0b565b5f61036d565b60405162461bcd60e51b81526020600482015260116024820152700a0deded87440cccacae640d8cadccee8d607b1b6044820152606490fd5b82516001600160a01b031681830155602090920191600101610319565b600b5f52610848907f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9908101908401610b0b565b5f61030e565b60405162461bcd60e51b815260206004820152601360248201527f506f6f6c3a206e656564203e31206173736574000000000000000000000000006044820152606490fd5b015190505f806102bf565b60055f9081528281209350601f198516905b8181106108ec57509084600195949392106108d4575b505050811b016005556102d4565b01515f1960f88460031b161c191690555f80806108c6565b929360206001819287860151815501950193016108b0565b6109309060055f5260205f20601f850160051c81019160208610610936575b601f0160051c0190610b0b565b5f6102a9565b9091508190610923565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610295565b015190505f8061025d565b60045f9081528281209350601f198516905b8181106109b7575090846001959493921061099f575b505050811b01600455610272565b01515f1960f88460031b161c191690555f8080610991565b9293602060018192878601518155019501930161097b565b60045f52610a17907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f850160051c8101916020861061093657601f0160051c0190610b0b565b5f610247565b91607f1691610233565b631e4fbdf760e01b5f525f60045260245ffd5b8151815260209182019101610130565b82516001600160a01b03811681036106ee578152602092830192016100cc565b6040519190601f01601f191682016001600160401b0381118382101761063357604052565b51906001600160a01b03821682036106ee57565b81601f820112156106ee578051906001600160401b03821161063357610ad2601f8301601f1916602001610a6a565b92828452602083830101116106ee57815f9260208093018386015e8301015290565b6001600160401b0381116106335760051b60200190565b818110610b16575050565b5f8155600101610b0b565b90610b2e6100a783610af4565b8281528092610b3f601f1991610af4565b0190602036910137565b80518210156103cd5760209160051b01019056fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c908163017504b61461295057508063017cf661146128be57806306fdde0314612775578063095ea7b3146126705780630d246214146126025780630eeee627146119a457806318160ddd146119685780631f3a0e411461192757806323b872dd14611790578063313ce5671461175657806331596a6a146116fd57806341c0e1b514611667578063476e44b614611519578063491e7998146113f15780635cffe9de146112115780636863f5bc146110805780636b4082d1146110275780636b7b911214610fa55780636bba3f2f14610f495780636d8d0ff314610e8e5780636ff97f1d14610d8e57806370a0823114610d2b578063715018a614610c8f57806379a68d5314610b6b5780638da5cb5b14610b1a5780638e499bcf14610ade578063939f5ea414610a965780639517606614610a2757806395d89b41146108cd5780639af1d35a1461082e578063a1af5b9a14610765578063a9059cbb14610715578063b3f1c93d14610648578063cb717f3a146104f3578063cce516b7146104a1578063d516b8c614610416578063dd62ed3e1461039d578063e4b50cb81461033b578063f0d1ae4f146102cc5763f2fde38b0361000f57346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610228612a5f565b6102306130bd565b16801561029d5773ffffffffffffffffffffffffffffffffffffffff8254827fffffffffffffffffffffffff00000000000000000000000000000000000000008216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b6024827f1e4fbdf700000000000000000000000000000000000000000000000000000000815280600452fd5b80fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff61038d600435612b2f565b90549060031b1c16604051908152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff60406103ec612a5f565b92826103f6612a82565b9416815260026020522091165f52602052602060405f2054604051908152f35b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043590602435916064359182600f0b83036102c95761049d61047985858561046f83826131e2565b9260443591612dca565b92505050604093919351938493846040919493926060820195825260208201520152565b0390f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff60105416604051908152f35b5060a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761049d61062b61061c61052f612a5f565b610537612a82565b60443573ffffffffffffffffffffffffffffffffffffffff61055882613109565b9281604051957f3dd3c8050000000000000000000000000000000000000000000000000000000060208801521660248601521660448401526064830152606435608483015260843560a483015260c48201527f000000000000000000000000000000000000000000000000000000000000000060e482015260e481526105e061010482612aee565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016613129565b60208082518301019101612d5e565b604080519384526020840192909252908201529081906060820190565b5060807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f161067e612a5f565b73ffffffffffffffffffffffffffffffffffffffff61069b612a82565b81604051937fb3f1c93d00000000000000000000000000000000000000000000000000000000602086015216602484015216604482015260443560648201526064356084820152608481526105e060a482612aee565b602081519181808201938492010103126107115760209051604051908152f35b5f80fd5b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761075a610750612a5f565b6024359033612f98565b602060405160018152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761082a73ffffffffffffffffffffffffffffffffffffffff60105416604051907f2a54db010000000000000000000000000000000000000000000000000000000060208301526024820152602481526107ee604482612aee565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016613129565b5080f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760405180916020600654928381520191600682527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f915b8181106108b75761049d856108ab81870382612aee565b604051918291826129de565b8254845260209093019260019283019201610894565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576040519080600554908160011c91600181168015610a1d575b6020841081146109f0578386529081156109ab575060011461094e575b61049d8461094281860382612aee565b60405191829182612a17565b600581527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0939250905b8082106109915750909150810160200161094282610932565b919260018160209254838588010152019101909291610978565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208087019190915292151560051b850190920192506109429150839050610932565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b92607f1692610915565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020610ad66024356004356131e2565b604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600b54604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b5060e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610b9e612a5f565b90610ba7612a82565b906044356064356084359182600f0b809303610c8b5760c435938415158095036102c95761049d61062b61061c89898989898973ffffffffffffffffffffffffffffffffffffffff610bf98383612d79565b9581604051987f8a3d858d0000000000000000000000000000000000000000000000000000000060208b01521660248901521660448701526064860152608485015260a484015260a43560c484015260e48301526101048201527f000000000000000000000000000000000000000000000000000000000000000061012482015261012481526107ee61014482612aee565b8380fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610cc66130bd565b8073ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604060209173ffffffffffffffffffffffffffffffffffffffff610d7d612a5f565b168152600183522054604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604051806020600b5491828152018091600b85527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db990855b818110610e625750505082610e0b910383612aee565b604051928392602084019060208552518091526040840192915b818110610e33575050500390f35b825173ffffffffffffffffffffffffffffffffffffffff16845285945060209384019390920191600101610e25565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610df5565b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f1610ec4612a5f565b73ffffffffffffffffffffffffffffffffffffffff604051917fc5eabfb900000000000000000000000000000000000000000000000000000000602084015216602482015260243560448201527f0000000000000000000000000000000000000000000000000000000000000000600f0b6064820152606481526105e0608482612aee565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f0000000000000000000000000000000000000000000000000000000000000000600f0b8152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610ff2612a5f565b610ffa6130bd565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000601054161760105580f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c95760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576110b8612a5f565b6110c0612a82565b90608435801515809103610c8b5773ffffffffffffffffffffffffffffffffffffffff6111429381604051947f6863f5bc0000000000000000000000000000000000000000000000000000000060208701521660248501521660448301526044356064830152606435608483015260a482015260a481526105e060c482612aee565b805181019060208181840193031261120d5760208101519067ffffffffffffffff8211610c8b57019181603f840112156102c95760208301519267ffffffffffffffff84116111e0578360051b91604051946111a16020850187612aee565b855260208080870194840101019384116102c95750604001905b8282106111d0576040518061049d86826129de565b81518152602091820191016111bb565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8280fd5b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043573ffffffffffffffffffffffffffffffffffffffff81168091036113e95761126a612a82565b60643567ffffffffffffffff8111610c8b5736602382011215610c8b5780600401359067ffffffffffffffff82116113ed5736602483830101116113ed576113c3937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f846107ee9560246101049673ffffffffffffffffffffffffffffffffffffffff6040519a8b987fe49cd4750000000000000000000000000000000000000000000000000000000060208b0152848a0152166044880152604435606488015260c060848801528260e48801520186860137888582860101527f000000000000000000000000000000000000000000000000000000000000000060a48501527f000000000000000000000000000000000000000000000000000000000000000060c48501520116810103017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612aee565b6020818051810103126113e957602001518015158091036113e957602090604051908152f35b5080fd5b8480fd5b50346102c95760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957611429612a5f565b611431612a82565b906064359160a4358015158091036113ed578373ffffffffffffffffffffffffffffffffffffffff6114656114f496613109565b9381604051967f8d01fa440000000000000000000000000000000000000000000000000000000060208901521660248701521660448501526044356064850152608484015260843560a484015260c483015260e48201527f000000000000000000000000000000000000000000000000000000000000000061010482015261010481526105e061012482612aee565b6040818051810103126113e95780604060208193015191015182519182526020820152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576060602060405161155881612aa5565b83815201526040519061156a82612aa5565b600954600f0b825260405191600a548084528360208101600a8552602085209285905b80600183011061163b576115b6945491818110611627575b10611616575b509493940383612aee565b6020810191825260405192839260208452606084019251600f0b6020850152519160408085015282518091526020608085019301915b8181106115fa575050500390f35b8251600f0b8452859450602093840193909201916001016115ec565b60801d600f0b81526020015f6115ab565b92602060019184600f0b81520193016115a5565b9160029193506040600191865480600f0b825260801d600f0b602082015201940192018692939161158d565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761169e6130bd565b60085460ff8116156116ae575080f35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001176008557f0f8eeedbc400fd6686703559f58d1e6143fdaed533f19a86c93d67a2fe4fb3318180a180f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405160128152f35b50346102c95760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576117c8612a5f565b6117d0612a82565b6044359173ffffffffffffffffffffffffffffffffffffffff811680855260026020526040852073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f2054907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821061184d575b505061075a9350612f98565b8482106118f35780156118c757331561189b578560409161075a975260026020522073ffffffffffffffffffffffffffffffffffffffff33165f526020528360405f20910390555f80611841565b6024867f94280d6200000000000000000000000000000000000000000000000000000000815280600452fd5b6024867fe602df0500000000000000000000000000000000000000000000000000000000815280600452fd5b60648686847ffb8f41b200000000000000000000000000000000000000000000000000000000835233600452602452604452fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060ff600854166040519015158152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600354604051908152f35b506101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576119d8612a5f565b906024357fffffffff00000000000000000000000000000000000000000000000000000000811691828203610711576044359273ffffffffffffffffffffffffffffffffffffffff84169283850361071157606435936084359660c43580600f0b810361071157610104359060e43582151583036107115760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146125da5760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005560ff6008541661257c578015908115612571575b501561251357611ad090611ac58b8a612d79565b9060a4358c8b612dca565b9b859d9596949e9293915073ffffffffffffffffffffffffffffffffffffffff611af982612b2f565b90549060031b1c169973ffffffffffffffffffffffffffffffffffffffff611b2085612b2f565b90549060031b1c169b155f146123665750878a73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016988982148061235c575b1561228557505050863b15610711575f8e976004604051809a81937fd0e30db00000000000000000000000000000000000000000000000000000000083525af196871561227a578f908f908f99612263575b50611bfd611c1f915b611bf8611bdb86612b74565b90549060031b1c611beb87612b8c565b90549060031b1c90612c0e565b612c0e565b91611c1a611c0a87612b74565b90549060031b1c611beb88612b8c565b612bd4565b908d987f0000000000000000000000000000000000000000000000000000000000000000908115158061225a575b6121d1575b5050611cf091611cd2611c93611ce793611c7d611c6e88612b8c565b90549060031b1c821015612c65565b611c8687612b8c565b90549060031b1c90612bd4565b611c9c86612b74565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b611cde611c6e87612b8c565b611c8686612b8c565b611c9c85612b74565b8b82600f0b1315612173578b84600f0b131561211557611d7993611d6182611d39611d33611d3996611d24611d3397612f37565b90549060031b1c600f0b61330c565b91612f37565b9091906fffffffffffffffffffffffffffffffff83549160031b928116831b921b1916179055565b611d6a84612f37565b90549060031b1c600f0b613349565b806120d6575b156120105773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b1561200c5787809160248d60405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af18015612001579188918c93611fe3575b5081809381925af13d15611fde573d67ffffffffffffffff8111611fb15760405190611e5e60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160183612aee565b81528760203d92013e5b15611f53577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a0915b611e9d818a612bd4565b73ffffffffffffffffffffffffffffffffffffffff604051931683528a60208401528b604084015260608301526080820152a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015611f22575b50505061049d90604051938493846040919493926060820195825260208201520152565b8280809381938290611f4a575b3390f115611f3e578080611efe565b604051903d90823e3d90fd5b506108fc611f2f565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b611e68565b611ff09193508290612aee565b611ffd57868a915f611e0a565b8680fd5b6040513d8a823e3d90fd5b8780fd5b506040517fa9059cbb0000000000000000000000000000000000000000000000000000000087528360045289602452602087604481808a5af19060018851148216156120b5575b60405215612089577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a091611e93565b602486867f5274afe7000000000000000000000000000000000000000000000000000000008252600452fd5b9060018115166120cd57863b15153d15161690612057565b503d87823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168614611d7f565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a20616d6f756e744f7574203c3d20300000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4d53523a20616d6f756e74496e203c3d2030000000000000000000000000006044820152fd5b611ce7929a50611c93620f42406121ef611cf09694611cd294612c1b565b049b8c612202575b93505050918f611c52565b6122558d6122216122128a612b8c565b91909283548360031b1c612c0e565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b6121f7565b50801515611c4d565b612270919e505f90612aee565b5f9c611bfd611bc6565b6040513d5f823e3d90fd5b60209293949596979899505f80809360649373ffffffffffffffffffffffffffffffffffffffff604051987f23b872dd00000000000000000000000000000000000000000000000000000000855216600452306024526044525af19060015f511482161561233b575b6040525f6060521561230f57908b95949392918e611c1f8f611bfd90611bcf565b887f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b906001811516612353578a3b15153d151616906122ee565b503d5f823e3d90fd5b5080341015611b74565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529197506020826024818e5afa91821561227a578f905f936124db575b50602492916123df916040519160208301528d858301526044820152604481526123d9606482612aee565b8a61328c565b5060208b604051938480927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa801561227a578f925f916124a2575b509061242f91612bd4565b03612444578b958e611c1f8f611bfd90611bcf565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e742066756e647300000000000000000000000000006044820152fd5b919250506020813d6020116124d3575b816124bf60209383612aee565b8101031261071157518e919061242f612424565b3d91506124b2565b9250506020823d60201161250b575b816124f760209383612aee565b81010312610711579051908e6123df6123ae565b3d91506124ea565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f737761703a20646561646c696e652065786365656465640000000000000000006044820152fd5b90504211155f611ab1565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346107115760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576126a7612a5f565b6024359033156127495773ffffffffffffffffffffffffffffffffffffffff1690811561271d57335f52600260205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576040515f6004548060011c906001811680156128b4575b6020831081146128875782855290811561284557506001146127e7575b61049d8361094281850382612aee565b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b80821061282b575090915081016020016109426127d7565b919260018160209254838588010152019101909291612813565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b8401909101915061094290506127d7565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916127ba565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157604051806020600d54918281520190600d5f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5905f5b81811061293a5761049d856108ab81870382612aee565b8254845260209093019260019283019201612923565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157600c548082526020820190600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7905f5b8181106129c85761049d856108ab81870382612aee565b82548452602090930192600192830192016129b1565b60206040818301928281528451809452019201905f5b818110612a015750505090565b82518452602093840193909201916001016129f4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6040810190811067ffffffffffffffff821117612ac157604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612ac157604052565b600b54811015612b4757600b5f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600f54811015612b4757600f5f5260205f2001905f90565b600c54811015612b4757600c5f5260205f2001905f90565b600d54811015612b4757600d5f5260205f2001905f90565b600654811015612b475760065f5260205f2001905f90565b91908203918211612be157565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b91908201809211612be157565b81810292918115918404141715612be157565b8115612c38570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b15612c6c57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f62616c616e6365203c2070726f746f636f6c206f7765640000000000000000006044820152fd5b90604051918281549182825260208201905f5260205f20925f905b806001830110612d3257612d0b945491818110612d1e575b10612d0d575b500383612aee565b565b60801d600f0b81526020015f612d03565b92602060019184600f0b8152019301612cfd565b9160029193506040600191865480600f0b825260801d600f0b6020820152019401920185929391612ce5565b90816060910312610711578051916040602083015192015190565b9190826103e8026103e881048403612be15781612d9591612c0e565b90815f52600760205260405f2054938415612daf57505050565b612dba9294506131e2565b915f5260076020528160405f2055565b92949394919091612df6612dde87846131ff565b9050612de986612ba4565b90549060031b1c9061339f565b905f82600f0b1315612ed957612e0d9184866135c9565b919092612e2c8394612e1f8197612ba4565b90549060031b1c90613221565b925f92849880612eb8575b508811612e5a57612e4a612e5792612ba4565b90549060031b1c90613aa0565b94565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f737761703a207472616e736665722065786365656473206d61780000000000006044820152fd5b909850612ec791935084613253565b91612ed28385612c0e565b975f612e37565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761703a20696e70757420746f6f20736d616c6c20616674657220666565006044820152fd5b90600a54821015612b4757600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b9190918054831015612b47575f52601060205f208360011c019260041b1690565b73ffffffffffffffffffffffffffffffffffffffff169081156130915773ffffffffffffffffffffffffffffffffffffffff1691821561306557815f52600160205260405f205481811061303357817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f52600184520360405f2055845f526001825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff5f541633036130dd57565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b600654156131245761311a90612bbc565b90549060031b1c90565b505f90565b905f8091602081519101845af480806131cf575b1561314f57505061314c613386565b90565b156131965773ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b3d156131a7576040513d5f823e3d90fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b503d15158061313d5750813b151561313d565b90611beb6131f261314c93612bbc565b90549060031b1c91612bbc565b9190801561321b5761321461314c9184613253565b8093612bd4565b505f9190565b61323561322e8383613aa0565b928361339f565b90600f0b90600f0b126132455790565b60018101809111612be15790565b9080156132865761326391612c1b565b620f4240810190818111612be157620f423f01908111612be157620f4240900490565b50505f90565b905f809160208151910182855af180806131cf571561314f57505061314c613386565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2575b1561071157600f0b90565b506f7fffffffffffffffffffffffffffffff8113156132e7565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b604051903d82523d5f602084013e60203d830101604052565b81156107115777ffffffffffffffffffffffffffffffffffffffffffffffff811161341757906133d19160401b612c2e565b6fffffffffffffffffffffffffffffffff8111610711576fffffffffffffffffffffffffffffffff166f7fffffffffffffffffffffffffffffff811161071157600f0b90565b60c09181831c80936401000000008210156135bc575b600282620100006134ba9410156135b0575b6101008110156135a4575b6010811015613598575b600481101561358d575b1015613585575b8360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b612c2e565b926fffffffffffffffffffffffffffffffff8411610711578160801c8402906fffffffffffffffffffffffffffffffff8316850290809460401b9082821061355b575b5003928160801b91828510613532575b60801c036135275761351f9203612c2e565b905b016133d1565b505050600190613521565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019061350d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f6134fd565b600101613465565b91810191811c61345e565b6004928301921c613454565b6008928301921c61344a565b6010928301921c61343f565b505060e082811c9061342d565b9193929093600a5480841080613a97575b15613a3957600203613a21576135f86135f3600a612cca565b613f94565b946136075f87600f0b13613afb565b613617600954600f0b9687613c82565b5f81600f0b1315613a0e5761362b81613b60565b6136678161366261363d89600a612f77565b90549060031b1c600f0b61365287600a612f77565b90549060031b1c600f0b90613349565b613c82565b9085600f0b5f81136137d8575b505f600f83900b126137ca57815b67028f5c28f5c28f5c90600f0b136137b55761369e9085613c82565b80600f0b915f83131561379f57678000000000000000831361379f57906136f961371a9493926136f36136ed671999999999999999946136e76136e18280613c82565b946132af565b90613c82565b91613bb0565b90613349565b916137048380613c82565b91600f0b1261377657906136f36136e792613bb0565b9384600f0b965f8813156137565761373383600a612f77565b90549060031b1c600f0b881215613756575f849698126137565750505050509190565b90919293945061377295965061376c600a612cca565b90613d08565b9091565b613799613793836136f361378d6136e79686613c82565b94613bb0565b91613bf6565b9061330c565b50505050909192613772949561376c600a612cca565b505050909192613772949561376c600a612cca565b6137d382613cc2565b613682565b6137e58380979397613c82565b680600000000000000006138096137fc8684613c82565b926137996136ed886132af565b9160401b60170b05907fffffffffffffffffffffffffffffffff80000000000000000000000000000000821215806139f4575b156107115761384e91600f0b9061330c565b9081600f0b121561396f576138847fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009188613c3c565b600f0b017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613955575b1561071157600f0b5f811261394757805b671999999999999999600f0b90600f0b1361393057806137996137936138ec836138fa95613c82565b926136f361378d8286613c82565b5f81600f0b13156139305761390f9084613c82565b9080600f0b82600f0b125f146139285750935b5f613674565b949050613922565b5094959293505050613772949561376c600a612cca565b61395081613cc2565b6138c3565b506f7fffffffffffffffffffffffffffffff8113156138b2565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4c4d53523a206c696d69745072696365203c3d2063757272656e74207072696360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152608490fd5b506f7fffffffffffffffffffffffffffffff82131561383c565b50909192613772949561376c600a612cca565b9091936137729394600954600f0b61376c600a612cca565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4c4d53523a2069647800000000000000000000000000000000000000000000006044820152fd5b508086106135da565b811561328657600f0b5f8112610711576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116107115760401b81198111610711570190565b15613b0257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b600f0b801561071157700100000000000000000000000000000000057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b680200000000000000009060401b60170b057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b680300000000000000009060401b60170b057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b90600f0b9081156107115760401b60170b057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081600f0b14610711575f03600f0b90565b8051821015612b475760209160051b010190565b95949093613d4c90939293613d69613d64613d36839a613d278a613f94565b906136625f83600f0b13613afb565b96613662613d4389613b60565b9586928b613cf4565b51600f0b613d5a898c613cf4565b51600f0b90613349565b613fc9565b9280600f0b5f8113613ed6575b505090613d8291613c82565b6820000000000000000081600f0b13613e5257613d64613da191613cc2565b600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613e38575b1561071157613df491613def91600f0b90613c82565b6132af565b925f84600f0b1315613e245750506136e7613e0e92614026565b905f82600f0b1315613e1c57565b5f9250829150565b909150613e319250613cf4565b51600f0b90565b506f7fffffffffffffffffffffffffffffff811315613dd9565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4c4d53523a20612f6220746f6f206c617267652028776f756c64206f7665726660448201527f6c6f7720657870290000000000000000000000000000000000000000000000006064820152fd5b84600f9a939a0b121561396f5783613eed91613c3c565b5f81600f0b1315613f3657613f04613f0a91614026565b86613c82565b9780600f0b89600f0b125f14613f2a575050613d8290875b90915f613d76565b613d8292919850613f22565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4d53523a20726174696f3c3d300000000000000000000000000000000000006044820152fd5b5f90815b8151831015613fc357613fbb600191613fb18585613cf4565b51600f0b9061330c565b920191613f98565b91505090565b600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000811261312457700171547652b82fe1777d0ffda0d23a7d1261314c910260801d600f0b614153565b600f0b5f811315610711575f908068010000000000000000821215614146575b80640100000000600292121561413a575b6201000081121561412e575b610100811215614122575b6010811215614116575b600481121561410b575b1215614101575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f83136140e557506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d90565b8002908160ff1c9182607f011c918302019160011d91906140c0565b9060010190614089565b92810192811d614082565b6004938401931d614078565b6008938401931d61406e565b6010938401931d614063565b6020938401931d614057565b506040915080821d614046565b80600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc000000000000000008112613286576f80000000000000000000000000000000915f6780000000000000008216600f0b13614d4f575b5f6740000000000000008216600f0b13614d32575b5f6720000000000000008216600f0b13614d15575b5f6710000000000000008216600f0b13614cf8575b5f6708000000000000008216600f0b13614cdb575b5f6704000000000000008216600f0b13614cbe575b5f6702000000000000008216600f0b13614ca1575b5f6701000000000000008216600f0b13614c84575b5f66800000000000008216600f0b13614c67575b5f66400000000000008216600f0b13614c4a575b5f66200000000000008216600f0b13614c2d575b5f66100000000000008216600f0b13614c10575b5f66080000000000008216600f0b13614bf3575b5f66040000000000008216600f0b13614bd6575b5f66020000000000008216600f0b13614bb9575b5f66010000000000008216600f0b13614b9c575b5f658000000000008216600f0b13614b7f575b5f654000000000008216600f0b13614b62575b5f652000000000008216600f0b13614b45575b5f651000000000008216600f0b13614b28575b5f650800000000008216600f0b13614b0b575b5f650400000000008216600f0b13614aee575b5f650200000000008216600f0b13614ad1575b5f650100000000008216600f0b13614ab4575b5f6480000000008216600f0b13614a97575b5f6440000000008216600f0b13614a7a575b5f6420000000008216600f0b13614a5d575b5f6410000000008216600f0b13614a40575b5f6408000000008216600f0b13614a23575b5f6404000000008216600f0b13614a06575b5f6402000000008216600f0b136149e9575b5f6401000000008216600f0b136149cc575b5f63800000008216600f0b136149af575b5f63400000008216600f0b13614992575b5f63200000008216600f0b13614975575b5f63100000008216600f0b13614958575b5f63080000008216600f0b1361493b575b5f63040000008216600f0b1361491e575b5f63020000008216600f0b13614901575b5f63010000008216600f0b136148e4575b5f628000008216600f0b136148c7575b5f624000008216600f0b136148aa575b5f622000008216600f0b1361488d575b5f621000008216600f0b13614870575b5f620800008216600f0b13614853575b5f620400008216600f0b13614836575b5f620200008216600f0b13614819575b5f620100008216600f0b136147fc575b5f6180008216600f0b136147df575b5f6140008216600f0b136147c2575b5f6120008216600f0b136147a5575b5f6110008216600f0b13614788575b5f6108008216600f0b1361476b575b5f6104008216600f0b1361474e575b5f6102008216600f0b13614731575b5f6101008216600f0b13614714575b5f60808216600f0b136146f7575b5f60408216600f0b136146da575b5f60208216600f0b136146bd575b5f60108216600f0b136146a0575b5f60088216600f0b13614683575b5f60048216600f0b13614666575b5f60028216600f0b13614648575b60015f9116600f0b1361462b575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161071157600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c90614601565b7001000000000000000162e42fefa39ef35890920260801c916145f3565b9170010000000000000002c5c85fdf473de6b20260801c916145e5565b91700100000000000000058b90bfbe8e7bcd6d0260801c916145d7565b917001000000000000000b17217f7d1cf79afa0260801c916145c9565b91700100000000000000162e42fefa39ef366f0260801c916145bb565b917001000000000000002c5c85fdf473de6eca0260801c916145ad565b9170010000000000000058b90bfbe8e7bce5440260801c9161459f565b91700100000000000000b17217f7d1cf79e9490260801c91614591565b9170010000000000000162e42fefa39ef44d910260801c91614582565b91700100000000000002c5c85fdf473dea871f0260801c91614573565b917001000000000000058b90bfbe8e7bdcbe2e0260801c91614564565b9170010000000000000b17217f7d1cf7d83c1a0260801c91614555565b917001000000000000162e42fefa39f02b772c0260801c91614546565b9170010000000000002c5c85fdf473e242ea380260801c91614537565b91700100000000000058b90bfbe8e7cc35c3f00260801c91614528565b917001000000000000b17217f7d1cfb72b45e10260801c91614519565b91700100000000000162e42fefa39fe95583c20260801c91614509565b917001000000000002c5c85fdf4741bea6e77e0260801c916144f9565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c916144e9565b91700100000000000b17217f7d1d351a389d400260801c916144d9565b9170010000000000162e42fefa3ae53369388c0260801c916144c9565b91700100000000002c5c85fdf477b662b269450260801c916144b9565b917001000000000058b90bfbe8f71cb4e4b33d0260801c916144a9565b9170010000000000b17217f7d20cf927c8e94c0260801c91614499565b917001000000000162e42fefa494f1478fde050260801c91614488565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c91614477565b91700100000000058b90bfbe9ddbac5e109cce0260801c91614466565b917001000000000b17217f7d5a7716bba4a9ae0260801c91614455565b91700100000000162e42fefb2fed257559bdaa0260801c91614444565b917001000000002c5c85fdf84bd62ae30a74cc0260801c91614433565b9170010000000058b90bfbf8479bd5a81b51ad0260801c91614422565b91700100000000b17217f80f4ef5aadda455540260801c91614411565b9170010000000162e42ff0999ce3541b9fffcf0260801c916143ff565b91700100000002c5c85fe31f35a6a30da1be500260801c916143ed565b917001000000058b90bfcdee5acd3c1cedc8230260801c916143db565b9170010000000b17217fba9c739aa5819f44f90260801c916143c9565b917001000000162e42fff037df38aa2b219f060260801c916143b7565b9170010000002c5c8601cc6b9e94213c72737a0260801c916143a5565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91614393565b917001000000b1721835514b86e6d96efd1bfe0260801c91614381565b91700100000162e430e5a18f6119e3c02282a50260801c9161436e565b917001000002c5c863b73f016468f6bac5ca2b0260801c9161435b565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91614348565b91700100000b1721bcfc99d9f890ea069117630260801c91614335565b9170010000162e43f4f831060e02d839a9d16d0260801c91614322565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c9161430f565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c916142fc565b9170010000b17255775c040618bf4a4ade83fc0260801c916142e9565b917001000162e525ee054754457d59952920260260801c916142d5565b9170010002c5cc37da9491d0985c348c68e7b30260801c916142c1565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c916142ad565b917001000b175effdc76ba38e31671ca9397250260801c91614299565b91700100162f3904051fa128bca9c55c31e5df0260801c91614285565b917001002c605e2e8cec506d21bfc89a23a00f0260801c91614271565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c9161425d565b91700100b1afa5abcbed6129ab13ec11dc95430260801c91614249565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c91614234565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c9161421f565b917001059b0d31585743ae7c548eb68ca417fd0260801c9161420a565b9170010b5586cf9890f6298b92b71842a983630260801c916141f5565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c916141e0565b917001306fe0a31b7152de8d5a46305c85edec0260801c916141cb565b6fb504f333f9de6484597d89b3754abe9f92506141b656fea2646970667358221220e520796464cdc8822a564990f4be3efe6802bdb608714268e1fd795e29751cac64736f6c634300081e0033a26469706673582212208c60e4603f5bb795ce42a004f14e2b9304016817ca3f9a9ca6829ba5d166afff64736f6c634300081e0033610140346103f557601f6136f238819003918201601f19168301916001600160401b038311848410176103f957808492610100946040528339810103126103f5576100498161040d565b60208201519091906001600160a01b03811681036103f55760408201516001600160a01b03811691908281036103f5576060840151906001600160a01b038216908183036103f55761009d6080870161040d565b936100aa60a0880161040d565b956100bc60e060c08a0151990161040d565b986001600160a01b03169182156103e2575f80546001600160a01b031981168517825560405194916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a360e0521561038f575060a05215610339576080526001600160a01b038116156102e357610100526001600160a01b038116156102785761012052620f42408110156102335760c052600180546001600160a01b0319166001600160a01b03929092169190911790556040516132d09081610422823960805181818161052101528181610f5d015281816117490152612683015260a0518181816104f80152818161101c01528181611720015261265a015260c0518181816104a2015281816116ca015281816122fe0152612604015260e0518181816104cf0152818161108a015281816116f70152612631015261010051818181610a7b01528181611bb40152612a760152610120518181816103310152818161155901526124970152f35b60405162461bcd60e51b815260206004820152601c60248201527f506c616e6e65723a2070726f746f636f6c20666565203e3d2070706d000000006044820152606490fd5b60405162461bcd60e51b815260206004820152603660248201527f506c616e6e65723a2062616c616e6365642070616972206465706c6f7965722060448201527f616464726573732063616e6e6f74206265207a65726f000000000000000000006064820152608490fd5b60405162461bcd60e51b815260206004820152602860248201527f506c616e6e65723a206465706c6f79657220616464726573732063616e6e6f74604482015267206265207a65726f60c01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602860248201527f506c616e6e65723a206d696e74496d706c20616464726573732063616e6e6f74604482015267206265207a65726f60c01b6064820152608490fd5b62461bcd60e51b815260206004820152602860248201527f506c616e6e65723a2073776170496d706c20616464726573732063616e6e6f74604482015267206265207a65726f60c01b6064820152608490fd5b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036103f55756fe60806040526004361015610011575f80fd5b5f3560e01c806314c870c014612ab157806360cf7d4a146123215780636b4082d1146122c95780636b7b911214612247578063715018a6146121ad5780638da5cb5b1461215d5780639a043832146120ec5780639f181b5e146120b1578063a4689b24146110d4578063a7753f09146110ae578063ac210cc714611040578063c405e44214610fd2578063cce516b714610f81578063f0d1ae4f14610f13578063f2fde38b14610e27578063f317672514610dbf578063f525cb6814610d84578063f63772fc146101515763f70a3a17146100ea575f80fd5b3461014d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5773ffffffffffffffffffffffffffffffffffffffff610136612afb565b165f526006602052602060405f2054604051908152f35b5f80fd5b3461014d576101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5760043567ffffffffffffffff811161014d576101a1903690600401612bae565b60243567ffffffffffffffff811161014d576101c1903690600401612bae565b9060443567ffffffffffffffff811161014d576101e2903690600401612c3a565b906101eb612cb5565b926101f4612d22565b906101fd612d31565b93610206612d54565b956101243567ffffffffffffffff811161014d5761022b909695963690600401612cc5565b61016435966102386131d5565b83519861025d6102478b612c22565b9a6102556040519c8d612b6d565b808c52612c22565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe060208c01910136823760843560011c985f5b87518110156102af57808b6102a88f93600194612e6f565b5201610290565b50908b918b6102bc6131d5565b8015908115610d79575b5015610d1b578751865103610c975773ffffffffffffffffffffffffffffffffffffffff16928315610c135773ffffffffffffffffffffffffffffffffffffffff16958615610b8f57600f0b985f8a1315610b31578251885103610aad5780610aa2575b15610a79577f00000000000000000000000000000000000000000000000000000000000000009198905b5f5473ffffffffffffffffffffffffffffffffffffffff169160015473ffffffffffffffffffffffffffffffffffffffff16906040519b8c947f6ae73ce3000000000000000000000000000000000000000000000000000000008652600486015260248501610180905261018485016103cd9089612f54565b8581037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc016044870152610401908d612f54565b8581037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc016064870152610435908c612f97565b9160848601528482037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0160a4860152519081815260200192905f5b818110610a60575050505f73ffffffffffffffffffffffffffffffffffffffff8460209694819460a43560c48401527f000000000000000000000000000000000000000000000000000000000000000060e4840152610104830152827f000000000000000000000000000000000000000000000000000000000000000016610124830152827f000000000000000000000000000000000000000000000000000000000000000016610144830152827f0000000000000000000000000000000000000000000000000000000000000000166101648301520393165af1968715610904575f97610a0f575b5061056487612fe0565b73ffffffffffffffffffffffffffffffffffffffff871691825f52600460205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790555f5b86518110156106d05773ffffffffffffffffffffffffffffffffffffffff6105db8289612e6f565b511690815f52600560205260ff60405f20541615610611575b6001915f52600660205261060b8a60405f20613050565b016105b3565b60035491680100000000000000008310156106a3578061066661063b856001809701600355612e15565b819391549073ffffffffffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b9055805f52600560205260405f20837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905591506105f4565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b509087837ff45e30d37dc5ef98e17708308b886213b8f485ea52d495067eed8d4977423f2261071589956107316107238d604051948594606086526060860190612f54565b908482036020860152612f54565b828103604084015288612f97565b0390a25f5b835181101561095b576107498187612e6f565b51610757575b600101610736565b73ffffffffffffffffffffffffffffffffffffffff6107768286612e6f565b51166107828288612e6f565b51604051907f23b872dd000000000000000000000000000000000000000000000000000000005f52856004528760245260445260205f60648180865af19060015f511482161561093a575b6040525f6060521561090f57506024602073ffffffffffffffffffffffffffffffffffffffff6107fd8488612e6f565b5116604051928380927f70a082310000000000000000000000000000000000000000000000000000000082528a60048301525afa908115610904575f916108d3575b5061084a8288612e6f565b511461074f5760846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f6665652d6f6e2d7472616e7366657220746f6b656e73206e6f7420737570706f60448201527f72746564000000000000000000000000000000000000000000000000000000006064820152fd5b90506020813d82116108fc575b816108ed60209383612b6d565b8101031261014d57518861083f565b3d91506108e0565b6040513d5f823e3d90fd5b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b90600181151661095257823b15153d151616906107cd565b503d5f823e3d90fd5b6040517f6d8d0ff300000000000000000000000000000000000000000000000000000000815260048101889052610144356024820152826020826044815f8b5af1918215610904575f926109db575b506040805173ffffffffffffffffffffffffffffffffffffffff9092168252602082019290925290819081015b0390f35b9091506020813d602011610a07575b816109f760209383612b6d565b8101031261014d575190826109aa565b3d91506109ea565b9096506020813d602011610a58575b81610a2b60209383612b6d565b8101031261014d575173ffffffffffffffffffffffffffffffffffffffff8116810361014d57958761055a565b3d9150610a1e565b825185528d955060209485019490920191600101610471565b7f0000000000000000000000000000000000000000000000000000000000000000919890610354565b50600287511461032a565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f506c616e6e65723a206665657320616e6420746f6b656e73206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f506c616e6e65723a206b61707061206d757374206265203e20300000000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f506c616e6e65723a2072656365697665722063616e6e6f74206265207a65726f60448201527f20616464726573730000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f506c616e6e65723a2070617965722063616e6e6f74206265207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f506c616e6e65723a20746f6b656e7320616e64206465706f73697473206c656e60448201527f677468206d69736d6174636800000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f506c616e6e65723a20646561646c696e652065786365656465640000000000006044820152fd5b90504211158b6102c6565b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d576020600254604051908152f35b3461014d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5773ffffffffffffffffffffffffffffffffffffffff610e0b612afb565b165f526004602052602060ff60405f2054166040519015158152f35b3461014d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5773ffffffffffffffffffffffffffffffffffffffff610e73612afb565b610e7b6131d5565b168015610ee75773ffffffffffffffffffffffffffffffffffffffff5f54827fffffffffffffffffffffffff00000000000000000000000000000000000000008216175f55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b7f1e4fbdf7000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461014d576109d76110c86110c236612d78565b9061312b565b60405191829182612b1e565b3461014d576101a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5760043567ffffffffffffffff811161014d57611124903690600401612bae565b60243567ffffffffffffffff811161014d57611144903690600401612bae565b9060443567ffffffffffffffff811161014d57611165903690600401612c3a565b9161116e612cb5565b916084359182600f0b80930361014d5760e43594851515860361014d57611193612d54565b94610124359073ffffffffffffffffffffffffffffffffffffffff821680920361014d576101443567ffffffffffffffff811161014d576111d8903690600401612cc5565b9061018435966111e66131d5565b81600f0b906801000000000000000082121561202d5768010000000000000000811215611fa9578551916001831115611f4b575f1215611eed578068010000000000000000017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580611ed3575b1561014d57600f0b9061126883613221565b927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908111611ea65761129c90613221565b600f0b0260401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580611e8c575b1561014d57600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580611e72575b1561014d57600f90810b92900b8112611e03575f821315611da55761132e91613239565b600f0b5f81138080611d93575b15611d35571561014d575f908068010000000000000000821215611d28575b806401000000006002921215611d1c575b62010000811215611d10575b610100811215611d04575b6010811215611cf8575b6004811215611ced575b1215611ce3575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f8313611cc757506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082600f0b1461014d5761142f915f03600f0b613239565b600f0b5f811315611c6957801561014d57700100000000000000000000000000000000057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580611c4f575b1561014d57600f0b945f861315611bf1576114999796976131d5565b8351986114a86102478b612c22565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe060208c01910136823760a43560011c985f5b87518110156114fa57808b6114f38f93600194612e6f565b52016114db565b50908b918b6115076131d5565b8015908115611be6575b5015610d1b578751865103610c975773ffffffffffffffffffffffffffffffffffffffff16928315610c13578615610b8f578251885103610aad5780611bdb575b15611bb2577f00000000000000000000000000000000000000000000000000000000000000009198905b5f5473ffffffffffffffffffffffffffffffffffffffff169160015473ffffffffffffffffffffffffffffffffffffffff16906040519b8c947f6ae73ce3000000000000000000000000000000000000000000000000000000008652600486015260248501610180905261018485016115f59089612f54565b8581037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc016044870152611629908d612f54565b8581037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01606487015261165d908c612f97565b9160848601528482037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0160a4860152519081815260200192905f5b818110611b99575050505f73ffffffffffffffffffffffffffffffffffffffff8460209694819460c43560c48401527f000000000000000000000000000000000000000000000000000000000000000060e4840152610104830152827f000000000000000000000000000000000000000000000000000000000000000016610124830152827f000000000000000000000000000000000000000000000000000000000000000016610144830152827f0000000000000000000000000000000000000000000000000000000000000000166101648301520393165af1968715610904575f97611b48575b5061178c87612fe0565b73ffffffffffffffffffffffffffffffffffffffff871691825f52600460205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790555f5b86518110156118a05773ffffffffffffffffffffffffffffffffffffffff6118038289612e6f565b511690815f52600560205260ff60405f20541615611839575b6001915f5260066020526118338a60405f20613050565b016117db565b60035491680100000000000000008310156106a3578061186361063b856001809701600355612e15565b9055805f52600560205260405f20837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055915061181c565b509087837ff45e30d37dc5ef98e17708308b886213b8f485ea52d495067eed8d4977423f2261071589956118e56107238d604051948594606086526060860190612f54565b0390a25f5b8351811015611ad0576118fd8187612e6f565b5161190b575b6001016118ea565b73ffffffffffffffffffffffffffffffffffffffff61192a8286612e6f565b51166119368288612e6f565b51604051907f23b872dd000000000000000000000000000000000000000000000000000000005f52856004528760245260445260205f60648180865af19060015f5114821615611ab8575b6040525f6060521561090f57506024602073ffffffffffffffffffffffffffffffffffffffff6119b18488612e6f565b5116604051928380927f70a082310000000000000000000000000000000000000000000000000000000082528a60048301525afa908115610904575f91611a87575b506119fe8288612e6f565b51146119035760846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f6665652d6f6e2d7472616e7366657220746f6b656e73206e6f7420737570706f60448201527f72746564000000000000000000000000000000000000000000000000000000006064820152fd5b90506020813d8211611ab0575b81611aa160209383612b6d565b8101031261014d5751886119f3565b3d9150611a94565b90600181151661095257823b15153d15161690611981565b6040517f6d8d0ff300000000000000000000000000000000000000000000000000000000815260048101889052610164356024820152826020826044815f8b5af1918215610904575f926109db57506040805173ffffffffffffffffffffffffffffffffffffffff9290921682526020820192909252f35b9096506020813d602011611b91575b81611b6460209383612b6d565b8101031261014d575173ffffffffffffffffffffffffffffffffffffffff8116810361014d579587611782565b3d9150611b57565b825185528d955060209485019490920191600101611699565b7f000000000000000000000000000000000000000000000000000000000000000091989061157c565b506002875114611552565b90504211158b611511565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4d53523a206b617070613c3d300000000000000000000000000000000000006044820152fd5b506f7fffffffffffffffffffffffffffffff81131561147d565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4c4d53523a20793c3d30000000000000000000000000000000000000000000006044820152fd5b8002908160ff1c9182607f011c918302019160011d91906113d4565b906001019061139d565b92810192811d611396565b6004938401931d61138c565b6008938401931d611382565b6010938401931d611377565b6020938401931d61136b565b506040915080821d61135a565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4c4d53523a20626164204520726174696f0000000000000000000000000000006044820152fd5b5068010000000000000000821261133b565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4c4d53523a207320746f6f206c6172676520666f72206e0000000000000000006044820152fd5b5f821315611e145761132e91613239565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4c4d53523a2062616420736c697070616765206f72206e0000000000000000006044820152fd5b506f7fffffffffffffffffffffffffffffff81131561130a565b506f7fffffffffffffffffffffffffffffff8113156112cd565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b506f7fffffffffffffffffffffffffffffff811315611256565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4c4d53523a20663d3000000000000000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4c4d53523a206e3e3120726571756972656400000000000000000000000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f506c616e6e65723a20746172676574536c697070616765206d7573742062652060448201527f3c2031202836342e3634290000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f506c616e6e65723a20747261646546726163206d757374206265203c2031202860448201527f36342e36342900000000000000000000000000000000000000000000000000006064820152fd5b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d576020600354604051908152f35b3461014d576121036120fd36612d78565b9061308b565b6040518091602082016020835281518091526020604084019201905f5b81811061212e575050500390f35b825173ffffffffffffffffffffffffffffffffffffffff16845285945060209384019390920191600101612120565b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d576121e36131d5565b5f73ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461014d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5773ffffffffffffffffffffffffffffffffffffffff612293612afb565b61229b6131d5565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060015416176001555f80f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461014d576101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5760043567ffffffffffffffff811161014d57612371903690600401612bae565b60243567ffffffffffffffff811161014d57612391903690600401612bae565b60443567ffffffffffffffff811161014d576123b1903690600401612c3a565b6123b9612cb5565b60843567ffffffffffffffff811161014d576123d9903690600401612cc5565b6123e1612d22565b946123ea612d31565b916123f3612d54565b906101243567ffffffffffffffff811161014d57612415903690600401612cc5565b93610164356124226131d5565b8015908115612aa6575b5015610d1b578651855103610c975773ffffffffffffffffffffffffffffffffffffffff16918215610c135773ffffffffffffffffffffffffffffffffffffffff16948515610b8f57600f0b975f891315610b31578151875103610aad5780612a9b575b15612a74577f0000000000000000000000000000000000000000000000000000000000000000905b73ffffffffffffffffffffffffffffffffffffffff5f54169073ffffffffffffffffffffffffffffffffffffffff600154166040519a8b937f6ae73ce30000000000000000000000000000000000000000000000000000000085526004850152610180602485015261259461256461253461018487018a612f54565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8782030160448801528d612f54565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8682030160648701528b612f97565b9060848501527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8482030160a4850152602080845192838152019301905f5b818110612a5b575050505f73ffffffffffffffffffffffffffffffffffffffff8460209694819460a43560c48401527f000000000000000000000000000000000000000000000000000000000000000060e4840152610104830152827f000000000000000000000000000000000000000000000000000000000000000016610124830152827f000000000000000000000000000000000000000000000000000000000000000016610144830152827f0000000000000000000000000000000000000000000000000000000000000000166101648301520393165af1968715610904575f97612a0a575b506126c687612fe0565b73ffffffffffffffffffffffffffffffffffffffff871691825f52600460205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790555f5b86518110156127da5773ffffffffffffffffffffffffffffffffffffffff61273d8289612e6f565b511690815f52600560205260ff60405f20541615612773575b6001915f52600660205261276d8a60405f20613050565b01612715565b60035491680100000000000000008310156106a3578061279d61063b856001809701600355612e15565b9055805f52600560205260405f20837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790559150612756565b509087837ff45e30d37dc5ef98e17708308b886213b8f485ea52d495067eed8d4977423f22610715899561281f6107238d604051948594606086526060860190612f54565b0390a25f5b835181101561095b576128378187612e6f565b51612845575b600101612824565b73ffffffffffffffffffffffffffffffffffffffff6128648286612e6f565b51166128708288612e6f565b51604051907f23b872dd000000000000000000000000000000000000000000000000000000005f52856004528760245260445260205f60648180865af19060015f51148216156129f2575b6040525f6060521561090f57506024602073ffffffffffffffffffffffffffffffffffffffff6128eb8488612e6f565b5116604051928380927f70a082310000000000000000000000000000000000000000000000000000000082528a60048301525afa908115610904575f916129c1575b506129388288612e6f565b511461283d5760846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f6665652d6f6e2d7472616e7366657220746f6b656e73206e6f7420737570706f60448201527f72746564000000000000000000000000000000000000000000000000000000006064820152fd5b90506020813d82116129ea575b816129db60209383612b6d565b8101031261014d57518861292d565b3d91506129ce565b90600181151661095257823b15153d151616906128bb565b9096506020813d602011612a53575b81612a2660209383612b6d565b8101031261014d575173ffffffffffffffffffffffffffffffffffffffff8116810361014d5795876126bc565b3d9150612a19565b825185528d9550602094850194909201916001016125d3565b7f0000000000000000000000000000000000000000000000000000000000000000906124b8565b506002865114612490565b90504211158a61242c565b3461014d5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d576109d76110c8612aee612afb565b6044359060243590612e83565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361014d57565b60206040818301928281528451809452019201905f5b818110612b415750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101612b34565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176106a357604052565b81601f8201121561014d5780359067ffffffffffffffff82116106a35760405192612c0160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601160185612b6d565b8284526020838301011161014d57815f926020809301838601378301015290565b67ffffffffffffffff81116106a35760051b60200190565b9080601f8301121561014d57813590612c5282612c22565b92612c606040519485612b6d565b82845260208085019360051b82010191821161014d57602001915b818310612c885750505090565b823573ffffffffffffffffffffffffffffffffffffffff8116810361014d57815260209283019201612c7b565b6064359081600f0b820361014d57565b9080601f8301121561014d578135612cdc81612c22565b92612cea6040519485612b6d565b81845260208085019260051b82010192831161014d57602001905b828210612d125750505090565b8135815260209182019101612d05565b60c43590811515820361014d57565b60e4359073ffffffffffffffffffffffffffffffffffffffff8216820361014d57565b610104359073ffffffffffffffffffffffffffffffffffffffff8216820361014d57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc604091011261014d576004359060243590565b90612db682612c22565b612dc36040519182612b6d565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0612df18294612c22565b0190602036910137565b91908201809211611ea657565b91908203918211611ea657565b600354811015612e2d5760035f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8054821015612e2d575f5260205f2001905f90565b8051821015612e2d5760209160051b010190565b73ffffffffffffffffffffffffffffffffffffffff90929192165f52600660205260405f2090815480841015612f3857808491612ec08484612dfb565b1115612f3057612ed09250612e08565b905b612edb82612dac565b925f5b838110612eec575050505090565b8073ffffffffffffffffffffffffffffffffffffffff612f17612f1160019486612dfb565b86612e5a565b90549060031b1c16612f298288612e6f565b5201612ede565b505090612ed2565b50505050604051612f4a602082612b6d565b5f81525f36813790565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b90602080835192838152019201905f5b818110612fb45750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101612fa7565b600254680100000000000000008110156106a35773ffffffffffffffffffffffffffffffffffffffff61301e82600161304c94016002556002612e5a565b919093169083549073ffffffffffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b9055565b8054680100000000000000008110156106a35761301e8161304c93600173ffffffffffffffffffffffffffffffffffffffff94018155612e5a565b919060035480841015613119578084916130a58484612dfb565b1115613112576130b59250612e08565b6130be81612dac565b905f5b8181106130cf575090925050565b8073ffffffffffffffffffffffffffffffffffffffff6130f96130f460019489612dfb565b612e15565b90549060031b1c1661310b8286612e6f565b52016130c1565b50506130b5565b50509050604051612f4a602082612b6d565b90600254808310156131c4578083916131448484612dfb565b11156131bc576131549250612e08565b905b61315f82612dac565b915f91600254925b828110613175575050505090565b61317f8183612dfb565b9084821015612e2d5773ffffffffffffffffffffffffffffffffffffffff60019260025f5260205f200154166131b58288612e6f565b5201613167565b505090613156565b505050604051612f4a602082612b6d565b73ffffffffffffffffffffffffffffffffffffffff5f541633036131f557565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b677fffffffffffffff811161014d5760401b600f0b90565b90600f0b90811561014d5760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613280575b1561014d57600f0b90565b506f7fffffffffffffffffffffffffffffff81131561327556fea2646970667358221220c43e3b538be70614df138fb93465096e6d629b1716664b5620affbf747d33b3e64736f6c634300081e003360c03461009a57601f612fd338819003918201601f19168301916001600160401b0383118484101761009e57808492604094855283398101031261009a578051906001600160a01b038216820361009a5760200151906001600160a01b038216820361009a5760805260a052604051612f2090816100b3823960805181610311015260a0518181816106c401528181610e57015261189f0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c9081630ab75fef14611968575080630db4cdda1461171c5780633a06daa2146111d357806344e48a9c14610f6157806397c6481214610cd4578063ad84489314610bf5578063b9c0d20414610888578063bfb5cdc51461058b578063c63a9743146100d95763c757221b1461008a575f80fd5b346100d55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d55760206100cb6100c6611a3b565b611e69565b6040519015158152f35b5f80fd5b346100d55760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d557610110611a3b565b6024356044356064359283600f0b8094036100d55773ffffffffffffffffffffffffffffffffffffffff16916040517f476e44b60000000000000000000000000000000000000000000000000000000081525f81600481875afa80156103a1576020915f91610569575b500180515180831080610560575b15610502575f8613156104a45715610446576040517f017cf6610000000000000000000000000000000000000000000000000000000081525f81600481885afa9081156103a1575f91610424575b50604051907f6bba3f2f000000000000000000000000000000000000000000000000000000008252602082600481895afa9182156103a1575f926103e3575b5060206044935196604051948580927f939f5ea40000000000000000000000000000000000000000000000000000000082528860048301528960248301525afa9283156103a1575f936103ac575b50906060956102ba6102f293604051998a9889987fbf05a0a6000000000000000000000000000000000000000000000000000000008a5260048a01526024890152604488015260e0606488015260e4870190611ad6565b91600f0b60848601527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8583030160a4860152611d44565b9060c4830152038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156103a1575f905f925f9161036a575b5061036690604051938493846040919493926060820195825260208201520152565b0390f35b90506103669250610393915060603d60601161039a575b61038b8183611b09565b810190611d29565b9092610344565b503d610381565b6040513d5f823e3d90fd5b919092506020823d6020116103db575b816103c960209383611b09565b810103126100d5579051916060610263565b3d91506103bc565b9291506020833d60201161041c575b816103ff60209383611b09565b810103126100d5576020610414604494611b77565b929350610215565b3d91506103f2565b61044091503d805f833e6104388183611b09565b810190611c6e565b866101d6565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f73776170546f4c696d69743a20706f6f6c20756e696e697469616c697a6564006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f73776170546f4c696d69743a206c696d6974203c3d20300000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f73776170546f4c696d69743a20696478000000000000000000000000000000006044820152fd5b50808410610188565b61058591503d805f833e61057d8183611b09565b810190611b9d565b8661017a565b346100d55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d55773ffffffffffffffffffffffffffffffffffffffff6105d7611a3b565b166040517f476e44b60000000000000000000000000000000000000000000000000000000081525f81600481855afa80156103a1576020915f9161086e575b500151519061062482611dcf565b915f5b81811061075a576040517f18160ddd0000000000000000000000000000000000000000000000000000000081528490602081600481885afa9081156103a1575f91610726575b506106ab915f9160405193849283927fcdc2468b00000000000000000000000000000000000000000000000000000000845260243560048501611e4a565b038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156103a157610366915f9161070c575b50604051918291602083526020830190611ad6565b61072091503d805f833e6104388183611b09565b826106f7565b90506020813d602011610752575b8161074160209383611b09565b810103126100d557516106ab61066d565b3d9150610734565b604051907fe4b50cb8000000000000000000000000000000000000000000000000000000008252806004830152602082602481875afa9182156103a15773ffffffffffffffffffffffffffffffffffffffff926020915f91610841575b506024604051809581937f70a08231000000000000000000000000000000000000000000000000000000008352896004840152165afa80156103a1575f9061080f575b600192506108088287611ce8565b5201610627565b506020823d8211610839575b8161082860209383611b09565b810103126100d557600191516107fa565b3d915061081b565b6108619150823d8111610867575b6108598183611b09565b810190611e1e565b876107b7565b503d61084f565b61088291503d805f833e61057d8183611b09565b83610616565b346100d55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d5576108bf611a3b565b73ffffffffffffffffffffffffffffffffffffffff6024359116906040517f476e44b60000000000000000000000000000000000000000000000000000000081525f81600481865afa80156103a1576020915f91610bdb575b50018051518015610b7d57821015610b1f576020600493604051948580927f6bba3f2f0000000000000000000000000000000000000000000000000000000082525afa9283156103a1575f93610ae3575b5051906109758261210c565b9261099084600f0b945f86139261098b84611f94565b61205e565b9061099f5f83600f0b13611ff9565b15610a85576109ad90612141565b5f928051915f935b838510610a2257868681156100d55760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580610a08575b156100d557602090600f0b604051908152f35b506f7fffffffffffffffffffffffffffffff8113156109f5565b9091929394610a7a600191610a74610a61610a5c8761098b610a448d8c611ce8565b51600f0b610a528a8d611ce8565b51600f0b90612191565b612281565b610a6b8a89611ce8565b51600f0b61205e565b90612244565b9501939291906109b5565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c4d53523a2073697a65207a65726f00000000000000000000000000000000006044820152fd5b9092506020813d602011610b17575b81610aff60209383611b09565b810103126100d557610b1090611b77565b9183610969565b3d9150610af2565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f706f6f6c50726963653a206964780000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f706f6f6c50726963653a20756e696e69740000000000000000000000000000006044820152fd5b610bef91503d805f833e61057d8183611b09565b84610918565b346100d55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d55773ffffffffffffffffffffffffffffffffffffffff6020610c43611a3b565b610c4b611a5e565b506004604051809481937f31596a6a000000000000000000000000000000000000000000000000000000008352165afa9081156103a1575f91610ca0575b6020610c97836044356120b9565b50604051908152f35b90506020813d602011610ccc575b81610cbb60209383611b09565b810103126100d55751610c97610c89565b3d9150610cae565b346100d55773ffffffffffffffffffffffffffffffffffffffff610cf736611a81565b6040517f476e44b60000000000000000000000000000000000000000000000000000000081529390921691905f84600481865afa9384156103a1575f94610f45575b506040517f9af1d35a0000000000000000000000000000000000000000000000000000000081525f81600481875afa9081156103a157610d829184915f91610f2b575b50611ce8565b5193604051937f017cf6610000000000000000000000000000000000000000000000000000000085525f85600481845afa9485156103a1575f95610f07575b50906020600492604051938480927f18160ddd0000000000000000000000000000000000000000000000000000000082525afa9182156103a1575f92610ed2575b5090604094610e3e92865197889687967ff16b7c2600000000000000000000000000000000000000000000000000000000885260048801611d7a565b038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156103a1575f905f90610e98575b6040809350519182526020820152f35b50506040813d604011610eca575b81610eb360409383611b09565b810103126100d55780602060409251910151610e88565b3d9150610ea6565b91506020823d602011610eff575b81610eed60209383611b09565b810103126100d5579051906040610e02565b3d9150610ee0565b600492919550610f226020913d805f833e6104388183611b09565b95919250610dc1565b610f3f91503d805f833e6104388183611b09565b87610d7c565b610f5a9194503d805f833e61057d8183611b09565b9284610d39565b346100d55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d55773ffffffffffffffffffffffffffffffffffffffff610fad611a3b565b166040517f476e44b60000000000000000000000000000000000000000000000000000000081525f81600481855afa80156103a1576020915f916111b9575b5001515190610ffa82611dcf565b915f5b8181106110b5576040517f18160ddd0000000000000000000000000000000000000000000000000000000081528490602081600481885afa9081156103a1575f91611081575b506106ab915f9160405193849283927f228fa85000000000000000000000000000000000000000000000000000000000845260243560048501611e4a565b90506020813d6020116110ad575b8161109c60209383611b09565b810103126100d557516106ab611043565b3d915061108f565b604051907fe4b50cb8000000000000000000000000000000000000000000000000000000008252806004830152602082602481875afa9182156103a15773ffffffffffffffffffffffffffffffffffffffff926020915f9161119c575b506024604051809581937f70a08231000000000000000000000000000000000000000000000000000000008352896004840152165afa80156103a1575f9061116a575b600192506111638287611ce8565b5201610ffd565b506020823d8211611194575b8161118360209383611b09565b810103126100d55760019151611155565b3d9150611176565b6111b39150823d8111610867576108598183611b09565b87611112565b6111cd91503d805f833e61057d8183611b09565b83610fec565b346100d55773ffffffffffffffffffffffffffffffffffffffff6111f636611a81565b92909116906040517f476e44b60000000000000000000000000000000000000000000000000000000081525f81600481865afa80156103a1576020915f91611702575b500180515180156116a457808310908161169a575b501561163c576040517f6bba3f2f000000000000000000000000000000000000000000000000000000008152602081600481875afa9081156103a1575f916115ed575b50610a5c9061098b6112d06112bd6112e99551936112ae8561210c565b9061098b5f83600f0b13611f94565b6112cb5f82600f0b13611ff9565b612141565b91610a52866112df8a84611ce8565b51600f0b92611ce8565b926040517f017cf6610000000000000000000000000000000000000000000000000000000081525f81600481875afa9081156103a1576004935f926113349284916115d35750611ce8565b5193604051938480927f017cf6610000000000000000000000000000000000000000000000000000000082525afa80156103a157611378925f916115b95750611ce8565b519081156100d55777ffffffffffffffffffffffffffffffffffffffffffffffff811161140757906113ac9160401b6121ce565b6fffffffffffffffffffffffffffffffff81116100d5576fffffffffffffffffffffffffffffffff166f7fffffffffffffffffffffffffffffff81116100d5576020916113fc91600f0b9061205e565b60405190600f0b8152f35b60c09181831c80936401000000008210156115ac575b600282620100006114aa9410156115a0575b610100811015611594575b6010811015611588575b600481101561157d575b1015611575575b8360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b6121ce565b926fffffffffffffffffffffffffffffffff84116100d5578160801c8402906fffffffffffffffffffffffffffffffff8316850290809460401b9082821061154b575b5003928160801b91828510611522575b60801c036115175761150f92036121ce565b905b016113ac565b505050600190611511565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906114fd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019450876114ed565b600101611455565b91810191811c61144e565b6004928301921c611444565b6008928301921c61143a565b6010928301921c61142f565b505060e082811c9061141d565b6115cd91503d805f833e6104388183611b09565b85610d7c565b6115e791503d8086833e6104388183611b09565b88610d7c565b90506020813d602011611634575b8161160860209383611b09565b810103126100d5576112e99161098b6112d06112bd611629610a5c95611b77565b945050505091611291565b3d91506115fb565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f70726963653a20696478000000000000000000000000000000000000000000006044820152fd5b905084108561124e565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f70726963653a20756e696e6974000000000000000000000000000000000000006044820152fd5b61171691503d805f833e61057d8183611b09565b85611239565b346100d55773ffffffffffffffffffffffffffffffffffffffff61173f36611a81565b6040517f476e44b60000000000000000000000000000000000000000000000000000000081529390921691905f84600481865afa9384156103a1575f9461194c575b506040517f9af1d35a0000000000000000000000000000000000000000000000000000000081525f81600481875afa9081156103a1576117c99183915f91610f2b5750611ce8565b5193604051937f017cf6610000000000000000000000000000000000000000000000000000000085525f85600481845afa9485156103a1575f95611928575b50906020600492604051938480927f18160ddd0000000000000000000000000000000000000000000000000000000082525afa9182156103a1575f926118f3575b50906060946118869260405197889687967fe9f317f000000000000000000000000000000000000000000000000000000000885260048801611d7a565b038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156103a1575f905f925f9161036a575061036690604051938493846040919493926060820195825260208201520152565b91506020823d602011611920575b8161190e60209383611b09565b810103126100d5579051906060611849565b3d9150611901565b6004929195506119436020913d805f833e6104388183611b09565b95919250611808565b6119619194503d805f833e61057d8183611b09565b9284611781565b346100d55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d5576020816024816119a5611a3b565b73ffffffffffffffffffffffffffffffffffffffff806119c3611a5e565b16917f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa80156103a1575f90611a08575b602090604051908152f35b506020813d602011611a33575b81611a2260209383611b09565b810103126100d557602090516119fd565b3d9150611a15565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036100d557565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036100d557565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60609101126100d55760043573ffffffffffffffffffffffffffffffffffffffff811681036100d557906024359060443590565b90602080835192838152019201905f5b818110611af35750505090565b8251845260209384019390920191600101611ae6565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611b4a57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b519081600f0b82036100d557565b67ffffffffffffffff8111611b4a5760051b60200190565b6020818303126100d55780519067ffffffffffffffff82116100d55701906040828203126100d557604051916040830183811067ffffffffffffffff821117611b4a57604052611bec81611b77565b835260208101519067ffffffffffffffff82116100d557019080601f830112156100d5578151611c1b81611b85565b92611c296040519485611b09565b81845260208085019260051b8201019283116100d557602001905b828210611c5657505050602082015290565b60208091611c6384611b77565b815201910190611c44565b6020818303126100d55780519067ffffffffffffffff82116100d557019080601f830112156100d5578151611ca281611b85565b92611cb06040519485611b09565b81845260208085019260051b8201019283116100d557602001905b828210611cd85750505090565b8151815260209182019101611ccb565b8051821015611cfc5760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b908160609103126100d5578051916040602083015192015190565b90602080835192838152019201905f5b818110611d615750505090565b8251600f0b845260209384019390920191600101611d54565b9695949160a094611dca94602092611dbc948b52838b015260408a015260c060608a01528051600f0b60c08a01520151604060e0890152610100880190611d44565b908682036080880152611ad6565b930152565b90611dd982611b85565b611de66040519182611b09565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611e148294611b85565b0190602036910137565b908160209103126100d5575173ffffffffffffffffffffffffffffffffffffffff811681036100d55790565b611e669392606092825260208201528160408201520190611ad6565b90565b73ffffffffffffffffffffffffffffffffffffffff166040517f1f3a0e41000000000000000000000000000000000000000000000000000000008152602081600481855afa9081156103a1575f91611f59575b50611f54575f600491604051928380927f476e44b60000000000000000000000000000000000000000000000000000000082525afa9081156103a1575f91611f3a575b505f5b60208201518051821015611f3357611f1b825f92611ce8565b51600f0b13611f2c57600101611f02565b5050600190565b5050505f90565b611f4e91503d805f833e61057d8183611b09565b5f611eff565b505f90565b90506020813d602011611f8c575b81611f7460209383611b09565b810103126100d5575180151581036100d5575f611ebc565b3d9150611f67565b15611f9b57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b1561200057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4c4d53523a20623c3d30000000000000000000000000000000000000000000006044820152fd5b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061209f575b156100d557600f0b90565b506f7fffffffffffffffffffffffffffffff811315612094565b91908015612106576120cb9083612205565b918281039081116120d95790565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b505f9190565b5f90815b815183101561213b576121336001916121298585611ce8565b51600f0b90612244565b920191612110565b91505090565b600f0b80156100d557700100000000000000000000000000000000057fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061209f57156100d557600f0b90565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061209f57156100d557600f0b90565b81156121d8570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b811561223e578181029181830414901517156120d957620f42408101908181116120d957620f423f019081116120d957620f4240900490565b50505f90565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061209f57156100d557600f0b90565b600f0b684000000000000000008112156100d5577fffffffffffffffffffffffffffffffffffffffffffffffc000000000000000008112611f5457611e6690700171547652b82fe1777d0ffda0d23a7d120260801d600f0b80684000000000000000008112156100d5577fffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000811261223e576f80000000000000000000000000000000915f6780000000000000008216600f0b13612ed2575b5f6740000000000000008216600f0b13612eb5575b5f6720000000000000008216600f0b13612e98575b5f6710000000000000008216600f0b13612e7b575b5f6708000000000000008216600f0b13612e5e575b5f6704000000000000008216600f0b13612e41575b5f6702000000000000008216600f0b13612e24575b5f6701000000000000008216600f0b13612e07575b5f66800000000000008216600f0b13612dea575b5f66400000000000008216600f0b13612dcd575b5f66200000000000008216600f0b13612db0575b5f66100000000000008216600f0b13612d93575b5f66080000000000008216600f0b13612d76575b5f66040000000000008216600f0b13612d59575b5f66020000000000008216600f0b13612d3c575b5f66010000000000008216600f0b13612d1f575b5f658000000000008216600f0b13612d02575b5f654000000000008216600f0b13612ce5575b5f652000000000008216600f0b13612cc8575b5f651000000000008216600f0b13612cab575b5f650800000000008216600f0b13612c8e575b5f650400000000008216600f0b13612c71575b5f650200000000008216600f0b13612c54575b5f650100000000008216600f0b13612c37575b5f6480000000008216600f0b13612c1a575b5f6440000000008216600f0b13612bfd575b5f6420000000008216600f0b13612be0575b5f6410000000008216600f0b13612bc3575b5f6408000000008216600f0b13612ba6575b5f6404000000008216600f0b13612b89575b5f6402000000008216600f0b13612b6c575b5f6401000000008216600f0b13612b4f575b5f63800000008216600f0b13612b32575b5f63400000008216600f0b13612b15575b5f63200000008216600f0b13612af8575b5f63100000008216600f0b13612adb575b5f63080000008216600f0b13612abe575b5f63040000008216600f0b13612aa1575b5f63020000008216600f0b13612a84575b5f63010000008216600f0b13612a67575b5f628000008216600f0b13612a4a575b5f624000008216600f0b13612a2d575b5f622000008216600f0b13612a10575b5f621000008216600f0b136129f3575b5f620800008216600f0b136129d6575b5f620400008216600f0b136129b9575b5f620200008216600f0b1361299c575b5f620100008216600f0b1361297f575b5f6180008216600f0b13612962575b5f6140008216600f0b13612945575b5f6120008216600f0b13612928575b5f6110008216600f0b1361290b575b5f6108008216600f0b136128ee575b5f6104008216600f0b136128d1575b5f6102008216600f0b136128b4575b5f6101008216600f0b13612897575b5f60808216600f0b1361287a575b5f60408216600f0b1361285d575b5f60208216600f0b13612840575b5f60108216600f0b13612823575b5f60088216600f0b13612806575b5f60048216600f0b136127e9575b5f60028216600f0b136127cb575b60015f9116600f0b136127ae575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff81116100d557600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c90612784565b7001000000000000000162e42fefa39ef35890920260801c91612776565b9170010000000000000002c5c85fdf473de6b20260801c91612768565b91700100000000000000058b90bfbe8e7bcd6d0260801c9161275a565b917001000000000000000b17217f7d1cf79afa0260801c9161274c565b91700100000000000000162e42fefa39ef366f0260801c9161273e565b917001000000000000002c5c85fdf473de6eca0260801c91612730565b9170010000000000000058b90bfbe8e7bce5440260801c91612722565b91700100000000000000b17217f7d1cf79e9490260801c91612714565b9170010000000000000162e42fefa39ef44d910260801c91612705565b91700100000000000002c5c85fdf473dea871f0260801c916126f6565b917001000000000000058b90bfbe8e7bdcbe2e0260801c916126e7565b9170010000000000000b17217f7d1cf7d83c1a0260801c916126d8565b917001000000000000162e42fefa39f02b772c0260801c916126c9565b9170010000000000002c5c85fdf473e242ea380260801c916126ba565b91700100000000000058b90bfbe8e7cc35c3f00260801c916126ab565b917001000000000000b17217f7d1cfb72b45e10260801c9161269c565b91700100000000000162e42fefa39fe95583c20260801c9161268c565b917001000000000002c5c85fdf4741bea6e77e0260801c9161267c565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c9161266c565b91700100000000000b17217f7d1d351a389d400260801c9161265c565b9170010000000000162e42fefa3ae53369388c0260801c9161264c565b91700100000000002c5c85fdf477b662b269450260801c9161263c565b917001000000000058b90bfbe8f71cb4e4b33d0260801c9161262c565b9170010000000000b17217f7d20cf927c8e94c0260801c9161261c565b917001000000000162e42fefa494f1478fde050260801c9161260b565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c916125fa565b91700100000000058b90bfbe9ddbac5e109cce0260801c916125e9565b917001000000000b17217f7d5a7716bba4a9ae0260801c916125d8565b91700100000000162e42fefb2fed257559bdaa0260801c916125c7565b917001000000002c5c85fdf84bd62ae30a74cc0260801c916125b6565b9170010000000058b90bfbf8479bd5a81b51ad0260801c916125a5565b91700100000000b17217f80f4ef5aadda455540260801c91612594565b9170010000000162e42ff0999ce3541b9fffcf0260801c91612582565b91700100000002c5c85fe31f35a6a30da1be500260801c91612570565b917001000000058b90bfcdee5acd3c1cedc8230260801c9161255e565b9170010000000b17217fba9c739aa5819f44f90260801c9161254c565b917001000000162e42fff037df38aa2b219f060260801c9161253a565b9170010000002c5c8601cc6b9e94213c72737a0260801c91612528565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91612516565b917001000000b1721835514b86e6d96efd1bfe0260801c91612504565b91700100000162e430e5a18f6119e3c02282a50260801c916124f1565b917001000002c5c863b73f016468f6bac5ca2b0260801c916124de565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c916124cb565b91700100000b1721bcfc99d9f890ea069117630260801c916124b8565b9170010000162e43f4f831060e02d839a9d16d0260801c916124a5565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c91612492565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c9161247f565b9170010000b17255775c040618bf4a4ade83fc0260801c9161246c565b917001000162e525ee054754457d59952920260260801c91612458565b9170010002c5cc37da9491d0985c348c68e7b30260801c91612444565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91612430565b917001000b175effdc76ba38e31671ca9397250260801c9161241c565b91700100162f3904051fa128bca9c55c31e5df0260801c91612408565b917001002c605e2e8cec506d21bfc89a23a00f0260801c916123f4565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c916123e0565b91700100b1afa5abcbed6129ab13ec11dc95430260801c916123cc565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c916123b7565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c916123a2565b917001059b0d31585743ae7c548eb68ca417fd0260801c9161238d565b9170010b5586cf9890f6298b92b71842a983630260801c91612378565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c91612363565b917001306fe0a31b7152de8d5a46305c85edec0260801c9161234e565b6fb504f333f9de6484597d89b3754abe9f925061233956fea2646970667358221220cccca872339975cd8edb15decadeed969a28e27ab4282e2206a87bcab83db3e664736f6c634300081e003360808060405234601557610291908161001a8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c6323e30c8b14610025575f80fd5b346101c85760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101c85761005c610238565b5060243573ffffffffffffffffffffffffffffffffffffffff81168091036101c8576044359060843567ffffffffffffffff81116101c857366023820112156101c857806004013567ffffffffffffffff81116101c85781013660248201116101c857602090829003126101c857602401359073ffffffffffffffffffffffffffffffffffffffff82168092036101c857606435830180931161020b57835f60449260209583957f095ea7b3000000000000000000000000000000000000000000000000000000008552600485015260248401525af1801561020057610167575b60206040517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b60203d6020116101f9575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f820116820182811067ffffffffffffffff8211176101cc576020918391604052810103126101c85751801515811461013d575b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b503d610172565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101c85756fea2646970667358221220608a068f4b69c3529bce103fd01ee3145166316c5be04613db70ee2b847f122f64736f6c634300081e0033a264697066735822122081b1dbfe1d9b4d7de788398cad040b0ea893aa5e1ed1da111b3e69af75e6a1df64736f6c634300081e0033","sourceMap":"1337:10439:34:-:0;;;;;;;;;;3200:4:3;1337:10439:34;;;3200:4:3;1337:10439:34;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f905f3560e01c90816341a20a931461330d5750806350615d53146132c1578063ad5c464814613275578063c04062261461009b5763f8ccbf4714610055575f80fd5b3461009857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009857602060ff600c5460101c166040519015158152f35b80fd5b5034612992575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126129925762aa36a7460361321757737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15612992576040517f7fb5297f0000000000000000000000000000000000000000000000000000000081525f8160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015612b3557613204575b5080768e4d16886b8946dfe463fa172129eabf4825fb090000007fffffffffffffffffff0000000000000000000000000000000000000000ffffff600c54161780600c5573dc225280216822ca956738390f589c794129bd537fffffffffffffffffffffffff0000000000000000000000000000000000000000600d541617600d55737ba123e4e7395a361284d069bd0d545f3f8206417fffffffffffffffffffffffff0000000000000000000000000000000000000000600e541617600e557388125947bbf1a6dd0fed4b257bb3f9e1fbdcb3cc7fffffffffffffffffffffffff0000000000000000000000000000000000000000600f541617600f5573c8db65c0b9f4cf59097d4c5bcb9e8e92b9e4e15f7fffffffffffffffffffffffff00000000000000000000000000000000000000006010541617601055737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156131445773ffffffffffffffffffffffffffffffffffffffff604051917fc657c71800000000000000000000000000000000000000000000000000000000835260181c1660048201526040602482015281818061031b60448201604090600481527f555358440000000000000000000000000000000000000000000000000000000060208201520190565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156130bd576131ef575b5073ffffffffffffffffffffffffffffffffffffffff600d5416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561314457604051907fc657c7180000000000000000000000000000000000000000000000000000000082526004820152604060248201528181806103e360448201604090600481527f465553440000000000000000000000000000000000000000000000000000000060208201520190565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156130bd576131da575b5073ffffffffffffffffffffffffffffffffffffffff600e5416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561314457604051907fc657c7180000000000000000000000000000000000000000000000000000000082526004820152604060248201528181806104ab60448201604090600481527f444956450000000000000000000000000000000000000000000000000000000060208201520190565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156130bd576131c5575b5073ffffffffffffffffffffffffffffffffffffffff600f5416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561314457604051907fc657c71800000000000000000000000000000000000000000000000000000000825260048201526040602482015281818061057360448201604090600481527f425554430000000000000000000000000000000000000000000000000000000060208201520190565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156130bd576131b0575b5073ffffffffffffffffffffffffffffffffffffffff60105416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561314457604051907fc657c71800000000000000000000000000000000000000000000000000000000825260048201526040602482015281818061063b60448201604090600581527f575445544800000000000000000000000000000000000000000000000000000060208201520190565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156130bd5761319b575b5073ffffffffffffffffffffffffffffffffffffffff600c5460181c16803b15613144576040517f40c10f1900000000000000000000000000000000000000000000000000000000815233600482015264e8d4a5100060248201529082908290604490829084905af180156130bd57613186575b5073ffffffffffffffffffffffffffffffffffffffff600d5416803b15613144576040517f40c10f1900000000000000000000000000000000000000000000000000000000815233600482015264e8d4a5100060248201529082908290604490829084905af180156130bd57613171575b5073ffffffffffffffffffffffffffffffffffffffff600e5416803b15613144576040517f40c10f1900000000000000000000000000000000000000000000000000000000815233600482015269d3c21bcecceda100000060248201529082908290604490829084905af180156130bd5761315c575b5073ffffffffffffffffffffffffffffffffffffffff600f5416803b15613144578180916044604051809481937f40c10f19000000000000000000000000000000000000000000000000000000008352336004840152655af3107a400060248401525af180156130bd57613147575b5073ffffffffffffffffffffffffffffffffffffffff60105416803b15613144576040517f40c10f1900000000000000000000000000000000000000000000000000000000815233600482015269d3c21bcecceda100000060248201529082908290604490829084905af180156130bd5761312f575b50506040516138d68082019082821067ffffffffffffffff83111761310257602091839162003acf833973fff9976782d46cc05630d1f6ebab18b2324d6b14815203019082f080156130f5576040516155388082019082821067ffffffffffffffff8311176130c8576020918391620073a5833973fff9976782d46cc05630d1f6ebab18b2324d6b14815203019083f080156130bd576040516158b08082019082821067ffffffffffffffff831117613090579082916200c8dd8339039084f091821561308557604051615e0e8082019082821067ffffffffffffffff831117613058579082916201218d8339039085f0801561304d576040516136f2928382019382851067ffffffffffffffff8611176130205773ffffffffffffffffffffffffffffffffffffffff80808061010095879562017f9b8739338a5273fff9976782d46cc05630d1f6ebab18b2324d6b1460208b015216988960408a01521698896060890152169485608088015216948560a0820152620186a060c0820152730e280f5eda58872d7cdaa8ac0a57a55fd6133aed60e082015203019086f080156130155773ffffffffffffffffffffffffffffffffffffffff1692610a64846135cc565b604051608096610a748883613346565b600382527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08801908136602085013773ffffffffffffffffffffffffffffffffffffffff600c5460181c16610ac88461339f565b5273ffffffffffffffffffffffffffffffffffffffff600f5416610aeb846133d9565b5273ffffffffffffffffffffffffffffffffffffffff60105416610b0e846133e9565b5260405192610b1d8a85613346565b6003845282366020860137620f4240610b358561339f565b526305f5e100610b44856133d9565b52670de0b6b3a7640000610b57856133e9565b5260405193610b668b86613346565b60038552833660208701376032610b7c8661339f565b5260fa610b88866133d9565b5261015e610b95866133e9565b52604051610ba38c82613346565b60038152843660208301376001610bb98261339f565b52620186a0610bc7826133d9565b52610fa0610bd4826133e9565b5260405191610be38d84613346565b6003835285366020850137610bf78161339f565b51806127100290612710820403612fe857610c1c90610c158461339f565b51906133f9565b610c258461339f565b52610c2f816133d9565b51806127100290612710820403612fe85790610c51610c6092610c15856133d9565b610c5a856133d9565b526133e9565b5190816127100291612710830403612fbb5790610c15610c7f926133e9565b610c88826133e9565b526719999999999999999280612f8e575082600f0b925f841315612f305768010000000000000000841215612ed2576f028f5c28f5c28f5c000000000000000060401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612eb8575b1561299257600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612e9e575b1561299257600f0b5f811315612e405768010147ae147ae147ae610d55916139f3565b600f0b5f81138080612e2e575b15612dd05715612992575f908068010000000000000000821215612dc3575b806401000000006002921215612db7575b62010000811215612dab575b610100811215612d9f575b6010811215612d93575b6004811215612d88575b1215612d7e575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f8313612d6257506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b028c1d907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082600f0b1461299257610e55915f03600f0b6139f3565b600f0b5f811315612d0457801561299257700100000000000000000000000000000000057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612cea575b1561299257600f0b915f831315612c8c57610fed610f6c92610fa16040958651998a9687967f60cf7d4a0000000000000000000000000000000000000000000000000000000088526101806004890152600a6101848901527f546f6b656e20506f6f6c000000000000000000000000000000000000000000006101a48901526101c0602489015260026101c48901527f54500000000000000000000000000000000000000000000000000000000000006101e48901526102006044890152610204880190613464565b9160648701527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8683030160848701526134ad565b906109c460a48501525f60c48501523360e4850152336101048501527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc848303016101248501526134ad565b69021e19e0c9bab24000006101448301525f61016483015203815f8b5af1928315612b35575f93612c6a575b50604051906110288a83613346565b600382528236602084013773ffffffffffffffffffffffffffffffffffffffff600c5460181c166110588361339f565b5273ffffffffffffffffffffffffffffffffffffffff600d541661107b836133d9565b5273ffffffffffffffffffffffffffffffffffffffff600e541661109e836133e9565b526040516110ac8b82613346565b6003815283366020830137620f42406110c48261339f565b52620f42406110d2826133d9565b52670de0b6b3a76400006110e5826133e9565b52604051936110f48c86613346565b600385523660208601376111078161339f565b516127108102908082046127101490151715612c1f576111268561339f565b52611130816133d9565b51906127108202918083046127101490151715612c1f5761115491610c5a866133d9565b51916127108302928084046127101490151715612c1f576112906112339260409461117e876133e9565b5266068db8bac710cb95855196879586957fa4689b240000000000000000000000000000000000000000000000000000000087526101a06004880152600f6101a48801527f537461626c65636f696e20506f6f6c00000000000000000000000000000000006101c48801526101e0602488015260046101e48801527f53544150000000000000000000000000000000000000000000000000000000006102048801526102206044880152610224870190613464565b9260648601526084850152606460a4850152606460c48501525f60e485015233610104850152336101248501527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc848303016101448501526134ad565b69021e19e0c9bab24000006101648301525f61018483015203815f8a5af18015612b3557612c4c575b50606094604051976112cb878a613346565b600289527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08701803660208c013773ffffffffffffffffffffffffffffffffffffffff600c5460181c1661131e8b61339f565b5273ffffffffffffffffffffffffffffffffffffffff600e54166113418b6133d9565b5260405161134f8982613346565b6002815281366020830137620f42406113678261339f565b52670de0b6b3a764000061137a826133d9565b52604051916113898a84613346565b6002835236602084013761139c8161339f565b51906127108202918083046127101490151715612c1f576113c6916113c08461339f565b526133d9565b516127108102908082046127101490151715612c1f576113e5826133d9565b5260406114a45f9b6114fc67cccccccccccccccc845195869485947ff63772fc0000000000000000000000000000000000000000000000000000000086526101806004870152600b6101848701527f537461626c6520506169720000000000000000000000000000000000000000006101a48701526101c0602487015260056101c48701527f53504149520000000000000000000000000000000000000000000000000000006101e48701526102006044870152610204860190613464565b91606485015260076084850152600760a4850152600160c48501523360e4850152336101048501527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc848303016101248501526134ad565b69021e19e0c9bab24000006101448301525f61016483015203815f875af18015612b3557612bf1575b50604051612fd38082019082821067ffffffffffffffff8311176129d45760409183916201b68d83398781528b60208201520301905ff08015612b355773ffffffffffffffffffffffffffffffffffffffff8091169316604051977f6ff97f1d0000000000000000000000000000000000000000000000000000000089525f89600481855afa988915612b35575f99612b40575b508851906115c6836135cc565b604051997f18160ddd000000000000000000000000000000000000000000000000000000008b5260208b600481875afa9a8b15612b35575f9b612b01575b5061164760409b8c61161881519182613346565b601481527f706f73742d6372656174696f6e20737570706c790000000000000000000000006020820152613a54565b8a517fb3f1c93d0000000000000000000000000000000000000000000000000000000081523360048201523360248201526104d260448201525f60648201526020816084815f895af18015612a8f575f90612acd575b8c516116dd92506116ae8e82613346565b600681527f6d696e74656400000000000000000000000000000000000000000000000000006020820152613a54565b8a517f18160ddd000000000000000000000000000000000000000000000000000000008152602081600481885afa8015612a8f575f90612a99575b8c5161175892506117298e82613346565b601081527f706f73742d6d696e7420737570706c79000000000000000000000000000000006020820152613a54565b8a517f6863f5bc000000000000000000000000000000000000000000000000000000008152336004820152336024820152600760448201525f60648201525f60848201525f8160a48183895af18015612a8f57612a01575b508a516102ab80820182811067ffffffffffffffff8211176129d45782916201e660833903905ff080156129ca5773ffffffffffffffffffffffffffffffffffffffff6117fc8361339f565b5116908c51917fad8448930000000000000000000000000000000000000000000000000000000083528660048401526024830152630328b74060448301526020826064818c5afa918215612988575f92612996575b5073ffffffffffffffffffffffffffffffffffffffff806118718561339f565b5116911691813b15612992575f9160448f9284935194859384927f40c10f1900000000000000000000000000000000000000000000000000000000845288600485015260248401525af1801561298857612972575b50611954918e8d60209373ffffffffffffffffffffffffffffffffffffffff6119028351958b888801528787526118fd8588613346565b61339f565b51169151958694859384937f5cffe9de00000000000000000000000000000000000000000000000000000000855260048501526024840152630328b74060448401528b60648401526084830190613571565b0391885af1801561293b57612945575b5060a4818d8c51928380927fcb717f3a00000000000000000000000000000000000000000000000000000000825233600483015233602483015280604483015263132212406064830152806084830152885af1801561293b5761291e575b5060018211918c831561291257507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81019081116128e557908c949392915b8b51907f0eeee627000000000000000000000000000000000000000000000000000000008252336004830152866024830152336044830152866064830152608482015263054e084060a48201528560c48201528560e48201528561010482015281816101248189885af180156128db576128af575b5050813b156128015789517fa1af5b9a000000000000000000000000000000000000000000000000000000008152848160048183875af180156128a557908591612890575b505015612885578860ff60c460015b86845195869485937f491e79980000000000000000000000000000000000000000000000000000000085523360048601523360248601526729a2241af62c000060448601521660648401528160848401528160a48401525af1801561283d5790899161285c575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156126e75787517f76eadd36000000000000000000000000000000000000000000000000000000008152828160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561283d57908391612847575b50508751907f56ca623e0000000000000000000000000000000000000000000000000000000082528360048301528282602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa91821561283d578392612821575b508851917f56ca623e0000000000000000000000000000000000000000000000000000000083528560048401528383602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9283156127f7578493612805575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156128015783611cdb918b805193849283927f3d5923ee0000000000000000000000000000000000000000000000000000000084526004840152600760448401527f504c414e4e45520000000000000000000000000000000000000000000000000060648401528660248401526084830190613571565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156127f7579084916127e2575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156127de57611d929183918a5193849283927f3d5923ee0000000000000000000000000000000000000000000000000000000084528d6004850152600460448501527f494e464f00000000000000000000000000000000000000000000000000000000606485015260248401526084830190613571565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156126dd576127c9575b5073ffffffffffffffffffffffffffffffffffffffff600c5460181c168751907f56ca623e00000000000000000000000000000000000000000000000000000000825260048201528181602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9081156126dd5782916127af575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156126e75781611ee1918951809381927f3d5923ee0000000000000000000000000000000000000000000000000000000083528c6004840152611eb160448401604090600481527f555358440000000000000000000000000000000000000000000000000000000060208201520190565b907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc848303016024850152613571565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156126dd5761279a575b5073ffffffffffffffffffffffffffffffffffffffff600d54168751907f56ca623e00000000000000000000000000000000000000000000000000000000825260048201528181602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9081156126dd578291612780575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156126e75781611ffd918951809381927f3d5923ee0000000000000000000000000000000000000000000000000000000083528c6004840152611eb160448401604090600481527f465553440000000000000000000000000000000000000000000000000000000060208201520190565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156126dd5761276b575b5073ffffffffffffffffffffffffffffffffffffffff600e54168751907f56ca623e00000000000000000000000000000000000000000000000000000000825260048201528181602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9081156126dd578291612751575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156126e75781612119918951809381927f3d5923ee0000000000000000000000000000000000000000000000000000000083528c6004840152611eb160448401604090600481527f444956450000000000000000000000000000000000000000000000000000000060208201520190565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156126dd5761273c575b5073ffffffffffffffffffffffffffffffffffffffff600f54168751907f56ca623e00000000000000000000000000000000000000000000000000000000825260048201528181602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9081156126dd578291612722575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156126e75781612235918951809381927f3d5923ee0000000000000000000000000000000000000000000000000000000083528c6004840152611eb160448401604090600481527f425554430000000000000000000000000000000000000000000000000000000060208201520190565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156126dd5761270d575b5073ffffffffffffffffffffffffffffffffffffffff601054168751907f56ca623e00000000000000000000000000000000000000000000000000000000825260048201528181602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9081156126dd5782916126eb575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156126e75781612351918951809381927f3d5923ee0000000000000000000000000000000000000000000000000000000083528c6004840152611eb160448401604090600581527f575445544800000000000000000000000000000000000000000000000000000060208201520190565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156126dd576126bc575b50506126b99661244c6124c2946124116124fd9897956123d66124879661239b613912565b8c516123a78e82613346565b600e81527f20205061727479506c616e6e65720000000000000000000000000000000000006020820152613963565b8a516123e28c82613346565b600e81527f20202020205061727479496e666f0000000000000000000000000000000000006020820152613963565b885161241d8a82613346565b600e81527f20202020202053776170496d706c0000000000000000000000000000000000006020820152613963565b86516124588882613346565b600e81527f2020202020204d696e74496d706c0000000000000000000000000000000000006020820152613963565b84516124938682613346565b600e81527f2020202020204465706c6f7965720000000000000000000000000000000000006020820152613963565b82516124ce8482613346565b600e81527f4250616972204465706c6f7965720000000000000000000000000000000000006020820152613963565b612505613912565b61255f73ffffffffffffffffffffffffffffffffffffffff600c5460181c1682516125308482613346565b600e81527f20202020202020202020555358440000000000000000000000000000000000006020820152613963565b6125b673ffffffffffffffffffffffffffffffffffffffff600d541682516125878482613346565b600e81527f20202020202020202020465553440000000000000000000000000000000000006020820152613963565b61260d73ffffffffffffffffffffffffffffffffffffffff600e541682516125de8482613346565b600e81527f20202020202020202020444956450000000000000000000000000000000000006020820152613963565b61266473ffffffffffffffffffffffffffffffffffffffff600f541682516126358482613346565b600e81527f20202020202020202020425554430000000000000000000000000000000000006020820152613963565b73ffffffffffffffffffffffffffffffffffffffff601054169061268a81519182613346565b600e81527f20202020202020202057544554480000000000000000000000000000000000006020820152613963565b80f35b816126ca9197969497613346565b6126d957875f95929495612376565b8780fd5b88513d84823e3d90fd5b5080fd5b61270791503d8084833e6126ff8183613346565b8101906134e0565b5f6122c9565b8161271791613346565b6126d957875f61225a565b61273691503d8084833e6126ff8183613346565b5f6121ad565b8161274691613346565b6126d957875f61213e565b61276591503d8084833e6126ff8183613346565b5f612091565b8161277591613346565b6126d957875f612022565b61279491503d8084833e6126ff8183613346565b5f611f75565b816127a491613346565b6126d957875f611f06565b6127c391503d8084833e6126ff8183613346565b5f611e29565b816127d391613346565b6126d957875f611db7565b8280fd5b816127ec91613346565b6127de57825f611d03565b8a513d86823e3d90fd5b8380fd5b61281a9193503d8086833e6126ff8183613346565b915f611c4d565b6128369192503d8085833e6126ff8183613346565b905f611bf6565b89513d85823e3d90fd5b8161285191613346565b6126e757815f611b9e565b813d831161287e575b61286f8183613346565b810103126126e757875f611b31565b503d612865565b8860ff60c485611aca565b8161289a91613346565b61280157835f611abb565b8b513d87823e3d90fd5b816128ce92903d106128d4575b6128c68183613346565b8101906138f7565b50611a76565b503d6128bc565b8c513d88823e3d90fd5b60248d7f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b80959493929150611a01565b61293490823d84116128d4576128c68183613346565b50506119c2565b8b513d8f823e3d90fd5b6129669060203d60201161296b575b61295e8183613346565b8101906135b4565b611964565b503d612954565b8c929e505f61298091613346565b5f9d916118c6565b8d513d5f823e3d90fd5b5f80fd5b9091506020813d6020116129c2575b816129b260209383613346565b810103126129925751905f611851565b3d91506129a5565b8b513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b3d805f833e612a108183613346565b8101906020818303126129925780519067ffffffffffffffff821161299257019080601f830112156129925781518d92612a55612a4c83613387565b94519485613346565b81845260208085019260051b82010192831161299257602001905b828210612a7f575050506117b0565b8151815260209182019101612a70565b8c513d5f823e3d90fd5b506020813d602011612ac5575b81612ab360209383613346565b81010312612992576117589051611718565b3d9150612aa6565b506020813d602011612af9575b81612ae760209383613346565b81010312612992576116dd905161169d565b3d9150612ada565b909a506020813d602011612b2d575b81612b1d60209383613346565b810103126129925751995f611604565b3d9150612b10565b6040513d5f823e3d90fd5b9098503d805f833e612b528183613346565b8101906020818303126129925780519067ffffffffffffffff821161299257019080601f8301121561299257815190612b8a82613387565b92612b986040519485613346565b82845260208085019360051b82010191821161299257602001915b818310612bc457505050975f6115b9565b825173ffffffffffffffffffffffffffffffffffffffff8116810361299257815260209283019201612bb3565b612c129060403d604011612c18575b612c0a8183613346565b810190613430565b50611525565b503d612c00565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b612c649060403d604011612c1857612c0a8183613346565b506112b9565b612c8491935060403d604011612c1857612c0a8183613346565b50915f611019565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4d53523a206b617070613c3d300000000000000000000000000000000000006044820152fd5b506f7fffffffffffffffffffffffffffffff811315610ea3565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4c4d53523a20793c3d30000000000000000000000000000000000000000000006044820152fd5b8002908160ff1c9182607f011c918302019160011d9190610dfb565b9060010190610dc4565b92810192811d610dbd565b6004938401931d610db3565b6008938401931d610da9565b6010938401931d610d9e565b6020938401931d610d92565b506040915080821d610d81565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4c4d53523a20626164204520726174696f0000000000000000000000000000006044820152fd5b50680100000000000000008212610d62565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4c4d53523a2062616420736c697070616765206f72206e0000000000000000006044820152fd5b506f7fffffffffffffffffffffffffffffff811315610d32565b506f7fffffffffffffffffffffffffffffff811315610cf5565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4c4d53523a20663e3d31000000000000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4c4d53523a20663d3000000000000000000000000000000000000000000000006044820152fd5b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526012600452fd5b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b6040513d87823e3d90fd5b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b6040513d86823e3d90fd5b6024877f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b6040513d85823e3d90fd5b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b6040513d84823e3d90fd5b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b50604051903d90823e3d90fd5b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8161313991613346565b61009857805f6108a0565b50fd5b8161315191613346565b61009857805f61082a565b8161316691613346565b61009857805f6107bb565b8161317b91613346565b61009857805f610745565b8161319091613346565b61009857805f6106d4565b816131a591613346565b61009857805f610660565b816131ba91613346565b61009857805f610598565b816131cf91613346565b61009857805f6104d0565b816131e491613346565b61009857805f610408565b816131f991613346565b61009857805f610340565b61321091505f90613346565b5f5f61013d565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e6f74205365706f6c69610000000000000000000000000000000000000000006044820152fd5b34612992575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261299257602060405173fff9976782d46cc05630d1f6ebab18b2324d6b148152f35b34612992575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112612992576020604051730e280f5eda58872d7cdaa8ac0a57a55fd6133aed8152f35b34612992575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126129925780620186a060209252f35b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176129d457604052565b67ffffffffffffffff81116129d45760051b60200190565b8051156133ac5760200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8051600110156133ac5760400190565b8051600210156133ac5760600190565b8115613403570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b919082604091031261299257815173ffffffffffffffffffffffffffffffffffffffff811681036129925760209092015190565b90602080835192838152019201905f5b8181106134815750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101613474565b90602080835192838152019201905f5b8181106134ca5750505090565b82518452602093840193909201916001016134bd565b6020818303126129925780519067ffffffffffffffff8211612992570181601f820112156129925780519067ffffffffffffffff82116129d45760405192613550601f84017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200185613346565b8284526020838301011161299257815f9260208093018386015e8301015290565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b90816020910312612992575180151581036129925790565b5f90602073ffffffffffffffffffffffffffffffffffffffff604481600c5460181c169360405195869384927f095ea7b300000000000000000000000000000000000000000000000000000000845216958660048401527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248401525af1918215612b35575f926138da575b50602073ffffffffffffffffffffffffffffffffffffffff600d54166044604051809581937f095ea7b30000000000000000000000000000000000000000000000000000000083528660048401527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248401525af1918215612b35575f926138bd575b50602073ffffffffffffffffffffffffffffffffffffffff600e54166044604051809581937f095ea7b30000000000000000000000000000000000000000000000000000000083528660048401527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248401525af1918215612b35575f926138a0575b50602073ffffffffffffffffffffffffffffffffffffffff600f54166044604051809581937f095ea7b30000000000000000000000000000000000000000000000000000000083528660048401527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248401525af1908115612b35575f92602092613885575b50604473ffffffffffffffffffffffffffffffffffffffff601054169160405194859384927f095ea7b300000000000000000000000000000000000000000000000000000000845260048401527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248401525af18015612b355761386a5750565b6138829060203d60201161296b5761295e8183613346565b50565b61389b90833d851161296b5761295e8183613346565b6137e8565b6138b89060203d60201161296b5761295e8183613346565b613761565b6138d59060203d60201161296b5761295e8183613346565b6136dd565b6138f29060203d60201161296b5761295e8183613346565b613659565b90816060910312612992578051916040602083015192015190565b5f806040517f51973ec90000000000000000000000000000000000000000000000000000000060208201526004815261394c602482613346565b6020815191016a636f6e736f6c652e6c6f675afa50565b6139c061394c5f9392849373ffffffffffffffffffffffffffffffffffffffff6040519485937f319af333000000000000000000000000000000000000000000000000000000006020860152604060248601526064850190613571565b91166044830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282613346565b90600f0b9081156129925760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613a3a575b1561299257600f0b90565b506f7fffffffffffffffffffffffffffffff811315613a2f565b613a9c61394c5f939284936040519384927fb60e72cc000000000000000000000000000000000000000000000000000000006020850152604060248501526064840190613571565b906044830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810183528261334656fe60a03461009c57601f6138d638819003918201601f19168301916001600160401b038311848410176100a05780849260209460405283398101031261009c57516001600160a01b038116810361009c5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005560805260405161382190816100b58239608051818181610cfc015281816113670152611dfa0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f5f3560e01c80632a54db01146116555780638a3d858d146109d8578063bf05a0a6146107db5763e49cd47514610046575f80fd5b346107d85760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107d85760043573ffffffffffffffffffffffffffffffffffffffff811681036107d65761009d61192b565b60443567ffffffffffffffff606435116107d2573660236064350112156107d25767ffffffffffffffff60643560040135116107d257366024606435600401356064350101116107d25760a435916100f3611caa565b61010260ff6008541615611aab565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff86165afa9081156107c7578691610795575b5082116107375773ffffffffffffffffffffffffffffffffffffffff81168552600e602052604085205480156106d957807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101116106ac576101c0608435846129da565b50908694801515806106a3575b61060d575b5061020a8473ffffffffffffffffffffffffffffffffffffffff881673ffffffffffffffffffffffffffffffffffffffff8616611d21565b6040517f23e30c8b00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015284604482015282606482015260a060848201526064356004013560a48201526064356004013560246064350160c48301378760c4606435600401358301015260208160c4817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60643560040135011681010301818b73ffffffffffffffffffffffffffffffffffffffff8c165af1801561054e5788906105b7575b7f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd9915003610559576103576103248386611b10565b73ffffffffffffffffffffffffffffffffffffffff851673ffffffffffffffffffffffffffffffffffffffff8916611de2565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff88165afa90811561054e57869798969596916104ef575b507f249e0bf62ff982342c6a63926041694a221796af4b9ebacefc45823da42348139473ffffffffffffffffffffffffffffffffffffffff94936104938461045d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6104566104989761043e61042f846104bd9c016119e4565b90549060031b1c821015611b67565b6104498386016119e4565b90549060031b1c90611a71565b9201611a41565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b611a71565b9583604051948594169816963396846040919493926060820195825260208201520152565b0390a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055602060405160018152f35b94505091906020843d602011610546575b8161050d6020938361195e565b8101031261054257925185939192907f249e0bf62ff982342c6a63926041694a221796af4b9ebacefc45823da42348136103b5565b5f80fd5b3d9150610500565b6040513d8a823e3d90fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f666c6173683a2063616c6c6261636b00000000000000000000000000000000006044820152fd5b506020813d602011610605575b816105d16020938361195e565b81010312610601577f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd990516102ef565b8780fd5b3d91506105c4565b620f424091955061061e9083611b1d565b04938461062c575b5f6101d2565b61069e61065a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83016119e4565b61066a8883548360031b1c611b10565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b610626565b508215156101cd565b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f666c6173683a20746f6b656e206e6f7420696e20706f6f6c00000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f666c6173683a20616d6f756e74203e2062616c616e63650000000000000000006044820152fd5b90506020813d6020116107bf575b816107b06020938361195e565b8101031261054257515f61015b565b3d91506107a3565b6040513d88823e3d90fd5b8380fd5b505b80fd5b50346107d85760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107d8576004356024356044359182600f0b83036107d2576064359067ffffffffffffffff82116109d457366023830112156109d45781600401359161084c836119cc565b9261085a604051948561195e565b8084526024602085019160051b8301019136831161060157602401905b8282106109c45750505061088961194e565b9360a43567ffffffffffffffff81116109c057366023820112156109c05780600401356108b5816119cc565b916108c3604051938461195e565b8183526024602084019260051b820101903682116109bc57602401915b81831061099e575050509161090361091392868361090c98979660c4359a611f9d565b95909184611bcc565b5190612757565b9461091f861515611be0565b9480948061096f575b50509161093b6109429261096b94611bcc565b5190612b1a565b9261094e841515611c45565b604051938493846040919493926060820195825260208201520152565b0390f35b81965061096b949295509261099461098d6109429561093b946129a1565b8098611b10565b9592945092610928565b823580600f0b81036109b8578152602092830192016108e0565b8a80fd5b8980fd5b8680fd5b8135815260209182019101610877565b8480fd5b506101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261054257610a0c611908565b90610a1561192b565b610a1d61194e565b9160c43560a43581151582036105425760e43590610a4060ff6008541615611aab565b610a48611caa565b600b5480604435109081611649575b50156115eb575f86600f0b131561158d578015908115611582575b501561152457602495602073ffffffffffffffffffffffffffffffffffffffff610a9d604435611a29565b90549060031b1c16604051988980927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa958615611294575f966114ef575b60249750602073ffffffffffffffffffffffffffffffffffffffff610b0b606435611a29565b90549060031b1c16604051998a80927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa978815611294575f986114bb575b50600954604051600a80548083525f918252602083019493600f0b91907fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a85b8160018401106114905795610bbf928592610bcc98549181811061147c575b1061146b575b50038361195e565b6064359160443591611f9d565b610bea610bdd604499939935611a59565b90549060031b1c89612757565b97610bf6891515611be0565b5f9789958061144a575b50610c1c610c0f606435611a59565b90549060031b1c84612b1a565b9a610c288c1515611c45565b73ffffffffffffffffffffffffffffffffffffffff610c48604435611a29565b90549060031b1c1696610c5c818989611de2565b604051957f70a082310000000000000000000000000000000000000000000000000000000087523060048801526020876024818c5afa968715611294575f97611412575b5090610cab91611b10565b850361138e5773ffffffffffffffffffffffffffffffffffffffff610cd1606435611a29565b90549060031b1c16978061134f575b1561129f5773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b15610542575f809160248f60405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af1908115611294578d9161127f575b508980808093865af13d1561127a573d67ffffffffffffffff811161124d5760405190610dbe60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116018361195e565b81528a60203d92013e5b156111ef575b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526020816024818c5afa9081156111e4578d908b926111ae575b50610e1e9192611a71565b810361112a5788948a61010435151580611121575b6110c8575b50610e8f91610e6b610e60610e8493610e5561042f6044356119e4565b6104496044356119e4565b61045d604435611a41565b610e7961042f6064356119e4565b6104496064356119e4565b61045d606435611a41565b8782600f0b131561106a578783600f0b131561100c577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c93610f5e610f5360a095610f39610f0673ffffffffffffffffffffffffffffffffffffffff97610ef7604435611f5d565b90549060031b1c600f0b6129ff565b610f11604435611f5d565b9091906fffffffffffffffffffffffffffffffff83549160031b928116831b921b1916179055565b610f44606435611f5d565b90549060031b1c600f0b612a57565b610f11606435611f5d565b610f68818b611a71565b83604051971687528b60208801528c6040880152606087015260808601521692a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015610fdb575b50505061096b90604051938493846040919493926060820195825260208201520152565b8280809381938290611003575b3390f115610ff7578080610fb7565b604051903d90823e3d90fd5b506108fc610fe8565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a20616d6f756e744f7574203c3d20300000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4d53523a20616d6f756e74496e203c3d2030000000000000000000000000006044820152fd5b610e8491965091610e6b610e60620f42406110ea610e8f966101043590611b1d565b0498896110fe575b9350505091508a610e38565b61111c61110c6044356119e4565b61066a8d83548360031b1c611b10565b6110f2565b50801515610e33565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f73776170546f4c696d69743a206e6f6e2d7374616e6461726420746f6b656e4f60448201527f75740000000000000000000000000000000000000000000000000000000000006064820152fd5b9150506020813d6020116111dc575b816111ca6020938361195e565b8101031261054257518c610e1e610e13565b3d91506111bd565b6040513d8c823e3d90fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b60248b7f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b610dc8565b61128c919a505f9061195e565b5f985f610d69565b6040513d5f823e3d90fd5b6040517fa9059cbb000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff83166004528c60245260205f604481808d5af19060015f511482161561132e575b604052610dce57877f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b90600181151661134657893b15153d151616906112fb565b503d5f823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168814610ce0565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f73776170546f4c696d69743a206e6f6e2d7374616e6461726420746f6b656e4960448201527f6e000000000000000000000000000000000000000000000000000000000000006064820152fd5b919096506020823d602011611442575b8161142f6020938361195e565b8101031261054257905195610cab610ca0565b3d9150611422565b909550611459919850896129a1565b96611464888a611b10565b945f610c00565b60801d600f0b81526020015f610bb7565b92602060019184600f0b8152019301610bb1565b8054600f81810b895260809190911d900b602088015260409096019560029290920191600101610b92565b9097506020813d6020116114e7575b816114d76020938361195e565b810103126105425751965f610b53565b3d91506114ca565b95506020873d60201161151c575b8161150a6020938361195e565b81010312610542576024965195610ae5565b3d91506114fd565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f73776170546f4c696d69743a20646561646c696e6520657863656564656400006044820152fd5b90504211155f610a72565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f73776170546f4c696d69743a206c696d6974203c3d20300000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f73776170546f4c696d69743a20696478000000000000000000000000000000006044820152fd5b9050606435105f610a57565b346105425760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105425761168c611908565b611694611caa565b73ffffffffffffffffffffffffffffffffffffffff8116156118aa57600b545f5b818110611706577fd508feb4afc81230b8e5dcca865a405a72db1f928a5064f893ab22ab56ec25215f80a160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055005b61170f816119e4565b90549060031b1c9081156118a1576024602073ffffffffffffffffffffffffffffffffffffffff61173f84611a29565b90549060031b1c16604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa908115611294575f91611870575b5082811061181257826117e06117d760019561180c946117a6876119e4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82549160031b1b19169055611a71565b61045d85611a41565b8573ffffffffffffffffffffffffffffffffffffffff6117ff85611a29565b90549060031b1c16611d21565b016116b5565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f636f6c6c6563743a20666565203e2062616c00000000000000000000000000006044820152fd5b90506020813d8211611899575b8161188a6020938361195e565b81010312610542575185611787565b3d915061187d565b6001915061180c565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f636f6c6c6563743a207a65726f206164647200000000000000000000000000006044820152fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361054257565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361054257565b6084359081600f0b820361054257565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761199f57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b67ffffffffffffffff811161199f5760051b60200190565b600c548110156119fc57600c5f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600b548110156119fc57600b5f5260205f2001905f90565b600f548110156119fc57600f5f5260205f2001905f90565b600d548110156119fc57600d5f5260205f2001905f90565b91908203918211611a7e57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b15611ab257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b91908201809211611a7e57565b81810292918115918404141715611a7e57565b8115611b3a570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b15611b6e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f62616c616e6365203c2070726f746f636f6c206f7765640000000000000000006044820152fd5b80518210156119fc5760209160051b010190565b15611be757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f73776170546f4c696d69743a20696e707574207a65726f0000000000000000006044820152fd5b15611c4c57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f73776170546f4c696d69743a206f7574707574207a65726f00000000000000006044820152fd5b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005414611cf95760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b9173ffffffffffffffffffffffffffffffffffffffff604051927fa9059cbb000000000000000000000000000000000000000000000000000000005f521660045260245260205f60448180865af19060015f5114821615611dca575b60405215611d885750565b73ffffffffffffffffffffffffffffffffffffffff907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b90600181151661134657823b15153d15161690611d7d565b9073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169173ffffffffffffffffffffffffffffffffffffffff82169183831480611f53575b15611e9457505050803b15610542575f906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af1801561129457611e885750565b5f611e929161195e565b565b919390925073ffffffffffffffffffffffffffffffffffffffff604051937f23b872dd000000000000000000000000000000000000000000000000000000005f52166004523060245260445260205f60648180855af19060015f5114821615611f34575b50906040525f60605215611f095750565b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6001821516611f4a573b15153d1516165f611ef8565b823d5f823e3d90fd5b5084341015611e3c565b90600a548210156119fc57600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b93929491909483600f0b905f8213156126f9575f94855b8851871015611fdf57611fd7600191611fcd898c611bcc565b51600f0b906129ff565b960195611fb4565b90929496919395505f81600f0b131561269b57611ffb91612a94565b9081600f0b80156105425770010000000000000000000000000000000005947fffffffffffffffffffffffffffffffff8000000000000000000000000000000086121580612681575b15610542576120806120859161207b61206398600f0b9889928c611bcc565b51600f0b612071888d611bcc565b51600f0b90612a57565b612a94565b612b75565b9081600f0b948512156125fd578161209c91612ad4565b600f0b5f811315610542575f9080680100000000000000008212156125f0575b8064010000000060029212156125e4575b620100008112156125d8575b6101008112156125cc575b60108112156125c0575b60048112156125b5575b12156125ab575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f831361258f57506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d926121638484612a94565b937fffffffffffffffffffffffffffffffff8000000000000000000000000000000081600f0b146105425761219c905f03600f0b612b75565b600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612575575b15610542576121e690600f0b83612a94565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061255b575b1561054257600f0b5f811315610542575f90806801000000000000000082121561254e575b806401000000006002921215612542575b62010000811215612536575b61010081121561252a575b601081121561251e575b6004811215612513575b1215612509575b607f8290031b91907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160401b6780000000000000005b5f81136124e957506122f292506fb17217f7d1cf79abc9e3b39803f2f6af6122ec91600f0b0260801d85612a94565b98611bcc565b51600f0b9383958589600f0b1361230e575b5050505050509190565b85985068010000000000000000929496506120809061232f92949699612a94565b9101907fffffffffffffffffffffffffffffffff80000000000000000000000000000000821215806124cf575b156105425761236d91600f0b612a57565b905f600f83900b13612388575050505b5f8080808080612304565b612393929350612ad4565b600f0b5f811315610542575f9080680100000000000000008212156124c2575b8064010000000060029212156124b6575b620100008112156124aa575b61010081121561249e575b6010811215612492575b6004811215612487575b121561247d575b607f8290031b91907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160401b6780000000000000005b5f811361245d57506124589250600f0b6fb17217f7d1cf79abc9e3b39803f2f6af0260801d90612a94565b61237d565b91928002908160ff1c9182607f011c918302019160011d9291909261242d565b90600101906123f6565b92810192811d6123ef565b6004938401931d6123e5565b6008938401931d6123db565b6010938401931d6123d0565b6020938401931d6123c4565b506040915080821d6123b3565b506f7fffffffffffffffffffffffffffffff82131561235c565b91928002908160ff1c9182607f011c918302019160011d929190926122bd565b9060010190612286565b92810192811d61227f565b6004938401931d612275565b6008938401931d61226b565b6010938401931d612260565b6020938401931d612254565b506040915080821d612243565b506f7fffffffffffffffffffffffffffffff81131561221e565b506f7fffffffffffffffffffffffffffffff8113156121d4565b8002908160ff1c9182607f011c918302019160011d9190612136565b90600101906120ff565b92810192811d6120f8565b6004938401931d6120ee565b6008938401931d6120e4565b6010938401931d6120d9565b6020938401931d6120cd565b506040915080821d6120bc565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4c4d53523a206c696d69745072696365203c3d2063757272656e74207072696360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152fd5b506f7fffffffffffffffffffffffffffffff861315612044565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4c4d53523a206c696d69745072696365203c3d203000000000000000000000006044820152fd5b6127618282612b1a565b9180156105425777ffffffffffffffffffffffffffffffffffffffffffffffff83116127f257612794908360401b611b30565b6fffffffffffffffffffffffffffffffff8111610542576fffffffffffffffffffffffffffffffff16906f7fffffffffffffffffffffffffffffff821161054257600f0b90600f0b126127e45790565b60018101809111611a7e5790565b60c083811c8091640100000000821015612994575b60028262010000612894941015612988575b61010081101561297c575b6010811015612970575b6004811015612965575b101561295d575b8560017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b611b30565b916fffffffffffffffffffffffffffffffff8311610542578060801c83026fffffffffffffffffffffffffffffffff82168402838760401b90828210612933575b5003928160801b9182851061290a575b60801c036128ff576128f79203611b30565b905b01612794565b5050506001906128f9565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906128e5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f6128d5565b60010161283f565b91810191811c612838565b6004928301921c61282e565b6008928301921c612824565b6010928301921c612819565b505060e084811c90612807565b9080156129d4576129b191611b1d565b620f4240810190818111611a7e57620f423f01908111611a7e57620f4240900490565b50505f90565b919080156129f9576129ef6129f691846129a1565b8093611a71565b90565b505f9190565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612a3d575b1561054257600f0b90565b506f7fffffffffffffffffffffffffffffff811315612a32565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612a3d571561054257600f0b90565b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612a3d571561054257600f0b90565b90600f0b9081156105425760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612a3d571561054257600f0b90565b81156129d457600f0b5f8112610542576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116105425760401b81198111610542570190565b600f0b68400000000000000000811215610542577fffffffffffffffffffffffffffffffffffffffffffffffc000000000000000008112612bd257700171547652b82fe1777d0ffda0d23a7d126129f6910260801d600f0b612bd7565b505f90565b80600f0b68400000000000000000811215610542577fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000081126129d4576f80000000000000000000000000000000915f6780000000000000008216600f0b136137d3575b5f6740000000000000008216600f0b136137b6575b5f6720000000000000008216600f0b13613799575b5f6710000000000000008216600f0b1361377c575b5f6708000000000000008216600f0b1361375f575b5f6704000000000000008216600f0b13613742575b5f6702000000000000008216600f0b13613725575b5f6701000000000000008216600f0b13613708575b5f66800000000000008216600f0b136136eb575b5f66400000000000008216600f0b136136ce575b5f66200000000000008216600f0b136136b1575b5f66100000000000008216600f0b13613694575b5f66080000000000008216600f0b13613677575b5f66040000000000008216600f0b1361365a575b5f66020000000000008216600f0b1361363d575b5f66010000000000008216600f0b13613620575b5f658000000000008216600f0b13613603575b5f654000000000008216600f0b136135e6575b5f652000000000008216600f0b136135c9575b5f651000000000008216600f0b136135ac575b5f650800000000008216600f0b1361358f575b5f650400000000008216600f0b13613572575b5f650200000000008216600f0b13613555575b5f650100000000008216600f0b13613538575b5f6480000000008216600f0b1361351b575b5f6440000000008216600f0b136134fe575b5f6420000000008216600f0b136134e1575b5f6410000000008216600f0b136134c4575b5f6408000000008216600f0b136134a7575b5f6404000000008216600f0b1361348a575b5f6402000000008216600f0b1361346d575b5f6401000000008216600f0b13613450575b5f63800000008216600f0b13613433575b5f63400000008216600f0b13613416575b5f63200000008216600f0b136133f9575b5f63100000008216600f0b136133dc575b5f63080000008216600f0b136133bf575b5f63040000008216600f0b136133a2575b5f63020000008216600f0b13613385575b5f63010000008216600f0b13613368575b5f628000008216600f0b1361334b575b5f624000008216600f0b1361332e575b5f622000008216600f0b13613311575b5f621000008216600f0b136132f4575b5f620800008216600f0b136132d7575b5f620400008216600f0b136132ba575b5f620200008216600f0b1361329d575b5f620100008216600f0b13613280575b5f6180008216600f0b13613263575b5f6140008216600f0b13613246575b5f6120008216600f0b13613229575b5f6110008216600f0b1361320c575b5f6108008216600f0b136131ef575b5f6104008216600f0b136131d2575b5f6102008216600f0b136131b5575b5f6101008216600f0b13613198575b5f60808216600f0b1361317b575b5f60408216600f0b1361315e575b5f60208216600f0b13613141575b5f60108216600f0b13613124575b5f60088216600f0b13613107575b5f60048216600f0b136130ea575b5f60028216600f0b136130cc575b60015f9116600f0b136130af575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161054257600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c90613085565b7001000000000000000162e42fefa39ef35890920260801c91613077565b9170010000000000000002c5c85fdf473de6b20260801c91613069565b91700100000000000000058b90bfbe8e7bcd6d0260801c9161305b565b917001000000000000000b17217f7d1cf79afa0260801c9161304d565b91700100000000000000162e42fefa39ef366f0260801c9161303f565b917001000000000000002c5c85fdf473de6eca0260801c91613031565b9170010000000000000058b90bfbe8e7bce5440260801c91613023565b91700100000000000000b17217f7d1cf79e9490260801c91613015565b9170010000000000000162e42fefa39ef44d910260801c91613006565b91700100000000000002c5c85fdf473dea871f0260801c91612ff7565b917001000000000000058b90bfbe8e7bdcbe2e0260801c91612fe8565b9170010000000000000b17217f7d1cf7d83c1a0260801c91612fd9565b917001000000000000162e42fefa39f02b772c0260801c91612fca565b9170010000000000002c5c85fdf473e242ea380260801c91612fbb565b91700100000000000058b90bfbe8e7cc35c3f00260801c91612fac565b917001000000000000b17217f7d1cfb72b45e10260801c91612f9d565b91700100000000000162e42fefa39fe95583c20260801c91612f8d565b917001000000000002c5c85fdf4741bea6e77e0260801c91612f7d565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c91612f6d565b91700100000000000b17217f7d1d351a389d400260801c91612f5d565b9170010000000000162e42fefa3ae53369388c0260801c91612f4d565b91700100000000002c5c85fdf477b662b269450260801c91612f3d565b917001000000000058b90bfbe8f71cb4e4b33d0260801c91612f2d565b9170010000000000b17217f7d20cf927c8e94c0260801c91612f1d565b917001000000000162e42fefa494f1478fde050260801c91612f0c565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c91612efb565b91700100000000058b90bfbe9ddbac5e109cce0260801c91612eea565b917001000000000b17217f7d5a7716bba4a9ae0260801c91612ed9565b91700100000000162e42fefb2fed257559bdaa0260801c91612ec8565b917001000000002c5c85fdf84bd62ae30a74cc0260801c91612eb7565b9170010000000058b90bfbf8479bd5a81b51ad0260801c91612ea6565b91700100000000b17217f80f4ef5aadda455540260801c91612e95565b9170010000000162e42ff0999ce3541b9fffcf0260801c91612e83565b91700100000002c5c85fe31f35a6a30da1be500260801c91612e71565b917001000000058b90bfcdee5acd3c1cedc8230260801c91612e5f565b9170010000000b17217fba9c739aa5819f44f90260801c91612e4d565b917001000000162e42fff037df38aa2b219f060260801c91612e3b565b9170010000002c5c8601cc6b9e94213c72737a0260801c91612e29565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91612e17565b917001000000b1721835514b86e6d96efd1bfe0260801c91612e05565b91700100000162e430e5a18f6119e3c02282a50260801c91612df2565b917001000002c5c863b73f016468f6bac5ca2b0260801c91612ddf565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91612dcc565b91700100000b1721bcfc99d9f890ea069117630260801c91612db9565b9170010000162e43f4f831060e02d839a9d16d0260801c91612da6565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c91612d93565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c91612d80565b9170010000b17255775c040618bf4a4ade83fc0260801c91612d6d565b917001000162e525ee054754457d59952920260260801c91612d59565b9170010002c5cc37da9491d0985c348c68e7b30260801c91612d45565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91612d31565b917001000b175effdc76ba38e31671ca9397250260801c91612d1d565b91700100162f3904051fa128bca9c55c31e5df0260801c91612d09565b917001002c605e2e8cec506d21bfc89a23a00f0260801c91612cf5565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c91612ce1565b91700100b1afa5abcbed6129ab13ec11dc95430260801c91612ccd565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c91612cb8565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c91612ca3565b917001059b0d31585743ae7c548eb68ca417fd0260801c91612c8e565b9170010b5586cf9890f6298b92b71842a983630260801c91612c79565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c91612c64565b917001306fe0a31b7152de8d5a46305c85edec0260801c91612c4f565b6fb504f333f9de6484597d89b3754abe9f9250612c3a56fea2646970667358221220bcd855312fe832ac7c3b814efb1009a00aa9ab02b83ec77246e3ce037c88990c64736f6c634300081e003360a03461009c57601f61553838819003918201601f19168301916001600160401b038311848410176100a05780849260209460405283398101031261009c57516001600160a01b038116810361009c5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005560805260405161548390816100b58239608051818181612cd6015281816131e7015261343f0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c8063228fa850146124535780633dd3c80514611d5c5780636863f5bc146119a55780638d01fa4414611483578063b3f1c93d14611009578063c5eabfb914610831578063cdc2468b14610803578063e9f317f0146102285763f16b7c261461007c575f80fd5b346102245761008a366125fe565b94919080949394518410156101c657821561016857851561010a576100dc846100d46100e3946100fd976100c360409b6100ea99613689565b9160208151600f0b910151906141fe565b939050612798565b5190612e7c565b9283612c31565b50826100f882809511612abd565b61295c565b9082519182526020820152f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6275726e53776170416d6f756e74733a20656d70747920737570706c790000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6275726e53776170416d6f756e74733a207a65726f206c7000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6275726e53776170416d6f756e74733a206964780000000000000000000000006044820152fd5b5f80fd5b3461022457610236366125fe565b925f9594959291925082518510156107a5578515610747576020820191825151156106e9578115159387856106b8575b61027b906102748984612798565b5190613689565b5f81600f0b13156106345761029e6102a691896102ad9551600f0b88519061397d565b989092612798565b51906141c9565b9081156105b0575f9361055b575b50826102c69161294f565b948515159081610550575b50156104cc5751935f92835b8651851015610308576103006001916102f6878a612798565b51600f0b90612f34565b9401936102dd565b90855f83600f0b131561046e5761032b6103309161032585612e62565b94612f34565b612e62565b91816103c3575050915b82156103655761036190604051938493846040919493926060820195825260208201520152565b0390f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761704d696e74416d6f756e74733a207a65726f204c50206d696e746564006044820152fd5b90918115610410578180821115610407576103dd9161295c565b915b82156103fd576103f7926103f2916127d9565b6127ec565b9161033a565b5050505f9161033a565b50505f916103df565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761704d696e74416d6f756e74733a206f6c645363616c6564207a65726f006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f737761704d696e74416d6f756e74733a207a65726f20746f74616c00000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f737761704d696e74416d6f756e74733a207472616e736665722065786365656460448201527f73206d61780000000000000000000000000000000000000000000000000000006064820152fd5b9050851115866102d1565b816105679294506127d9565b620f423f810180911161058357620f42409004916102c66102bb565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f737761704d696e74416d6f756e74733a20696e707574207a65726f206166746560448201527f7220696e7465726e616c20636f6e76657273696f6e00000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f737761704d696e74416d6f756e74733a20696e70757420746f6f20736d616c6c60448201527f20616674657220666565000000000000000000000000000000000000000000006064820152fd5b506106c383896127d9565b620f423f8101809111610583576106e2620f424061027b92048a61295c565b9050610266565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f737761704d696e74416d6f756e74733a20756e696e697420706f6f6c000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f737761704d696e74416d6f756e74733a20696e707574207a65726f00000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f737761704d696e74416d6f756e74733a206964780000000000000000000000006044820152fd5b346102245761036161081d61081736612523565b91612b22565b604051918291602083526020830190612577565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610224576108636125aa565b602435906044359081600f0b82036102245761088460ff600854161561288a565b61088c612bba565b600b5490600354158015610fff575b15610f7b576108a982612749565b936108b383612749565b925f5b818110610d54575050600a548551809103610b5e575b505f5b855181101561092457806108e560019288612798565b51600f0b61091c6108f5836129fd565b81939154906fffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b9055016108cf565b50835f610937610932612969565b612e37565b600f0b1315610b00577fffffffffffffffffffffffffffffffff0000000000000000000000000000000060095416906fffffffffffffffffffffffffffffffff16176009555f600954600f0b1315610aa25780610a7757507f6bc0553967b8bb727947c938555c0e061c3f96b629935c8f82a43b558dfb1c576109f3670de0b6b3a7640000935b84610a68575b73ffffffffffffffffffffffffffffffffffffffff6040519283925f8452606060208501526060840190612577565b9486604084015216930390a260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015610a38575b602083604051908152f35b5f80809381938290610a5f575b3390f115610a54578180610a2d565b6040513d5f823e3d90fd5b506108fc610a45565b610a72858561312a565b6109c4565b6109f37f6bc0553967b8bb727947c938555c0e061c3f96b629935c8f82a43b558dfb1c5791936109be565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4c4d53523a206b617070613e30000000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4c4d53523a20746f74616c207a65726f000000000000000000000000000000006044820152fd5b610b6790612749565b80519067ffffffffffffffff8211610d2757680100000000000000008211610d2757600a5482600a55808310610c90575b5060200190600a5f5260205f208160011c915f5b838110610c4257507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8116900380610be7575b5050506108cc565b925f935f5b818110610c0157505050015585808080610bdf565b9091946020610c386001928851600f0b908560041b6fffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b9601929101610bec565b5f5f5b60028110610c5a575083820155600101610bac565b86519096916001916020916fffffffffffffffffffffffffffffffff60078b901b81811b199092169216901b1792019601610c45565b600a5f5260205f206001808501811c8201920160011c019060108460041b1680610ccf575b505b818110610cc45750610b98565b5f8155600101610cb7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82549160200360031b1c16905589610cb5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6024602073ffffffffffffffffffffffffffffffffffffffff610d7684612907565b90549060031b1c16604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa908115610a54575f91610f4a575b508015610ec65780610e3b91610dd48489612798565b52610e1881610de285612937565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b610e2581610de2856128ef565b610e2e836128ef565b90549060031b1c90613689565b610e458289612798565b90600f0b90525f610e568289612798565b51600f0b1315610e68576001016108b6565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f696e697469616c4d696e743a207a65726f20696e7465726e616c2071000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f696e697469616c4d696e743a207a65726f20696e697469616c2062616c616e6360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152fd5b90506020813d8211610f73575b81610f646020938361246d565b81010312610224575188610dbe565b3d9150610f57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f696e697469616c4d696e743a20706f6f6c20616c726561647920696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152fd5b50600a541561089b565b60807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102245761103b6125aa565b6110436125cd565b906044359160643561105a60ff600854161561288a565b611062612bba565b8015908115611478575b501561141a57600b5460035480158015611410575b61138c57841561132e576110ac61109c61032b610932612969565b916110a5612a3d565b9087612b22565b915f5b8181106112d557506110c081612749565b905f5b81811061128857505061032b816109326110dc93613047565b818082111561127f576110ee9161295c565b905b8115611276576103f2611105926003546127d9565b935b8415611218576201869f81029081046201869f0361058357620186a0900484106111ba578161117f8573ffffffffffffffffffffffffffffffffffffffff93611171827f6bc0553967b8bb727947c938555c0e061c3f96b629935c8f82a43b558dfb1c579761312a565b604051948594169684612a85565b0390a260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015610a3857602083604051908152f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6d696e743a20696e73756666696369656e74204c50206d696e746564000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6d696e743a207a65726f204c50206d696e7465640000000000000000000000006044820152fd5b50505f93611107565b50505f906110f0565b806112bf6112b261129a600194612937565b90549060031b1c6112ab848a612798565b519061294f565b610e2581610de285612937565b6112c98286612798565b90600f0b9052016110c3565b806112e260019286612798565b516112ee575b016110af565b61132973ffffffffffffffffffffffffffffffffffffffff61130f83612907565b90549060031b1c166113218388612798565b519089612cbe565b6112e8565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6d696e743a207a65726f204c5020616d6f756e740000000000000000000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f6d696e743a2075736520696e697469616c4d696e7420666f7220706f6f6c206960448201527f6e697469616c697a6174696f6e000000000000000000000000000000000000006064820152fd5b50600a5415611081565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f6d696e743a20646561646c696e652065786365656465640000000000000000006044820152fd5b90504211158461106c565b34610224576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610224576114bb6125aa565b6114c36125cd565b9060443591606435916084359360a4359182151583036102245760e435936114e9612bba565b6114f860ff600854161561288a565b600b5496878710156119475783156118e95780159081156118de575b5015611880576003548015611822576115486115336115609286613689565b88600954600f0b611542612969565b906141fe565b9050611553886128ef565b90549060031b1c90612e7c565b9461157e61157060c43588612c31565b50876100f882809a11612abd565b965f9180151580611819575b6117a5575b506115b88573ffffffffffffffffffffffffffffffffffffffff861695863303611760576135b1565b6115ea73ffffffffffffffffffffffffffffffffffffffff6115d983612907565b90549060031b1c16968985896131c1565b6115f389612749565b905f5b8a81106117075750506001985f5b8181106116ca575b50509161168973ffffffffffffffffffffffffffffffffffffffff927f8c012c6148e8ecc34b864721470dcc1e938d162c498b7d28961a8a78238cfe139460409b5f146116bc575061165c61347c565b611666818a61295c565b8b51978852602088018b9052604088015260608701529116939081906080820190565b0390a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005582519182526020820152f35b6116c590613047565b61165c565b6116d48184612798565b51600f0b6116e457600101611604565b505f9950611689905073ffffffffffffffffffffffffffffffffffffffff61160c565b80611736611716600193612937565b90549060031b1c868d86851461174c575b5050610e2581610de285612937565b6117408286612798565b90600f0b9052016115f6565b6100f8906117599361295c565b868d611727565b865f52600260205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f526020526117a06117998360405f205461295c565b33836134dc565b6135b1565b620f42409192506117b690886127d9565b0490816117c4575b8961158f565b6118146117d08261291f565b6117e08583548360031b1c61294f565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b6117be565b5087151561158a565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6275726e537761703a20656d70747920737570706c79000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6275726e537761703a20646561646c696e6500000000000000000000000000006044820152fd5b905042111588611514565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6275726e537761703a207a65726f206c700000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6275726e537761703a20696478000000000000000000000000000000000000006044820152fd5b346102245760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610224576119dc6125aa565b6119e46125cd565b6084359160443591606435841515850361022457611a00612bba565b8015908115611d51575b5015611cf357600b54928015611c95576003548015611c3757611a3990611a32969596612a3d565b9083612823565b935f5b868110611bd8575050611a4e85612749565b5f5b868110611b9257506001955f5b818110611b55575b505091611adb73ffffffffffffffffffffffffffffffffffffffff927f3f84ed8aa11ed632de380466083280b4c5da668f12695b08636d7848eaf896b494610361985f14611b475750611ab661347c565b838616803303611b16575b50611acc81876135b1565b86604051948594169684612a85565b0390a260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055604051918291602083526020830190612577565b5f52600260205260405f208433165f52602052611b41611b3a8260405f205461295c565b33886134dc565b88611ac1565b611b5090613047565b611ab6565b611b5f8184612798565b51600f0b611b6f57600101611a5d565b505f9650611adb905073ffffffffffffffffffffffffffffffffffffffff611a65565b80611bbf6112b2611ba76001949a999a612937565b90549060031b1c611bb8848c612798565b519061295c565b611bc98285612798565b90600f0b905201959495611a50565b80611be7600192889998612798565b51611bf6575b01959495611a3c565b611c328373ffffffffffffffffffffffffffffffffffffffff611c1884612907565b90549060031b1c1687611c2b858d612798565b51916131c1565b611bed565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6275726e3a20656d70747920737570706c7900000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6275726e3a207a65726f206c70000000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f6275726e3a20646561646c696e652065786365656465640000000000000000006044820152fd5b905042111585611a0a565b60e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022457611d8e6125aa565b611d966125cd565b604435606435916084359360a4359360c43592611db860ff600854161561288a565b611dc0612bba565b600b5496878610156123f557821561239757801590811561238c575b501561232e57600a54156122d057611e02611df78784612c31565b9050610e2e876128ef565b945f86600f0b131561224c57611e2a611e429682600954600f0b611e24612969565b9061397d565b9690611e35836128ef565b90549060031b1c90612c53565b9687156121c857611e539088612c85565b95611e5e878961294f565b9384151590816121bd575b501561215f57611e9f8473ffffffffffffffffffffffffffffffffffffffff611e9185612907565b90549060031b1c1687612cbe565b5f9580151580612156575b612116575b50611ed8611ebd878661295c565b6117e0611ec985612937565b91909283548360031b1c61294f565b611ee3610932612969565b98611ef7611ef08b612e62565b928b612f34565b91611f0183612e62565b6003549091816120d4575050995b8a1561207657611f1e82612749565b925f5b838110612038575050505091611fbf73ffffffffffffffffffffffffffffffffffffffff611f838194611f747fcbf41a060d7827197acec8e5ef3abf36d633e77060f7aec03943608d1cd84ebe97613047565b611f7e8d8661312a565b612907565b90549060031b1c1696611f96818a61295c565b8b8560405196879616991697859094939260609260808301968352602083015260408201520152565b0390a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015612013575b505061036190604051938493846040919493926060820195825260208201520152565b5f8080938193829061202f575b3390f115610a54578380611ff0565b506108fc612020565b806120608461205b8561204c6001966129fd565b90549060031b1c600f0b612f71565b613001565b61206a8288612798565b90600f0b905201611f21565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f737761704d696e743a207a65726f204c50206d696e74656400000000000000006044820152fd5b9091818082111561210d576120e89161295c565b915b8215612103576120fd926103f2916127d9565b99611f0f565b5050505f99611f0f565b50505f916120ea565b620f424091965061212790886127d9565b049485612135575b89611eaf565b6121516121418361291f565b6117e08983548360031b1c61294f565b61212f565b50871515611eaa565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f737761704d696e743a207472616e736665722065786365656473206d617800006044820152fd5b90508411158a611e69565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f737761704d696e743a20696e707574207a65726f20616674657220696e74657260448201527f6e616c20636f6e76657273696f6e0000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f737761704d696e743a20696e70757420746f6f20736d616c6c2061667465722060448201527f66656500000000000000000000000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f737761704d696e743a20756e696e697420706f6f6c00000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f737761704d696e743a20646561646c696e6500000000000000000000000000006044820152fd5b905042111588611ddc565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f737761704d696e743a20696e707574207a65726f0000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f737761704d696e743a20696478000000000000000000000000000000000000006044820152fd5b346102245761036161081d61246736612523565b91612823565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610d2757604052565b67ffffffffffffffff8111610d275760051b60200190565b9080601f830112156102245781356124dd816124ae565b926124eb604051948561246d565b81845260208085019260051b82010192831161022457602001905b8282106125135750505090565b8135815260209182019101612506565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102245760043591602435916044359067ffffffffffffffff821161022457612574916004016124c6565b90565b90602080835192838152019201905f5b8181106125945750505090565b8251845260209384019390920191600101612587565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361022457565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361022457565b359081600f0b820361022457565b60c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102245760043591602435916044359160643567ffffffffffffffff81116102245760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc828503011261022457604051906040820182811067ffffffffffffffff821117610d275760405261269c816004016125f0565b825260248101359067ffffffffffffffff8211610224570183602382011215610224576004810135906126ce826124ae565b916126dc604051938461246d565b808352602060048185019260051b840101019186831161022457602401905b828210612731575050506020820152916084359067ffffffffffffffff82116102245761272a916004016124c6565b9060a43590565b6020809161273e846125f0565b8152019101906126fb565b90612753826124ae565b612760604051918261246d565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061278e82946124ae565b0190602036910137565b80518210156127ac5760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8181029291811591840414171561058357565b81156127f6570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b9082519161283083612749565b9382158015612882575b61287b575f5b84811061284f57505050505090565b8061286a856103f261286360019587612798565b51876127d9565b6128748289612798565b5201612840565b5050505090565b50831561283a565b1561289157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b600d548110156127ac57600d5f5260205f2001905f90565b600b548110156127ac57600b5f5260205f2001905f90565b600c548110156127ac57600c5f5260205f2001905f90565b600f548110156127ac57600f5f5260205f2001905f90565b9190820180921161058357565b9190820391821161058357565b60405190600a548083528260208101600a5f5260205f20925f905b8060018301106129d1576129aa9454918181106129bd575b106129ac575b50038361246d565b565b60801d600f0b81526020015f6129a2565b92602060019184600f0b815201930161299c565b9160029193506040600191865480600f0b825260801d600f0b6020820152019401920185929391612984565b90600a548210156127ac57600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b60405190600f548083528260208101600f5f5260205f20925f5b818110612a6c5750506129aa9250038361246d565b8454835260019485019487945060209093019201612a57565b939291612ab89073ffffffffffffffffffffffffffffffffffffffff604093168652606060208701526060860190612577565b930152565b15612ac457565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6275726e53776170416d6f756e74733a206f7574707574207a65726f000000006044820152fd5b825190612b2e82612749565b9383158015612bb2575b61287b575f5b838110612b4d57505050505090565b612b6a85612b65612b5e8486612798565b51866127d9565b61294f565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820191821161058357612ba1866001936127ec565b612bab8289612798565b5201612b3e565b508215612b38565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005414612c095760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b91908015612c4d57612c466125749184612c85565b809361295c565b505f9190565b612c67612c608383612e7c565b9283613689565b90600f0b90600f0b12612c775790565b600181018091116105835790565b908015612cb857612c95916127d9565b620f424081019081811161058357620f423f0190811161058357620f4240900490565b50505f90565b9073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169173ffffffffffffffffffffffffffffffffffffffff82169183831480612e2d575b15612d6e57505050803b15610224575f906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af18015610a5457612d645750565b5f6129aa9161246d565b919390925073ffffffffffffffffffffffffffffffffffffffff604051937f23b872dd000000000000000000000000000000000000000000000000000000005f52166004523060245260445260205f60648180855af19060015f5114821615612e0e575b50906040525f60605215612de35750565b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6001821516612e24573b15153d1516165f612dd2565b823d5f823e3d90fd5b5084341015612d18565b5f90815b8151831015612e5c57612e546001916102f68585612798565b920191612e3b565b91505090565b600f0b5f811261022457670de0b6b3a76400000260401c90565b8115612cb857600f0b5f8112610224576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116102245760401b81198111610224570190565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a575b1561022457600f0b90565b506f7fffffffffffffffffffffffffffffff811315612f0f565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b600f0b801561022457700100000000000000000000000000000000057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b90600f0b9081156102245760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b5f61305182612e37565b600f0b13156130cc578051600a915f5b82811061306e5750505050565b6130788183612798565b51600f0b9084548110156127ac57600191855f526130c460205f2083851c019160108460041b168354906fffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b905501613061565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a206e657720746f74616c207a65726f0000000000000000000000006044820152fd5b73ffffffffffffffffffffffffffffffffffffffff16908115613195577fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6020826131785f9460035461294f565b6003558484526001825260408420818154019055604051908152a3565b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b90919280613427575b1561335d575073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b15610224576040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081525f816024818380978960048401525af18015610a5457613348575b508180809481935af1903d15613342573d9067ffffffffffffffff821161331557604051916132a760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116018461246d565b825260203d92013e5b156132b757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526041600452fd5b506132b0565b6133559192505f9061246d565b5f905f613250565b9173ffffffffffffffffffffffffffffffffffffffff604051927fa9059cbb000000000000000000000000000000000000000000000000000000005f521660045260245260205f60448180865af19060015f5114821615613406575b604052156133c45750565b73ffffffffffffffffffffffffffffffffffffffff907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b90600181151661341e57823b15153d151616906133b9565b503d5f823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8216146131ca565b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000060095416600955600a545f600a55806134b35750565b600a5f52600160205f20910160011c8101905b8181106134d1575050565b5f81556001016134c6565b73ffffffffffffffffffffffffffffffffffffffff169081156135855773ffffffffffffffffffffffffffffffffffffffff169182156135595760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591835f526002825260405f20855f5282528060405f2055604051908152a3565b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b90919073ffffffffffffffffffffffffffffffffffffffff16801561365d57805f52600160205260405f205483811061362a576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef93858752600184520360408620558060035403600355604051908152a3565b91507fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b81156102245777ffffffffffffffffffffffffffffffffffffffffffffffff811161370157906136bb9160401b6127ec565b6fffffffffffffffffffffffffffffffff8111610224576fffffffffffffffffffffffffffffffff166f7fffffffffffffffffffffffffffffff811161022457600f0b90565b60c09181831c80936401000000008210156138a6575b600282620100006137a494101561389a575b61010081101561388e575b6010811015613882575b6004811015613877575b101561386f575b8360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b6127ec565b926fffffffffffffffffffffffffffffffff8411610224578160801c8402906fffffffffffffffffffffffffffffffff8316850290809460401b90828210613845575b5003928160801b9182851061381c575b60801c036138115761380992036127ec565b905b016136bb565b50505060019061380b565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906137f7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f6137e7565b60010161374f565b91810191811c613748565b6004928301921c61373e565b6008928301921c613734565b6010928301921c613729565b505060e082811c90613717565b156138ba57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b1561391f57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4c4d53523a20623c3d30000000000000000000000000000000000000000000006044820152fd5b90919392938251928382101561416b575f86600f0b131561410d576139a181612e37565b936139bb855f81600f0b13956139b6876138b3565b612f71565b906139ca5f83600f0b13613918565b6139d382612fb1565b916139dd82612749565b955f5b8381106140c357506510c6f7a0b5ed905f901561406557613a01898c613001565b916801000000000000000083600f0b12614054575b5f5b60408110613e39575b505f9b5f935b60408510613c09575b50505050505f955f935f5b848110613b05575b5050505050613af95791613a6b613a61613a7093613a769695612798565b51600f0b87612f71565b612f34565b93612f71565b915f83600f0b13801590613aec575b613a8d579190565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4c4d53523a207a65726f206f75747075740000000000000000000000000000006044820152606490fd5b505f81600f0b1315613a85565b5050505090505f905f90565b878103613b15575b600101613a3b565b613b2c613b228289612798565b51600f0b8d612f71565b5f81600f0b13613b3d575b50613b0d565b82613b4a919a929a612f71565b6820000000000000000081600f0b13613bf557613b69613b84916146aa565b613b7f613b768c87612798565b51600f0b612ed7565b614655565b5f81600f0b1315613bf557613ba690613b9d8b86612798565b51600f0b613001565b5f81600f0b1315613bf557613bbd613bc39161470c565b85612f71565b905f82600f0b12613be157600191613bda91612f34565b9890613b37565b985050505050505060015f80808080613a43565b509750505050505060015f80808080613a43565b68020000000000000000613c1d8286612f34565b60401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613e1f575b1561022457600f0b90898c8c5f915f905f905b8d8210613d01575b505015613ce2575050506f7fffffffffffffffffffffffffffffff5b83600f0b90600f0b135f14613cd95750935b82613ca28587614655565b600f0b1315613cc757603f8114613cbd575b60010193613a27565b929c508c92613cb4565b50505091995050975f80808080613a30565b94935092613c97565b613cf2613a6b91613cfc94612798565b51600f0b85612f71565b613c85565b9092839592949503613d1f575b50506001018c92918f918f92613c61565b8d613d37613d2d8585612798565b51600f0b89612f71565b5f81600f0b13613d49575b5050613d0e565b90613d5691969496612f71565b6820000000000000000081600f0b13613e0f57613d75613d82916146aa565b613b7f613b768885612798565b915f83600f0b1315613dff575090613b9d85613d9d93612798565b8d5f82600f0b1315613df05750613db6613dbc9161470c565b8b612f71565b908d5f83600f0b12613de15750600191613dd591612f34565b9290508c8f8d5f613d42565b93509150508c60018f80613c69565b93505090508c60018f80613c69565b9450505090508c60018f80613c69565b5050925090508c60018f80613c69565b506f7fffffffffffffffffffffffffffffff811315613c4e565b925f5f5f5b888110613f36575b5015613f1657506f7fffffffffffffffffffffffffffffff5b8d600f0b90600f0b12801590613efe575b613ef857600f0b60411b60401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613ede575b1561022457600f0b926a10000000000000000000008413613ecb575b600101613a18565b6a10000000000000000000009350613ec3565b506f7fffffffffffffffffffffffffffffff811315613ea7565b92613a21565b506a100000000000000000000081600f0b1215613e70565b613f3190613a6b613f278c8c612798565b51600f0b84612f71565b613e5f565b839e9c9a98969f9d9b9980989695948b8303613f65575b50506001019e9597999b9d92939496989a9c9e613e3e565b613f7d90613f73848d612798565b51600f0b90612f71565b5f81600f0b13613f8f575b508f613f4d565b90613f9c91949294612f71565b6820000000000000000081600f0b1361403a578b613b7f613b7686613fc3613fc9956146aa565b93612798565b5f81600f0b131561403a57613fe290613b9d858e612798565b5f81600f0b131561403a57613ff9613fff9161470c565b87612f71565b905f82600f0b126140205760019161401691612f34565b929050875f613f88565b9250505060019d9496989a9c9192939597999b9d5f613e46565b5091505060019d9496989a9c9192939597999b9d5f613e46565b680100000000000000009250613a16565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4c4d53523a20737761704d696e7420646567656e6572617465000000000000006044820152fd5b6001906140f76140f2876139b66140da8c8c612798565b51600f0b6140e8868d612798565b51600f0b90614655565b6146aa565b614101828b612798565b90600f0b9052016139e0565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4c4d53523a20616d6f756e74203c3d20300000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4c4d53523a2069647800000000000000000000000000000000000000000000006044820152fd5b6141ee6141df6141d98484612e7c565b93614692565b6141e884614692565b92612f71565b90600f0b90600f0b13612c775790565b93919383600f0b5f8113156145b55768010000000000000000126145575761423861422883612e37565b80926139b65f83600f0b136138b3565b906142475f83600f0b13613918565b61425082612fb1565b61425c84519287612f71565b9661426683612749565b935f5b84811061451e575061427e613d2d8388612798565b975f89600f0b13965f5b8681106142b25750505050505050501580156142a5575b613a8d57565b505f82600f0b131561429f565b8481036142c5575b600101955b95614288565b6142d2613f278284612798565b5f81600f0b136142e3575b506142ba565b6142f387829d949d9b939b612f71565b9182600f0b926820000000000000000084136144f2577fffffffffffffffffffffffffffffffff8000000000000000000000000000000061434e6140f28b8f8f6140e88e6143446139b69484612798565b51600f0b92612798565b94146102245761436d614368614373925f03600f0b6146aa565b614613565b84612f71565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580614504575b1561022457600f0b5f8113156144f257613ff96143c79161470c565b9288888c6143d58282612798565b51600f0b87600f0b1361444a576144049450614440979593506143fb92508e9150612798565b51600f0b612f34565b61440e8b8b612798565b90600f0b905261442b82614422888c612798565b51600f0b614655565b614435878b612798565b90600f0b9052612f34565b98600197886142dd565b61447694965061446d9395506140f2929161446491612798565b51600f0b612f71565b613b7f83612ed7565b915f83600f0b13156144e157506144a561449f61449a6144c995946144af94613001565b61470c565b86612f71565b6143fb8b8b612798565b6144b98a8a612798565b90600f0b90526102f68589612798565b985f6144d58589612798565b526001809801956142bf565b999050600191509a919a01956142bf565b50999050600191509a919a01956142bf565b506f7fffffffffffffffffffffffffffffff8113156143ab565b8061454161452e6001938a612798565b51600f0b61453b8c614613565b90612f71565b61454b8289612798565b90600f0b905201614269565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4275726e20746f6f206c617267650000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4275726e20746f6f20736d616c6c0000000000000000000000000000000000006044820152fd5b600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b677fffffffffffffff81116102245760401b600f0b90565b600f0b68400000000000000000811215610224577fffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000811261470757700171547652b82fe1777d0ffda0d23a7d12612574910260801d600f0b614839565b505f90565b600f0b5f811315610224575f90806801000000000000000082121561482c575b806401000000006002921215614820575b62010000811215614814575b610100811215614808575b60108112156147fc575b60048112156147f1575b12156147e7575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f83136147cb57506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d90565b8002908160ff1c9182607f011c918302019160011d91906147a6565b906001019061476f565b92810192811d614768565b6004938401931d61475e565b6008938401931d614754565b6010938401931d614749565b6020938401931d61473d565b506040915080821d61472c565b80600f0b68400000000000000000811215610224577fffffffffffffffffffffffffffffffffffffffffffffffc000000000000000008112612cb8576f80000000000000000000000000000000915f6780000000000000008216600f0b13615435575b5f6740000000000000008216600f0b13615418575b5f6720000000000000008216600f0b136153fb575b5f6710000000000000008216600f0b136153de575b5f6708000000000000008216600f0b136153c1575b5f6704000000000000008216600f0b136153a4575b5f6702000000000000008216600f0b13615387575b5f6701000000000000008216600f0b1361536a575b5f66800000000000008216600f0b1361534d575b5f66400000000000008216600f0b13615330575b5f66200000000000008216600f0b13615313575b5f66100000000000008216600f0b136152f6575b5f66080000000000008216600f0b136152d9575b5f66040000000000008216600f0b136152bc575b5f66020000000000008216600f0b1361529f575b5f66010000000000008216600f0b13615282575b5f658000000000008216600f0b13615265575b5f654000000000008216600f0b13615248575b5f652000000000008216600f0b1361522b575b5f651000000000008216600f0b1361520e575b5f650800000000008216600f0b136151f1575b5f650400000000008216600f0b136151d4575b5f650200000000008216600f0b136151b7575b5f650100000000008216600f0b1361519a575b5f6480000000008216600f0b1361517d575b5f6440000000008216600f0b13615160575b5f6420000000008216600f0b13615143575b5f6410000000008216600f0b13615126575b5f6408000000008216600f0b13615109575b5f6404000000008216600f0b136150ec575b5f6402000000008216600f0b136150cf575b5f6401000000008216600f0b136150b2575b5f63800000008216600f0b13615095575b5f63400000008216600f0b13615078575b5f63200000008216600f0b1361505b575b5f63100000008216600f0b1361503e575b5f63080000008216600f0b13615021575b5f63040000008216600f0b13615004575b5f63020000008216600f0b13614fe7575b5f63010000008216600f0b13614fca575b5f628000008216600f0b13614fad575b5f624000008216600f0b13614f90575b5f622000008216600f0b13614f73575b5f621000008216600f0b13614f56575b5f620800008216600f0b13614f39575b5f620400008216600f0b13614f1c575b5f620200008216600f0b13614eff575b5f620100008216600f0b13614ee2575b5f6180008216600f0b13614ec5575b5f6140008216600f0b13614ea8575b5f6120008216600f0b13614e8b575b5f6110008216600f0b13614e6e575b5f6108008216600f0b13614e51575b5f6104008216600f0b13614e34575b5f6102008216600f0b13614e17575b5f6101008216600f0b13614dfa575b5f60808216600f0b13614ddd575b5f60408216600f0b13614dc0575b5f60208216600f0b13614da3575b5f60108216600f0b13614d86575b5f60088216600f0b13614d69575b5f60048216600f0b13614d4c575b5f60028216600f0b13614d2e575b60015f9116600f0b13614d11575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161022457600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c90614ce7565b7001000000000000000162e42fefa39ef35890920260801c91614cd9565b9170010000000000000002c5c85fdf473de6b20260801c91614ccb565b91700100000000000000058b90bfbe8e7bcd6d0260801c91614cbd565b917001000000000000000b17217f7d1cf79afa0260801c91614caf565b91700100000000000000162e42fefa39ef366f0260801c91614ca1565b917001000000000000002c5c85fdf473de6eca0260801c91614c93565b9170010000000000000058b90bfbe8e7bce5440260801c91614c85565b91700100000000000000b17217f7d1cf79e9490260801c91614c77565b9170010000000000000162e42fefa39ef44d910260801c91614c68565b91700100000000000002c5c85fdf473dea871f0260801c91614c59565b917001000000000000058b90bfbe8e7bdcbe2e0260801c91614c4a565b9170010000000000000b17217f7d1cf7d83c1a0260801c91614c3b565b917001000000000000162e42fefa39f02b772c0260801c91614c2c565b9170010000000000002c5c85fdf473e242ea380260801c91614c1d565b91700100000000000058b90bfbe8e7cc35c3f00260801c91614c0e565b917001000000000000b17217f7d1cfb72b45e10260801c91614bff565b91700100000000000162e42fefa39fe95583c20260801c91614bef565b917001000000000002c5c85fdf4741bea6e77e0260801c91614bdf565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c91614bcf565b91700100000000000b17217f7d1d351a389d400260801c91614bbf565b9170010000000000162e42fefa3ae53369388c0260801c91614baf565b91700100000000002c5c85fdf477b662b269450260801c91614b9f565b917001000000000058b90bfbe8f71cb4e4b33d0260801c91614b8f565b9170010000000000b17217f7d20cf927c8e94c0260801c91614b7f565b917001000000000162e42fefa494f1478fde050260801c91614b6e565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c91614b5d565b91700100000000058b90bfbe9ddbac5e109cce0260801c91614b4c565b917001000000000b17217f7d5a7716bba4a9ae0260801c91614b3b565b91700100000000162e42fefb2fed257559bdaa0260801c91614b2a565b917001000000002c5c85fdf84bd62ae30a74cc0260801c91614b19565b9170010000000058b90bfbf8479bd5a81b51ad0260801c91614b08565b91700100000000b17217f80f4ef5aadda455540260801c91614af7565b9170010000000162e42ff0999ce3541b9fffcf0260801c91614ae5565b91700100000002c5c85fe31f35a6a30da1be500260801c91614ad3565b917001000000058b90bfcdee5acd3c1cedc8230260801c91614ac1565b9170010000000b17217fba9c739aa5819f44f90260801c91614aaf565b917001000000162e42fff037df38aa2b219f060260801c91614a9d565b9170010000002c5c8601cc6b9e94213c72737a0260801c91614a8b565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91614a79565b917001000000b1721835514b86e6d96efd1bfe0260801c91614a67565b91700100000162e430e5a18f6119e3c02282a50260801c91614a54565b917001000002c5c863b73f016468f6bac5ca2b0260801c91614a41565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91614a2e565b91700100000b1721bcfc99d9f890ea069117630260801c91614a1b565b9170010000162e43f4f831060e02d839a9d16d0260801c91614a08565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c916149f5565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c916149e2565b9170010000b17255775c040618bf4a4ade83fc0260801c916149cf565b917001000162e525ee054754457d59952920260260801c916149bb565b9170010002c5cc37da9491d0985c348c68e7b30260801c916149a7565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91614993565b917001000b175effdc76ba38e31671ca9397250260801c9161497f565b91700100162f3904051fa128bca9c55c31e5df0260801c9161496b565b917001002c605e2e8cec506d21bfc89a23a00f0260801c91614957565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c91614943565b91700100b1afa5abcbed6129ab13ec11dc95430260801c9161492f565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c9161491a565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c91614905565b917001059b0d31585743ae7c548eb68ca417fd0260801c916148f0565b9170010b5586cf9890f6298b92b71842a983630260801c916148db565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c916148c6565b917001306fe0a31b7152de8d5a46305c85edec0260801c916148b1565b6fb504f333f9de6484597d89b3754abe9f925061489c56fea2646970667358221220467f854c2026e7b4a953423ce7e4a2a365f7727509b2ab675bcdc27887fb74c664736f6c634300081e003360808060405234601557615896908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c636ae73ce314610024575f80fd5b34610373576101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103735760043573ffffffffffffffffffffffffffffffffffffffff81168091036103735760243567ffffffffffffffff8111610373576100959036906004016103f8565b9060443567ffffffffffffffff8111610373576100b69036906004016103f8565b6064359067ffffffffffffffff82116103735736602383011215610373578160040135916100eb6100e684610468565b6103b4565b9060208285815201906024829560051b8201019036821161037357602401915b8183106103875750505060843580600f0b8091036103735760a43567ffffffffffffffff81116103735736602382011215610373578060040135946101526100e687610468565b91602083888152016024819860051b8301019136831161037357602401905b82821061037757505050610104359173ffffffffffffffffffffffffffffffffffffffff831680930361037357610124359373ffffffffffffffffffffffffffffffffffffffff851680950361037357610144359573ffffffffffffffffffffffffffffffffffffffff871680970361037357610164359773ffffffffffffffffffffffffffffffffffffffff8916809903610373576040519b8c9b8c9261539d8094019e8f9081109067ffffffffffffffff1017610346576102528f92938f94602096610260966104c49039845261018086850152610180840190610480565b916040818403910152610480565b8c810360608e01529151808352910193905f5b81811061031a575050509060209160808b015289830360a08b015251918281520195905f5b81811061030457505050918596916101609360c43560c085015260e43560e0850152610100840152610120830152610140820152015203905ff080156102f95760209073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b6040513d5f823e3d90fd5b8251885260209788019790920191600101610298565b825173ffffffffffffffffffffffffffffffffffffffff16865260209586019590920191600101610273565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f80fd5b8135815260209182019101610171565b823573ffffffffffffffffffffffffffffffffffffffff811681036103735781526020928301920161010b565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff82111761034657604052565b81601f820112156103735780359067ffffffffffffffff82116103465761044660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116016103b4565b928284526020838301011161037357815f926020809301838601378301015290565b67ffffffffffffffff81116103465760051b60200190565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f858286010152011601019056fe610140604052346106ee5761539d8038038061001a81610a6a565b9283398101610180828203126106ee5761003382610a8f565b60208301516001600160401b0381116106ee5782610052918501610aa3565b60408401519091906001600160401b0381116106ee5783610074918601610aa3565b60608501519094906001600160401b0381116106ee5781019284601f850112156106ee578351956100ac6100a788610af4565b610a6a565b9460208689815201906020829960051b820101908882116106ee57602001915b818310610a4a57505050608083015180600f0b81036106ee5760a08401516001600160401b0381116106ee5784019680601f890112156106ee5787516101146100a782610af4565b986020808b848152019260051b8201019283116106ee57602001905b828210610a3a5750505060c08401519760e0850151926101536101008701610a8f565b610120870151979095906001600160a01b03891689036106ee57610140880151976001600160a01b03891689036106ee576101600151986001600160a01b038a168a036106ee5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00556080526001600160a01b03168015610a27575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a38051906001600160401b0382116106335760045490600182811c92168015610a1d575b60208310146109405781601f8493116109cf575b50602090601f8311600114610969575f9261095e575b50508160011b915f199060031b1c1916176004555b8051906001600160401b0382116106335760055490600182811c92168015610954575b60208310146109405781601f849311610904575b50602090601f831160011461089e575f92610893575b50508160011b915f199060031b1c1916176005555b60018751111561084e578651906001600160401b0382116106335768010000000000000000821161063357600b5482600b55808310610814575b50600b5f5260205f205f5b8381106107f7575050505060a05285518551036107be5761033a8651610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600654836006558084106107a2575b500160065f5260205f205f5b83811061078e57505050505f5b86518110156104185761271061039c8289610b49565b5110156103e1576103ad8188610b49565b51906006548110156103cd5760019160065f528160205f20015501610386565b634e487b7160e01b5f52603260045260245ffd5b60405162461bcd60e51b815260206004820152600f60248201526e506f6f6c3a20666565203e3d20312560881b6044820152606490fd5b50866127108110156107495760c05262061a8081101561070457801580156106f2575b156106ee5760e052601080546001600160a01b0319166001600160a01b039290921691909117905561012052610100528051905f5b8281106106a7578261048181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600d5483600d5580841061068b575b5001600d5f5260205f205f5b83811061067757846104d181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600f5483600f5580841061065b575b5001600f5f5260205f205f5b8381106106475761052085610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600c5483600c55808410610617575b500190600c5f5260205f20915f5b8281106106035760405161483f9081610b5e8239608051818181611abd01528181611d0e0152818161206101526125bf015260a051818181610f130152610f7f015260c05181818161134801526116a6015260e0518181816105ac01528181610c550152818161105d0152818161136e015281816114be0152611b9701526101005181818161031701526105f70152610120518181816108050152610a720152f35b600190602083519301928186015501610561565b61062d90600c5f5284845f209182019101610b0b565b83610553565b634e487b7160e01b5f52604160045260245ffd5b600190602084519401938184015501610510565b61067190600f5f5284845f209182019101610b0b565b84610504565b6001906020845194019381840155016104c0565b6106a190600d5f5284845f209182019101610b0b565b846104b4565b60018101908181116106da576001600160a01b03906106c69084610b49565b51165f52600e6020528060405f2055610470565b634e487b7160e01b5f52601160045260245ffd5b5f80fd5b506001600160a01b038216151561043b565b60405162461bcd60e51b815260206004820152601960248201527f506f6f6c3a2070726f746f636f6c20666565203e3d20343025000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601560248201527f506f6f6c3a20666c61736820666565203e3d20312500000000000000000000006044820152606490fd5b600190602084519401938184015501610379565b6107b89060065f5284845f209182019101610b0b565b5f61036d565b60405162461bcd60e51b81526020600482015260116024820152700a0deded87440cccacae640d8cadccee8d607b1b6044820152606490fd5b82516001600160a01b031681830155602090920191600101610319565b600b5f52610848907f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9908101908401610b0b565b5f61030e565b60405162461bcd60e51b815260206004820152601360248201527f506f6f6c3a206e656564203e31206173736574000000000000000000000000006044820152606490fd5b015190505f806102bf565b60055f9081528281209350601f198516905b8181106108ec57509084600195949392106108d4575b505050811b016005556102d4565b01515f1960f88460031b161c191690555f80806108c6565b929360206001819287860151815501950193016108b0565b6109309060055f5260205f20601f850160051c81019160208610610936575b601f0160051c0190610b0b565b5f6102a9565b9091508190610923565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610295565b015190505f8061025d565b60045f9081528281209350601f198516905b8181106109b7575090846001959493921061099f575b505050811b01600455610272565b01515f1960f88460031b161c191690555f8080610991565b9293602060018192878601518155019501930161097b565b60045f52610a17907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f850160051c8101916020861061093657601f0160051c0190610b0b565b5f610247565b91607f1691610233565b631e4fbdf760e01b5f525f60045260245ffd5b8151815260209182019101610130565b82516001600160a01b03811681036106ee578152602092830192016100cc565b6040519190601f01601f191682016001600160401b0381118382101761063357604052565b51906001600160a01b03821682036106ee57565b81601f820112156106ee578051906001600160401b03821161063357610ad2601f8301601f1916602001610a6a565b92828452602083830101116106ee57815f9260208093018386015e8301015290565b6001600160401b0381116106335760051b60200190565b818110610b16575050565b5f8155600101610b0b565b90610b2e6100a783610af4565b8281528092610b3f601f1991610af4565b0190602036910137565b80518210156103cd5760209160051b01019056fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c908163017504b6146128c357508063017cf6611461283157806306fdde03146126e8578063095ea7b3146125e35780630d246214146125755780630eeee6271461191757806318160ddd146118db5780631f3a0e411461189a57806323b872dd14611703578063313ce567146116c957806331596a6a1461167057806341c0e1b5146115da578063476e44b614611519578063491e7998146113f15780635cffe9de146112115780636863f5bc146110805780636b4082d1146110275780636b7b911214610fa55780636bba3f2f14610f495780636d8d0ff314610e8e5780636ff97f1d14610d8e57806370a0823114610d2b578063715018a614610c8f57806379a68d5314610b6b5780638da5cb5b14610b1a5780638e499bcf14610ade578063939f5ea414610a965780639517606614610a2757806395d89b41146108cd5780639af1d35a1461082e578063a1af5b9a14610765578063a9059cbb14610715578063b3f1c93d14610648578063cb717f3a146104f3578063cce516b7146104a1578063d516b8c614610416578063dd62ed3e1461039d578063e4b50cb81461033b578063f0d1ae4f146102cc5763f2fde38b0361000f57346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff6102286129d2565b61023061301e565b16801561029d5773ffffffffffffffffffffffffffffffffffffffff8254827fffffffffffffffffffffffff00000000000000000000000000000000000000008216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b6024827f1e4fbdf700000000000000000000000000000000000000000000000000000000815280600452fd5b80fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff61038d600435612aa2565b90549060031b1c16604051908152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff60406103ec6129d2565b92826103f66129f5565b9416815260026020522091165f52602052602060405f2054604051908152f35b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043590602435916064359182600f0b83036102c95761049d61047985858561046f8382613143565b9260443591612d3d565b92505050604093919351938493846040919493926060820195825260208201520152565b0390f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff60105416604051908152f35b5060a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761049d61062b61061c61052f6129d2565b6105376129f5565b60443573ffffffffffffffffffffffffffffffffffffffff6105588261306a565b9281604051957f3dd3c8050000000000000000000000000000000000000000000000000000000060208801521660248601521660448401526064830152606435608483015260843560a483015260c48201527f000000000000000000000000000000000000000000000000000000000000000060e482015260e481526105e061010482612a61565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001661308a565b60208082518301019101612cd1565b604080519384526020840192909252908201529081906060820190565b5060807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f161067e6129d2565b73ffffffffffffffffffffffffffffffffffffffff61069b6129f5565b81604051937fb3f1c93d00000000000000000000000000000000000000000000000000000000602086015216602484015216604482015260443560648201526064356084820152608481526105e060a482612a61565b602081519181808201938492010103126107115760209051604051908152f35b5f80fd5b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761075a6107506129d2565b6024359033612ef9565b602060405160018152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761082a73ffffffffffffffffffffffffffffffffffffffff60105416604051907f2a54db010000000000000000000000000000000000000000000000000000000060208301526024820152602481526107ee604482612a61565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001661308a565b5080f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760405180916020600654928381520191600682527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f915b8181106108b75761049d856108ab81870382612a61565b60405191829182612951565b8254845260209093019260019283019201610894565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576040519080600554908160011c91600181168015610a1d575b6020841081146109f0578386529081156109ab575060011461094e575b61049d8461094281860382612a61565b6040519182918261298a565b600581527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0939250905b8082106109915750909150810160200161094282610932565b919260018160209254838588010152019101909291610978565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208087019190915292151560051b850190920192506109429150839050610932565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b92607f1692610915565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020610ad6602435600435613143565b604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600b54604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b5060e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610b9e6129d2565b90610ba76129f5565b906044356064356084359182600f0b809303610c8b5760c435938415158095036102c95761049d61062b61061c89898989898973ffffffffffffffffffffffffffffffffffffffff610bf98383612cec565b9581604051987f8a3d858d0000000000000000000000000000000000000000000000000000000060208b01521660248901521660448701526064860152608485015260a484015260a43560c484015260e48301526101048201527f000000000000000000000000000000000000000000000000000000000000000061012482015261012481526107ee61014482612a61565b8380fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610cc661301e565b8073ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604060209173ffffffffffffffffffffffffffffffffffffffff610d7d6129d2565b168152600183522054604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604051806020600b5491828152018091600b85527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db990855b818110610e625750505082610e0b910383612a61565b604051928392602084019060208552518091526040840192915b818110610e33575050500390f35b825173ffffffffffffffffffffffffffffffffffffffff16845285945060209384019390920191600101610e25565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610df5565b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f1610ec46129d2565b73ffffffffffffffffffffffffffffffffffffffff604051917fc5eabfb900000000000000000000000000000000000000000000000000000000602084015216602482015260243560448201527f0000000000000000000000000000000000000000000000000000000000000000600f0b6064820152606481526105e0608482612a61565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f0000000000000000000000000000000000000000000000000000000000000000600f0b8152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610ff26129d2565b610ffa61301e565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000601054161760105580f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c95760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576110b86129d2565b6110c06129f5565b90608435801515809103610c8b5773ffffffffffffffffffffffffffffffffffffffff6111429381604051947f6863f5bc0000000000000000000000000000000000000000000000000000000060208701521660248501521660448301526044356064830152606435608483015260a482015260a481526105e060c482612a61565b805181019060208181840193031261120d5760208101519067ffffffffffffffff8211610c8b57019181603f840112156102c95760208301519267ffffffffffffffff84116111e0578360051b91604051946111a16020850187612a61565b855260208080870194840101019384116102c95750604001905b8282106111d0576040518061049d8682612951565b81518152602091820191016111bb565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8280fd5b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043573ffffffffffffffffffffffffffffffffffffffff81168091036113e95761126a6129f5565b60643567ffffffffffffffff8111610c8b5736602382011215610c8b5780600401359067ffffffffffffffff82116113ed5736602483830101116113ed576113c3937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f846107ee9560246101049673ffffffffffffffffffffffffffffffffffffffff6040519a8b987fe49cd4750000000000000000000000000000000000000000000000000000000060208b0152848a0152166044880152604435606488015260c060848801528260e48801520186860137888582860101527f000000000000000000000000000000000000000000000000000000000000000060a48501527f000000000000000000000000000000000000000000000000000000000000000060c48501520116810103017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612a61565b6020818051810103126113e957602001518015158091036113e957602090604051908152f35b5080fd5b8480fd5b50346102c95760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576114296129d2565b6114316129f5565b906064359160a4358015158091036113ed578373ffffffffffffffffffffffffffffffffffffffff6114656114f49661306a565b9381604051967f8d01fa440000000000000000000000000000000000000000000000000000000060208901521660248701521660448501526044356064850152608484015260843560a484015260c483015260e48201527f000000000000000000000000000000000000000000000000000000000000000061010482015261010481526105e061012482612a61565b6040818051810103126113e95780604060208193015191015182519182526020820152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576060602060405161155881612a18565b838152015260405161156981612a18565b600954600f0b8152611579612c3d565b906020810191825260405192839260208452606084019251600f0b6020850152519160408085015282518091526020608085019301915b8181106115be575050500390f35b8251600f0b8452859450602093840193909201916001016115b0565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761161161301e565b60085460ff811615611621575080f35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001176008557f0f8eeedbc400fd6686703559f58d1e6143fdaed533f19a86c93d67a2fe4fb3318180a180f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405160128152f35b50346102c95760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761173b6129d2565b6117436129f5565b6044359173ffffffffffffffffffffffffffffffffffffffff811680855260026020526040852073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f2054907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82106117c0575b505061075a9350612ef9565b84821061186657801561183a57331561180e578560409161075a975260026020522073ffffffffffffffffffffffffffffffffffffffff33165f526020528360405f20910390555f806117b4565b6024867f94280d6200000000000000000000000000000000000000000000000000000000815280600452fd5b6024867fe602df0500000000000000000000000000000000000000000000000000000000815280600452fd5b60648686847ffb8f41b200000000000000000000000000000000000000000000000000000000835233600452602452604452fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060ff600854166040519015158152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600354604051908152f35b506101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107115761194b6129d2565b906024357fffffffff00000000000000000000000000000000000000000000000000000000811691828203610711576044359273ffffffffffffffffffffffffffffffffffffffff84169283850361071157606435936084359660c43580600f0b810361071157610104359060e43582151583036107115760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00541461254d5760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005560ff600854166124ef5780159081156124e4575b501561248657611a4390611a388b8a612cec565b9060a4358c8b612d3d565b9b859d9596949e9293915073ffffffffffffffffffffffffffffffffffffffff611a6c82612aa2565b90549060031b1c169973ffffffffffffffffffffffffffffffffffffffff611a9385612aa2565b90549060031b1c169b155f146122d95750878a73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001698898214806122cf575b156121f857505050863b15610711575f8e976004604051809a81937fd0e30db00000000000000000000000000000000000000000000000000000000083525af19687156121ed578f908f908f996121d6575b50611b70611b92915b611b6b611b4e86612ae7565b90549060031b1c611b5e87612aff565b90549060031b1c90612b81565b612b81565b91611b8d611b7d87612ae7565b90549060031b1c611b5e88612aff565b612b47565b908d987f000000000000000000000000000000000000000000000000000000000000000090811515806121cd575b612144575b5050611c6391611c45611c06611c5a93611bf0611be188612aff565b90549060031b1c821015612bd8565b611bf987612aff565b90549060031b1c90612b47565b611c0f86612ae7565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b611c51611be187612aff565b611bf986612aff565b611c0f85612ae7565b8b82600f0b13156120e6578b84600f0b131561208857611cec93611cd482611cac611ca6611cac96611c97611ca697612eb9565b90549060031b1c600f0b613210565b91612eb9565b9091906fffffffffffffffffffffffffffffffff83549160031b928116831b921b1916179055565b611cdd84612eb9565b90549060031b1c600f0b613268565b80612049575b15611f835773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b15611f7f5787809160248d60405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af18015611f74579188918c93611f56575b5081809381925af13d15611f51573d67ffffffffffffffff8111611f245760405190611dd160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160183612a61565b81528760203d92013e5b15611ec6577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a0915b611e10818a612b47565b73ffffffffffffffffffffffffffffffffffffffff604051931683528a60208401528b604084015260608301526080820152a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015611e95575b50505061049d90604051938493846040919493926060820195825260208201520152565b8280809381938290611ebd575b3390f115611eb1578080611e71565b604051903d90823e3d90fd5b506108fc611ea2565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b611ddb565b611f639193508290612a61565b611f7057868a915f611d7d565b8680fd5b6040513d8a823e3d90fd5b8780fd5b506040517fa9059cbb0000000000000000000000000000000000000000000000000000000087528360045289602452602087604481808a5af1906001885114821615612028575b60405215611ffc577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a091611e06565b602486867f5274afe7000000000000000000000000000000000000000000000000000000008252600452fd5b90600181151661204057863b15153d15161690611fca565b503d87823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168614611cf2565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a20616d6f756e744f7574203c3d20300000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4d53523a20616d6f756e74496e203c3d2030000000000000000000000000006044820152fd5b611c5a929a50611c06620f4240612162611c639694611c4594612b8e565b049b8c612175575b93505050918f611bc5565b6121c88d6121946121858a612aff565b91909283548360031b1c612b81565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b61216a565b50801515611bc0565b6121e3919e505f90612a61565b5f9c611b70611b39565b6040513d5f823e3d90fd5b60209293949596979899505f80809360649373ffffffffffffffffffffffffffffffffffffffff604051987f23b872dd00000000000000000000000000000000000000000000000000000000855216600452306024526044525af19060015f51148216156122ae575b6040525f6060521561228257908b95949392918e611b928f611b7090611b42565b887f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9060018115166122c6578a3b15153d15161690612261565b503d5f823e3d90fd5b5080341015611ae7565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529197506020826024818e5afa9182156121ed578f905f9361244e575b5060249291612352916040519160208301528d8583015260448201526044815261234c606482612a61565b8a6131ed565b5060208b604051938480927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa80156121ed578f925f91612415575b50906123a291612b47565b036123b7578b958e611b928f611b7090611b42565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e742066756e647300000000000000000000000000006044820152fd5b919250506020813d602011612446575b8161243260209383612a61565b8101031261071157518e91906123a2612397565b3d9150612425565b9250506020823d60201161247e575b8161246a60209383612a61565b81010312610711579051908e612352612321565b3d915061245d565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f737761703a20646561646c696e652065786365656465640000000000000000006044820152fd5b90504211155f611a24565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346107115760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107115761261a6129d2565b6024359033156126bc5773ffffffffffffffffffffffffffffffffffffffff1690811561269057335f52600260205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576040515f6004548060011c90600181168015612827575b6020831081146127fa578285529081156127b8575060011461275a575b61049d8361094281850382612a61565b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b80821061279e5750909150810160200161094261274a565b919260018160209254838588010152019101909291612786565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b84019091019150610942905061274a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f169161272d565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157604051806020600d54918281520190600d5f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5905f5b8181106128ad5761049d856108ab81870382612a61565b8254845260209093019260019283019201612896565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157600c548082526020820190600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7905f5b81811061293b5761049d856108ab81870382612a61565b8254845260209093019260019283019201612924565b60206040818301928281528451809452019201905f5b8181106129745750505090565b8251845260209384019390920191600101612967565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6040810190811067ffffffffffffffff821117612a3457604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612a3457604052565b600b54811015612aba57600b5f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600f54811015612aba57600f5f5260205f2001905f90565b600c54811015612aba57600c5f5260205f2001905f90565b600d54811015612aba57600d5f5260205f2001905f90565b600654811015612aba5760065f5260205f2001905f90565b91908203918211612b5457565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b91908201809211612b5457565b81810292918115918404141715612b5457565b8115612bab570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b15612bdf57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f62616c616e6365203c2070726f746f636f6c206f7765640000000000000000006044820152fd5b60405190600a548083528260208101600a5f5260205f20925f905b806001830110612ca557612c7e945491818110612c91575b10612c80575b500383612a61565b565b60801d600f0b81526020015f612c76565b92602060019184600f0b8152019301612c70565b9160029193506040600191865480600f0b825260801d600f0b6020820152019401920185929391612c58565b90816060910312610711578051916040602083015192015190565b9190826103e8026103e881048403612b545781612d0891612b81565b90815f52600760205260405f2054938415612d2257505050565b612d2d929450613143565b915f5260076020528160405f2055565b92949394919091612d69612d518784613160565b9050612d5c86612b17565b90549060031b1c906132be565b905f82600f0b1315612e5b57612d8f918486600954600f0b612d89612c3d565b90613557565b919092612dae8394612da18197612b17565b90549060031b1c90613182565b925f92849880612e3a575b508811612ddc57612dcc612dd992612b17565b90549060031b1c906134e8565b94565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f737761703a207472616e736665722065786365656473206d61780000000000006044820152fd5b909850612e49919350846131b4565b91612e548385612b81565b975f612db9565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761703a20696e70757420746f6f20736d616c6c20616674657220666565006044820152fd5b90600a54821015612aba57600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b73ffffffffffffffffffffffffffffffffffffffff16908115612ff25773ffffffffffffffffffffffffffffffffffffffff16918215612fc657815f52600160205260405f2054818110612f9457817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f52600184520360405f2055845f526001825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff5f5416330361303e57565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b600654156130855761307b90612b2f565b90549060031b1c90565b505f90565b905f8091602081519101845af48080613130575b156130b05750506130ad6132a5565b90565b156130f75773ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b3d15613108576040513d5f823e3d90fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b503d15158061309e5750813b151561309e565b90611b5e6131536130ad93612b2f565b90549060031b1c91612b2f565b9190801561317c576131756130ad91846131b4565b8093612b47565b505f9190565b61319661318f83836134e8565b92836132be565b90600f0b90600f0b126131a65790565b60018101809111612b545790565b9080156131e7576131c491612b8e565b620f4240810190818111612b5457620f423f01908111612b5457620f4240900490565b50505f90565b905f809160208151910182855af1808061313057156130b05750506130ad6132a5565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061324e575b1561071157600f0b90565b506f7fffffffffffffffffffffffffffffff811315613243565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061324e571561071157600f0b90565b604051903d82523d5f602084013e60203d830101604052565b81156107115777ffffffffffffffffffffffffffffffffffffffffffffffff811161333657906132f09160401b612ba1565b6fffffffffffffffffffffffffffffffff8111610711576fffffffffffffffffffffffffffffffff166f7fffffffffffffffffffffffffffffff811161071157600f0b90565b60c09181831c80936401000000008210156134db575b600282620100006133d99410156134cf575b6101008110156134c3575b60108110156134b7575b60048110156134ac575b10156134a4575b8360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b612ba1565b926fffffffffffffffffffffffffffffffff8411610711578160801c8402906fffffffffffffffffffffffffffffffff8316850290809460401b9082821061347a575b5003928160801b91828510613451575b60801c036134465761343e9203612ba1565b905b016132f0565b505050600190613440565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019061342c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f61341c565b600101613384565b91810191811c61337d565b6004928301921c613373565b6008928301921c613369565b6010928301921c61335e565b505060e082811c9061334c565b81156131e757600f0b5f8112610711576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116107115760401b81198111610711570190565b8051821015612aba5760209160051b010190565b955f959194939092849290875b875189101561358f5761358760019161357d8b8b613543565b51600f0b90613210565b980197613564565b909294975097909294975f81600f0b13156139cd576135ad91613a2b565b9384600f0b80156107115770010000000000000000000000000000000005917fffffffffffffffffffffffffffffffff80000000000000000000000000000000831215806139b3575b15610711576136326136379161362d61361595600f0b9586928b613543565b51600f0b613623898c613543565b51600f0b90613268565b613a2b565b613a6b565b9280600f0b905f8213613823575b50509061365191613a2b565b80600f0b68200000000000000000811361379f577fffffffffffffffffffffffffffffffff800000000000000000000000000000001461071157613699905f03600f0b613a6b565b600f0b6801000000000000000003907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082121580613785575b15610711576136e491600f0b90613a2b565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061376b575b1561071157600f0b925f84131561375757505061373b61374192613ac8565b90613a2b565b905f82600f0b131561374f57565b5f9250829150565b9091506137649250613543565b51600f0b90565b506f7fffffffffffffffffffffffffffffff81131561371c565b506f7fffffffffffffffffffffffffffffff8213156136d2565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4c4d53523a20612f6220746f6f206c617267652028776f756c64206f7665726660448201527f6c6f7720657870290000000000000000000000000000000000000000000000006064820152fd5b84600f9a939a0b8092131561392f5781156107115760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613915575b1561071157600f0b5f8113156138b75761388561388b91613ac8565b86613a2b565b9780600f0b89600f0b125f146138ab57505061365190875b90915f613645565b613651929198506138a3565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4d53523a20726174696f3c3d300000000000000000000000000000000000006044820152fd5b506f7fffffffffffffffffffffffffffffff811315613869565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4c4d53523a206c696d69745072696365203c3d2063757272656e74207072696360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152fd5b506f7fffffffffffffffffffffffffffffff8313156135f6565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061324e571561071157600f0b90565b600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000811261308557700171547652b82fe1777d0ffda0d23a7d126130ad910260801d600f0b613bf5565b600f0b5f811315610711575f908068010000000000000000821215613be8575b806401000000006002921215613bdc575b62010000811215613bd0575b610100811215613bc4575b6010811215613bb8575b6004811215613bad575b1215613ba3575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f8313613b8757506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d90565b8002908160ff1c9182607f011c918302019160011d9190613b62565b9060010190613b2b565b92810192811d613b24565b6004938401931d613b1a565b6008938401931d613b10565b6010938401931d613b05565b6020938401931d613af9565b506040915080821d613ae8565b80600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000081126131e7576f80000000000000000000000000000000915f6780000000000000008216600f0b136147f1575b5f6740000000000000008216600f0b136147d4575b5f6720000000000000008216600f0b136147b7575b5f6710000000000000008216600f0b1361479a575b5f6708000000000000008216600f0b1361477d575b5f6704000000000000008216600f0b13614760575b5f6702000000000000008216600f0b13614743575b5f6701000000000000008216600f0b13614726575b5f66800000000000008216600f0b13614709575b5f66400000000000008216600f0b136146ec575b5f66200000000000008216600f0b136146cf575b5f66100000000000008216600f0b136146b2575b5f66080000000000008216600f0b13614695575b5f66040000000000008216600f0b13614678575b5f66020000000000008216600f0b1361465b575b5f66010000000000008216600f0b1361463e575b5f658000000000008216600f0b13614621575b5f654000000000008216600f0b13614604575b5f652000000000008216600f0b136145e7575b5f651000000000008216600f0b136145ca575b5f650800000000008216600f0b136145ad575b5f650400000000008216600f0b13614590575b5f650200000000008216600f0b13614573575b5f650100000000008216600f0b13614556575b5f6480000000008216600f0b13614539575b5f6440000000008216600f0b1361451c575b5f6420000000008216600f0b136144ff575b5f6410000000008216600f0b136144e2575b5f6408000000008216600f0b136144c5575b5f6404000000008216600f0b136144a8575b5f6402000000008216600f0b1361448b575b5f6401000000008216600f0b1361446e575b5f63800000008216600f0b13614451575b5f63400000008216600f0b13614434575b5f63200000008216600f0b13614417575b5f63100000008216600f0b136143fa575b5f63080000008216600f0b136143dd575b5f63040000008216600f0b136143c0575b5f63020000008216600f0b136143a3575b5f63010000008216600f0b13614386575b5f628000008216600f0b13614369575b5f624000008216600f0b1361434c575b5f622000008216600f0b1361432f575b5f621000008216600f0b13614312575b5f620800008216600f0b136142f5575b5f620400008216600f0b136142d8575b5f620200008216600f0b136142bb575b5f620100008216600f0b1361429e575b5f6180008216600f0b13614281575b5f6140008216600f0b13614264575b5f6120008216600f0b13614247575b5f6110008216600f0b1361422a575b5f6108008216600f0b1361420d575b5f6104008216600f0b136141f0575b5f6102008216600f0b136141d3575b5f6101008216600f0b136141b6575b5f60808216600f0b13614199575b5f60408216600f0b1361417c575b5f60208216600f0b1361415f575b5f60108216600f0b13614142575b5f60088216600f0b13614125575b5f60048216600f0b13614108575b5f60028216600f0b136140ea575b60015f9116600f0b136140cd575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161071157600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c906140a3565b7001000000000000000162e42fefa39ef35890920260801c91614095565b9170010000000000000002c5c85fdf473de6b20260801c91614087565b91700100000000000000058b90bfbe8e7bcd6d0260801c91614079565b917001000000000000000b17217f7d1cf79afa0260801c9161406b565b91700100000000000000162e42fefa39ef366f0260801c9161405d565b917001000000000000002c5c85fdf473de6eca0260801c9161404f565b9170010000000000000058b90bfbe8e7bce5440260801c91614041565b91700100000000000000b17217f7d1cf79e9490260801c91614033565b9170010000000000000162e42fefa39ef44d910260801c91614024565b91700100000000000002c5c85fdf473dea871f0260801c91614015565b917001000000000000058b90bfbe8e7bdcbe2e0260801c91614006565b9170010000000000000b17217f7d1cf7d83c1a0260801c91613ff7565b917001000000000000162e42fefa39f02b772c0260801c91613fe8565b9170010000000000002c5c85fdf473e242ea380260801c91613fd9565b91700100000000000058b90bfbe8e7cc35c3f00260801c91613fca565b917001000000000000b17217f7d1cfb72b45e10260801c91613fbb565b91700100000000000162e42fefa39fe95583c20260801c91613fab565b917001000000000002c5c85fdf4741bea6e77e0260801c91613f9b565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c91613f8b565b91700100000000000b17217f7d1d351a389d400260801c91613f7b565b9170010000000000162e42fefa3ae53369388c0260801c91613f6b565b91700100000000002c5c85fdf477b662b269450260801c91613f5b565b917001000000000058b90bfbe8f71cb4e4b33d0260801c91613f4b565b9170010000000000b17217f7d20cf927c8e94c0260801c91613f3b565b917001000000000162e42fefa494f1478fde050260801c91613f2a565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c91613f19565b91700100000000058b90bfbe9ddbac5e109cce0260801c91613f08565b917001000000000b17217f7d5a7716bba4a9ae0260801c91613ef7565b91700100000000162e42fefb2fed257559bdaa0260801c91613ee6565b917001000000002c5c85fdf84bd62ae30a74cc0260801c91613ed5565b9170010000000058b90bfbf8479bd5a81b51ad0260801c91613ec4565b91700100000000b17217f80f4ef5aadda455540260801c91613eb3565b9170010000000162e42ff0999ce3541b9fffcf0260801c91613ea1565b91700100000002c5c85fe31f35a6a30da1be500260801c91613e8f565b917001000000058b90bfcdee5acd3c1cedc8230260801c91613e7d565b9170010000000b17217fba9c739aa5819f44f90260801c91613e6b565b917001000000162e42fff037df38aa2b219f060260801c91613e59565b9170010000002c5c8601cc6b9e94213c72737a0260801c91613e47565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91613e35565b917001000000b1721835514b86e6d96efd1bfe0260801c91613e23565b91700100000162e430e5a18f6119e3c02282a50260801c91613e10565b917001000002c5c863b73f016468f6bac5ca2b0260801c91613dfd565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91613dea565b91700100000b1721bcfc99d9f890ea069117630260801c91613dd7565b9170010000162e43f4f831060e02d839a9d16d0260801c91613dc4565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c91613db1565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c91613d9e565b9170010000b17255775c040618bf4a4ade83fc0260801c91613d8b565b917001000162e525ee054754457d59952920260260801c91613d77565b9170010002c5cc37da9491d0985c348c68e7b30260801c91613d63565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91613d4f565b917001000b175effdc76ba38e31671ca9397250260801c91613d3b565b91700100162f3904051fa128bca9c55c31e5df0260801c91613d27565b917001002c605e2e8cec506d21bfc89a23a00f0260801c91613d13565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c91613cff565b91700100b1afa5abcbed6129ab13ec11dc95430260801c91613ceb565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c91613cd6565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c91613cc1565b917001059b0d31585743ae7c548eb68ca417fd0260801c91613cac565b9170010b5586cf9890f6298b92b71842a983630260801c91613c97565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c91613c82565b917001306fe0a31b7152de8d5a46305c85edec0260801c91613c6d565b6fb504f333f9de6484597d89b3754abe9f9250613c5856fea26469706673582212201f3500b860bc62657692a3183901310b4a9d587e54c35da242d2bb0118485b5364736f6c634300081e0033a2646970667358221220c1225d048f8eb2be410725b5e006860923c6057c760a4f91fa9ee56884d8281264736f6c634300081e003360808060405234601557615df4908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c636ae73ce314610024575f80fd5b34610373576101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103735760043573ffffffffffffffffffffffffffffffffffffffff81168091036103735760243567ffffffffffffffff8111610373576100959036906004016103f8565b9060443567ffffffffffffffff8111610373576100b69036906004016103f8565b6064359067ffffffffffffffff82116103735736602383011215610373578160040135916100eb6100e684610468565b6103b4565b9060208285815201906024829560051b8201019036821161037357602401915b8183106103875750505060843580600f0b8091036103735760a43567ffffffffffffffff81116103735736602382011215610373578060040135946101526100e687610468565b91602083888152016024819860051b8301019136831161037357602401905b82821061037757505050610104359173ffffffffffffffffffffffffffffffffffffffff831680930361037357610124359373ffffffffffffffffffffffffffffffffffffffff851680950361037357610144359573ffffffffffffffffffffffffffffffffffffffff871680970361037357610164359773ffffffffffffffffffffffffffffffffffffffff8916809903610373576040519b8c9b8c926158fb8094019e8f9081109067ffffffffffffffff1017610346576102528f92938f94602096610260966104c49039845261018086850152610180840190610480565b916040818403910152610480565b8c810360608e01529151808352910193905f5b81811061031a575050509060209160808b015289830360a08b015251918281520195905f5b81811061030457505050918596916101609360c43560c085015260e43560e0850152610100840152610120830152610140820152015203905ff080156102f95760209073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b6040513d5f823e3d90fd5b8251885260209788019790920191600101610298565b825173ffffffffffffffffffffffffffffffffffffffff16865260209586019590920191600101610273565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f80fd5b8135815260209182019101610171565b823573ffffffffffffffffffffffffffffffffffffffff811681036103735781526020928301920161010b565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff82111761034657604052565b81601f820112156103735780359067ffffffffffffffff82116103465761044660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116016103b4565b928284526020838301011161037357815f926020809301838601378301015290565b67ffffffffffffffff81116103465760051b60200190565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f858286010152011601019056fe610140604052346106ee576158fb8038038061001a81610a6a565b9283398101610180828203126106ee5761003382610a8f565b60208301516001600160401b0381116106ee5782610052918501610aa3565b60408401519091906001600160401b0381116106ee5783610074918601610aa3565b60608501519094906001600160401b0381116106ee5781019284601f850112156106ee578351956100ac6100a788610af4565b610a6a565b9460208689815201906020829960051b820101908882116106ee57602001915b818310610a4a57505050608083015180600f0b81036106ee5760a08401516001600160401b0381116106ee5784019680601f890112156106ee5787516101146100a782610af4565b986020808b848152019260051b8201019283116106ee57602001905b828210610a3a5750505060c08401519760e0850151926101536101008701610a8f565b610120870151979095906001600160a01b03891689036106ee57610140880151976001600160a01b03891689036106ee576101600151986001600160a01b038a168a036106ee5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00556080526001600160a01b03168015610a27575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a38051906001600160401b0382116106335760045490600182811c92168015610a1d575b60208310146109405781601f8493116109cf575b50602090601f8311600114610969575f9261095e575b50508160011b915f199060031b1c1916176004555b8051906001600160401b0382116106335760055490600182811c92168015610954575b60208310146109405781601f849311610904575b50602090601f831160011461089e575f92610893575b50508160011b915f199060031b1c1916176005555b60018751111561084e578651906001600160401b0382116106335768010000000000000000821161063357600b5482600b55808310610814575b50600b5f5260205f205f5b8381106107f7575050505060a05285518551036107be5761033a8651610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600654836006558084106107a2575b500160065f5260205f205f5b83811061078e57505050505f5b86518110156104185761271061039c8289610b49565b5110156103e1576103ad8188610b49565b51906006548110156103cd5760019160065f528160205f20015501610386565b634e487b7160e01b5f52603260045260245ffd5b60405162461bcd60e51b815260206004820152600f60248201526e506f6f6c3a20666565203e3d20312560881b6044820152606490fd5b50866127108110156107495760c05262061a8081101561070457801580156106f2575b156106ee5760e052601080546001600160a01b0319166001600160a01b039290921691909117905561012052610100528051905f5b8281106106a7578261048181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600d5483600d5580841061068b575b5001600d5f5260205f205f5b83811061067757846104d181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600f5483600f5580841061065b575b5001600f5f5260205f205f5b8381106106475761052085610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600c5483600c55808410610617575b500190600c5f5260205f20915f5b82811061060357604051614d9d9081610b5e8239608051818181611b4a01528181611d9b015281816120ee015261264c015260a051818181610f130152610f7f015260c0518181816113480152611733015260e0518181816105ac01528181610c550152818161105d0152818161136e015281816114be0152611c2401526101005181818161031701526105f70152610120518181816108050152610a720152f35b600190602083519301928186015501610561565b61062d90600c5f5284845f209182019101610b0b565b83610553565b634e487b7160e01b5f52604160045260245ffd5b600190602084519401938184015501610510565b61067190600f5f5284845f209182019101610b0b565b84610504565b6001906020845194019381840155016104c0565b6106a190600d5f5284845f209182019101610b0b565b846104b4565b60018101908181116106da576001600160a01b03906106c69084610b49565b51165f52600e6020528060405f2055610470565b634e487b7160e01b5f52601160045260245ffd5b5f80fd5b506001600160a01b038216151561043b565b60405162461bcd60e51b815260206004820152601960248201527f506f6f6c3a2070726f746f636f6c20666565203e3d20343025000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601560248201527f506f6f6c3a20666c61736820666565203e3d20312500000000000000000000006044820152606490fd5b600190602084519401938184015501610379565b6107b89060065f5284845f209182019101610b0b565b5f61036d565b60405162461bcd60e51b81526020600482015260116024820152700a0deded87440cccacae640d8cadccee8d607b1b6044820152606490fd5b82516001600160a01b031681830155602090920191600101610319565b600b5f52610848907f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9908101908401610b0b565b5f61030e565b60405162461bcd60e51b815260206004820152601360248201527f506f6f6c3a206e656564203e31206173736574000000000000000000000000006044820152606490fd5b015190505f806102bf565b60055f9081528281209350601f198516905b8181106108ec57509084600195949392106108d4575b505050811b016005556102d4565b01515f1960f88460031b161c191690555f80806108c6565b929360206001819287860151815501950193016108b0565b6109309060055f5260205f20601f850160051c81019160208610610936575b601f0160051c0190610b0b565b5f6102a9565b9091508190610923565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610295565b015190505f8061025d565b60045f9081528281209350601f198516905b8181106109b7575090846001959493921061099f575b505050811b01600455610272565b01515f1960f88460031b161c191690555f8080610991565b9293602060018192878601518155019501930161097b565b60045f52610a17907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f850160051c8101916020861061093657601f0160051c0190610b0b565b5f610247565b91607f1691610233565b631e4fbdf760e01b5f525f60045260245ffd5b8151815260209182019101610130565b82516001600160a01b03811681036106ee578152602092830192016100cc565b6040519190601f01601f191682016001600160401b0381118382101761063357604052565b51906001600160a01b03821682036106ee57565b81601f820112156106ee578051906001600160401b03821161063357610ad2601f8301601f1916602001610a6a565b92828452602083830101116106ee57815f9260208093018386015e8301015290565b6001600160401b0381116106335760051b60200190565b818110610b16575050565b5f8155600101610b0b565b90610b2e6100a783610af4565b8281528092610b3f601f1991610af4565b0190602036910137565b80518210156103cd5760209160051b01019056fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c908163017504b61461295057508063017cf661146128be57806306fdde0314612775578063095ea7b3146126705780630d246214146126025780630eeee627146119a457806318160ddd146119685780631f3a0e411461192757806323b872dd14611790578063313ce5671461175657806331596a6a146116fd57806341c0e1b514611667578063476e44b614611519578063491e7998146113f15780635cffe9de146112115780636863f5bc146110805780636b4082d1146110275780636b7b911214610fa55780636bba3f2f14610f495780636d8d0ff314610e8e5780636ff97f1d14610d8e57806370a0823114610d2b578063715018a614610c8f57806379a68d5314610b6b5780638da5cb5b14610b1a5780638e499bcf14610ade578063939f5ea414610a965780639517606614610a2757806395d89b41146108cd5780639af1d35a1461082e578063a1af5b9a14610765578063a9059cbb14610715578063b3f1c93d14610648578063cb717f3a146104f3578063cce516b7146104a1578063d516b8c614610416578063dd62ed3e1461039d578063e4b50cb81461033b578063f0d1ae4f146102cc5763f2fde38b0361000f57346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610228612a5f565b6102306130bd565b16801561029d5773ffffffffffffffffffffffffffffffffffffffff8254827fffffffffffffffffffffffff00000000000000000000000000000000000000008216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b6024827f1e4fbdf700000000000000000000000000000000000000000000000000000000815280600452fd5b80fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff61038d600435612b2f565b90549060031b1c16604051908152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff60406103ec612a5f565b92826103f6612a82565b9416815260026020522091165f52602052602060405f2054604051908152f35b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043590602435916064359182600f0b83036102c95761049d61047985858561046f83826131e2565b9260443591612dca565b92505050604093919351938493846040919493926060820195825260208201520152565b0390f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff60105416604051908152f35b5060a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761049d61062b61061c61052f612a5f565b610537612a82565b60443573ffffffffffffffffffffffffffffffffffffffff61055882613109565b9281604051957f3dd3c8050000000000000000000000000000000000000000000000000000000060208801521660248601521660448401526064830152606435608483015260843560a483015260c48201527f000000000000000000000000000000000000000000000000000000000000000060e482015260e481526105e061010482612aee565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016613129565b60208082518301019101612d5e565b604080519384526020840192909252908201529081906060820190565b5060807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f161067e612a5f565b73ffffffffffffffffffffffffffffffffffffffff61069b612a82565b81604051937fb3f1c93d00000000000000000000000000000000000000000000000000000000602086015216602484015216604482015260443560648201526064356084820152608481526105e060a482612aee565b602081519181808201938492010103126107115760209051604051908152f35b5f80fd5b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761075a610750612a5f565b6024359033612f98565b602060405160018152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761082a73ffffffffffffffffffffffffffffffffffffffff60105416604051907f2a54db010000000000000000000000000000000000000000000000000000000060208301526024820152602481526107ee604482612aee565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016613129565b5080f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760405180916020600654928381520191600682527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f915b8181106108b75761049d856108ab81870382612aee565b604051918291826129de565b8254845260209093019260019283019201610894565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576040519080600554908160011c91600181168015610a1d575b6020841081146109f0578386529081156109ab575060011461094e575b61049d8461094281860382612aee565b60405191829182612a17565b600581527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0939250905b8082106109915750909150810160200161094282610932565b919260018160209254838588010152019101909291610978565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208087019190915292151560051b850190920192506109429150839050610932565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b92607f1692610915565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020610ad66024356004356131e2565b604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600b54604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b5060e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610b9e612a5f565b90610ba7612a82565b906044356064356084359182600f0b809303610c8b5760c435938415158095036102c95761049d61062b61061c89898989898973ffffffffffffffffffffffffffffffffffffffff610bf98383612d79565b9581604051987f8a3d858d0000000000000000000000000000000000000000000000000000000060208b01521660248901521660448701526064860152608485015260a484015260a43560c484015260e48301526101048201527f000000000000000000000000000000000000000000000000000000000000000061012482015261012481526107ee61014482612aee565b8380fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610cc66130bd565b8073ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604060209173ffffffffffffffffffffffffffffffffffffffff610d7d612a5f565b168152600183522054604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604051806020600b5491828152018091600b85527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db990855b818110610e625750505082610e0b910383612aee565b604051928392602084019060208552518091526040840192915b818110610e33575050500390f35b825173ffffffffffffffffffffffffffffffffffffffff16845285945060209384019390920191600101610e25565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610df5565b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f1610ec4612a5f565b73ffffffffffffffffffffffffffffffffffffffff604051917fc5eabfb900000000000000000000000000000000000000000000000000000000602084015216602482015260243560448201527f0000000000000000000000000000000000000000000000000000000000000000600f0b6064820152606481526105e0608482612aee565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f0000000000000000000000000000000000000000000000000000000000000000600f0b8152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610ff2612a5f565b610ffa6130bd565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000601054161760105580f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c95760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576110b8612a5f565b6110c0612a82565b90608435801515809103610c8b5773ffffffffffffffffffffffffffffffffffffffff6111429381604051947f6863f5bc0000000000000000000000000000000000000000000000000000000060208701521660248501521660448301526044356064830152606435608483015260a482015260a481526105e060c482612aee565b805181019060208181840193031261120d5760208101519067ffffffffffffffff8211610c8b57019181603f840112156102c95760208301519267ffffffffffffffff84116111e0578360051b91604051946111a16020850187612aee565b855260208080870194840101019384116102c95750604001905b8282106111d0576040518061049d86826129de565b81518152602091820191016111bb565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8280fd5b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043573ffffffffffffffffffffffffffffffffffffffff81168091036113e95761126a612a82565b60643567ffffffffffffffff8111610c8b5736602382011215610c8b5780600401359067ffffffffffffffff82116113ed5736602483830101116113ed576113c3937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f846107ee9560246101049673ffffffffffffffffffffffffffffffffffffffff6040519a8b987fe49cd4750000000000000000000000000000000000000000000000000000000060208b0152848a0152166044880152604435606488015260c060848801528260e48801520186860137888582860101527f000000000000000000000000000000000000000000000000000000000000000060a48501527f000000000000000000000000000000000000000000000000000000000000000060c48501520116810103017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612aee565b6020818051810103126113e957602001518015158091036113e957602090604051908152f35b5080fd5b8480fd5b50346102c95760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957611429612a5f565b611431612a82565b906064359160a4358015158091036113ed578373ffffffffffffffffffffffffffffffffffffffff6114656114f496613109565b9381604051967f8d01fa440000000000000000000000000000000000000000000000000000000060208901521660248701521660448501526044356064850152608484015260843560a484015260c483015260e48201527f000000000000000000000000000000000000000000000000000000000000000061010482015261010481526105e061012482612aee565b6040818051810103126113e95780604060208193015191015182519182526020820152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576060602060405161155881612aa5565b83815201526040519061156a82612aa5565b600954600f0b825260405191600a548084528360208101600a8552602085209285905b80600183011061163b576115b6945491818110611627575b10611616575b509493940383612aee565b6020810191825260405192839260208452606084019251600f0b6020850152519160408085015282518091526020608085019301915b8181106115fa575050500390f35b8251600f0b8452859450602093840193909201916001016115ec565b60801d600f0b81526020015f6115ab565b92602060019184600f0b81520193016115a5565b9160029193506040600191865480600f0b825260801d600f0b602082015201940192018692939161158d565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761169e6130bd565b60085460ff8116156116ae575080f35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001176008557f0f8eeedbc400fd6686703559f58d1e6143fdaed533f19a86c93d67a2fe4fb3318180a180f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405160128152f35b50346102c95760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576117c8612a5f565b6117d0612a82565b6044359173ffffffffffffffffffffffffffffffffffffffff811680855260026020526040852073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f2054907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821061184d575b505061075a9350612f98565b8482106118f35780156118c757331561189b578560409161075a975260026020522073ffffffffffffffffffffffffffffffffffffffff33165f526020528360405f20910390555f80611841565b6024867f94280d6200000000000000000000000000000000000000000000000000000000815280600452fd5b6024867fe602df0500000000000000000000000000000000000000000000000000000000815280600452fd5b60648686847ffb8f41b200000000000000000000000000000000000000000000000000000000835233600452602452604452fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060ff600854166040519015158152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600354604051908152f35b506101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576119d8612a5f565b906024357fffffffff00000000000000000000000000000000000000000000000000000000811691828203610711576044359273ffffffffffffffffffffffffffffffffffffffff84169283850361071157606435936084359660c43580600f0b810361071157610104359060e43582151583036107115760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146125da5760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005560ff6008541661257c578015908115612571575b501561251357611ad090611ac58b8a612d79565b9060a4358c8b612dca565b9b859d9596949e9293915073ffffffffffffffffffffffffffffffffffffffff611af982612b2f565b90549060031b1c169973ffffffffffffffffffffffffffffffffffffffff611b2085612b2f565b90549060031b1c169b155f146123665750878a73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016988982148061235c575b1561228557505050863b15610711575f8e976004604051809a81937fd0e30db00000000000000000000000000000000000000000000000000000000083525af196871561227a578f908f908f99612263575b50611bfd611c1f915b611bf8611bdb86612b74565b90549060031b1c611beb87612b8c565b90549060031b1c90612c0e565b612c0e565b91611c1a611c0a87612b74565b90549060031b1c611beb88612b8c565b612bd4565b908d987f0000000000000000000000000000000000000000000000000000000000000000908115158061225a575b6121d1575b5050611cf091611cd2611c93611ce793611c7d611c6e88612b8c565b90549060031b1c821015612c65565b611c8687612b8c565b90549060031b1c90612bd4565b611c9c86612b74565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b611cde611c6e87612b8c565b611c8686612b8c565b611c9c85612b74565b8b82600f0b1315612173578b84600f0b131561211557611d7993611d6182611d39611d33611d3996611d24611d3397612f37565b90549060031b1c600f0b61330c565b91612f37565b9091906fffffffffffffffffffffffffffffffff83549160031b928116831b921b1916179055565b611d6a84612f37565b90549060031b1c600f0b613349565b806120d6575b156120105773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b1561200c5787809160248d60405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af18015612001579188918c93611fe3575b5081809381925af13d15611fde573d67ffffffffffffffff8111611fb15760405190611e5e60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160183612aee565b81528760203d92013e5b15611f53577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a0915b611e9d818a612bd4565b73ffffffffffffffffffffffffffffffffffffffff604051931683528a60208401528b604084015260608301526080820152a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015611f22575b50505061049d90604051938493846040919493926060820195825260208201520152565b8280809381938290611f4a575b3390f115611f3e578080611efe565b604051903d90823e3d90fd5b506108fc611f2f565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b611e68565b611ff09193508290612aee565b611ffd57868a915f611e0a565b8680fd5b6040513d8a823e3d90fd5b8780fd5b506040517fa9059cbb0000000000000000000000000000000000000000000000000000000087528360045289602452602087604481808a5af19060018851148216156120b5575b60405215612089577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a091611e93565b602486867f5274afe7000000000000000000000000000000000000000000000000000000008252600452fd5b9060018115166120cd57863b15153d15161690612057565b503d87823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168614611d7f565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a20616d6f756e744f7574203c3d20300000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4d53523a20616d6f756e74496e203c3d2030000000000000000000000000006044820152fd5b611ce7929a50611c93620f42406121ef611cf09694611cd294612c1b565b049b8c612202575b93505050918f611c52565b6122558d6122216122128a612b8c565b91909283548360031b1c612c0e565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b6121f7565b50801515611c4d565b612270919e505f90612aee565b5f9c611bfd611bc6565b6040513d5f823e3d90fd5b60209293949596979899505f80809360649373ffffffffffffffffffffffffffffffffffffffff604051987f23b872dd00000000000000000000000000000000000000000000000000000000855216600452306024526044525af19060015f511482161561233b575b6040525f6060521561230f57908b95949392918e611c1f8f611bfd90611bcf565b887f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b906001811516612353578a3b15153d151616906122ee565b503d5f823e3d90fd5b5080341015611b74565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529197506020826024818e5afa91821561227a578f905f936124db575b50602492916123df916040519160208301528d858301526044820152604481526123d9606482612aee565b8a61328c565b5060208b604051938480927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa801561227a578f925f916124a2575b509061242f91612bd4565b03612444578b958e611c1f8f611bfd90611bcf565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e742066756e647300000000000000000000000000006044820152fd5b919250506020813d6020116124d3575b816124bf60209383612aee565b8101031261071157518e919061242f612424565b3d91506124b2565b9250506020823d60201161250b575b816124f760209383612aee565b81010312610711579051908e6123df6123ae565b3d91506124ea565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f737761703a20646561646c696e652065786365656465640000000000000000006044820152fd5b90504211155f611ab1565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346107115760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576126a7612a5f565b6024359033156127495773ffffffffffffffffffffffffffffffffffffffff1690811561271d57335f52600260205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576040515f6004548060011c906001811680156128b4575b6020831081146128875782855290811561284557506001146127e7575b61049d8361094281850382612aee565b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b80821061282b575090915081016020016109426127d7565b919260018160209254838588010152019101909291612813565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b8401909101915061094290506127d7565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916127ba565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157604051806020600d54918281520190600d5f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5905f5b81811061293a5761049d856108ab81870382612aee565b8254845260209093019260019283019201612923565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157600c548082526020820190600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7905f5b8181106129c85761049d856108ab81870382612aee565b82548452602090930192600192830192016129b1565b60206040818301928281528451809452019201905f5b818110612a015750505090565b82518452602093840193909201916001016129f4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6040810190811067ffffffffffffffff821117612ac157604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612ac157604052565b600b54811015612b4757600b5f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600f54811015612b4757600f5f5260205f2001905f90565b600c54811015612b4757600c5f5260205f2001905f90565b600d54811015612b4757600d5f5260205f2001905f90565b600654811015612b475760065f5260205f2001905f90565b91908203918211612be157565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b91908201809211612be157565b81810292918115918404141715612be157565b8115612c38570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b15612c6c57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f62616c616e6365203c2070726f746f636f6c206f7765640000000000000000006044820152fd5b90604051918281549182825260208201905f5260205f20925f905b806001830110612d3257612d0b945491818110612d1e575b10612d0d575b500383612aee565b565b60801d600f0b81526020015f612d03565b92602060019184600f0b8152019301612cfd565b9160029193506040600191865480600f0b825260801d600f0b6020820152019401920185929391612ce5565b90816060910312610711578051916040602083015192015190565b9190826103e8026103e881048403612be15781612d9591612c0e565b90815f52600760205260405f2054938415612daf57505050565b612dba9294506131e2565b915f5260076020528160405f2055565b92949394919091612df6612dde87846131ff565b9050612de986612ba4565b90549060031b1c9061339f565b905f82600f0b1315612ed957612e0d9184866135c9565b919092612e2c8394612e1f8197612ba4565b90549060031b1c90613221565b925f92849880612eb8575b508811612e5a57612e4a612e5792612ba4565b90549060031b1c90613aa0565b94565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f737761703a207472616e736665722065786365656473206d61780000000000006044820152fd5b909850612ec791935084613253565b91612ed28385612c0e565b975f612e37565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761703a20696e70757420746f6f20736d616c6c20616674657220666565006044820152fd5b90600a54821015612b4757600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b9190918054831015612b47575f52601060205f208360011c019260041b1690565b73ffffffffffffffffffffffffffffffffffffffff169081156130915773ffffffffffffffffffffffffffffffffffffffff1691821561306557815f52600160205260405f205481811061303357817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f52600184520360405f2055845f526001825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff5f541633036130dd57565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b600654156131245761311a90612bbc565b90549060031b1c90565b505f90565b905f8091602081519101845af480806131cf575b1561314f57505061314c613386565b90565b156131965773ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b3d156131a7576040513d5f823e3d90fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b503d15158061313d5750813b151561313d565b90611beb6131f261314c93612bbc565b90549060031b1c91612bbc565b9190801561321b5761321461314c9184613253565b8093612bd4565b505f9190565b61323561322e8383613aa0565b928361339f565b90600f0b90600f0b126132455790565b60018101809111612be15790565b9080156132865761326391612c1b565b620f4240810190818111612be157620f423f01908111612be157620f4240900490565b50505f90565b905f809160208151910182855af180806131cf571561314f57505061314c613386565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2575b1561071157600f0b90565b506f7fffffffffffffffffffffffffffffff8113156132e7565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b604051903d82523d5f602084013e60203d830101604052565b81156107115777ffffffffffffffffffffffffffffffffffffffffffffffff811161341757906133d19160401b612c2e565b6fffffffffffffffffffffffffffffffff8111610711576fffffffffffffffffffffffffffffffff166f7fffffffffffffffffffffffffffffff811161071157600f0b90565b60c09181831c80936401000000008210156135bc575b600282620100006134ba9410156135b0575b6101008110156135a4575b6010811015613598575b600481101561358d575b1015613585575b8360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b612c2e565b926fffffffffffffffffffffffffffffffff8411610711578160801c8402906fffffffffffffffffffffffffffffffff8316850290809460401b9082821061355b575b5003928160801b91828510613532575b60801c036135275761351f9203612c2e565b905b016133d1565b505050600190613521565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019061350d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f6134fd565b600101613465565b91810191811c61345e565b6004928301921c613454565b6008928301921c61344a565b6010928301921c61343f565b505060e082811c9061342d565b9193929093600a5480841080613a97575b15613a3957600203613a21576135f86135f3600a612cca565b613f94565b946136075f87600f0b13613afb565b613617600954600f0b9687613c82565b5f81600f0b1315613a0e5761362b81613b60565b6136678161366261363d89600a612f77565b90549060031b1c600f0b61365287600a612f77565b90549060031b1c600f0b90613349565b613c82565b9085600f0b5f81136137d8575b505f600f83900b126137ca57815b67028f5c28f5c28f5c90600f0b136137b55761369e9085613c82565b80600f0b915f83131561379f57678000000000000000831361379f57906136f961371a9493926136f36136ed671999999999999999946136e76136e18280613c82565b946132af565b90613c82565b91613bb0565b90613349565b916137048380613c82565b91600f0b1261377657906136f36136e792613bb0565b9384600f0b965f8813156137565761373383600a612f77565b90549060031b1c600f0b881215613756575f849698126137565750505050509190565b90919293945061377295965061376c600a612cca565b90613d08565b9091565b613799613793836136f361378d6136e79686613c82565b94613bb0565b91613bf6565b9061330c565b50505050909192613772949561376c600a612cca565b505050909192613772949561376c600a612cca565b6137d382613cc2565b613682565b6137e58380979397613c82565b680600000000000000006138096137fc8684613c82565b926137996136ed886132af565b9160401b60170b05907fffffffffffffffffffffffffffffffff80000000000000000000000000000000821215806139f4575b156107115761384e91600f0b9061330c565b9081600f0b121561396f576138847fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009188613c3c565b600f0b017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613955575b1561071157600f0b5f811261394757805b671999999999999999600f0b90600f0b1361393057806137996137936138ec836138fa95613c82565b926136f361378d8286613c82565b5f81600f0b13156139305761390f9084613c82565b9080600f0b82600f0b125f146139285750935b5f613674565b949050613922565b5094959293505050613772949561376c600a612cca565b61395081613cc2565b6138c3565b506f7fffffffffffffffffffffffffffffff8113156138b2565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4c4d53523a206c696d69745072696365203c3d2063757272656e74207072696360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152608490fd5b506f7fffffffffffffffffffffffffffffff82131561383c565b50909192613772949561376c600a612cca565b9091936137729394600954600f0b61376c600a612cca565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4c4d53523a2069647800000000000000000000000000000000000000000000006044820152fd5b508086106135da565b811561328657600f0b5f8112610711576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116107115760401b81198111610711570190565b15613b0257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b600f0b801561071157700100000000000000000000000000000000057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b680200000000000000009060401b60170b057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b680300000000000000009060401b60170b057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b90600f0b9081156107115760401b60170b057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081600f0b14610711575f03600f0b90565b8051821015612b475760209160051b010190565b95949093613d4c90939293613d69613d64613d36839a613d278a613f94565b906136625f83600f0b13613afb565b96613662613d4389613b60565b9586928b613cf4565b51600f0b613d5a898c613cf4565b51600f0b90613349565b613fc9565b9280600f0b5f8113613ed6575b505090613d8291613c82565b6820000000000000000081600f0b13613e5257613d64613da191613cc2565b600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613e38575b1561071157613df491613def91600f0b90613c82565b6132af565b925f84600f0b1315613e245750506136e7613e0e92614026565b905f82600f0b1315613e1c57565b5f9250829150565b909150613e319250613cf4565b51600f0b90565b506f7fffffffffffffffffffffffffffffff811315613dd9565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4c4d53523a20612f6220746f6f206c617267652028776f756c64206f7665726660448201527f6c6f7720657870290000000000000000000000000000000000000000000000006064820152fd5b84600f9a939a0b121561396f5783613eed91613c3c565b5f81600f0b1315613f3657613f04613f0a91614026565b86613c82565b9780600f0b89600f0b125f14613f2a575050613d8290875b90915f613d76565b613d8292919850613f22565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4d53523a20726174696f3c3d300000000000000000000000000000000000006044820152fd5b5f90815b8151831015613fc357613fbb600191613fb18585613cf4565b51600f0b9061330c565b920191613f98565b91505090565b600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000811261312457700171547652b82fe1777d0ffda0d23a7d1261314c910260801d600f0b614153565b600f0b5f811315610711575f908068010000000000000000821215614146575b80640100000000600292121561413a575b6201000081121561412e575b610100811215614122575b6010811215614116575b600481121561410b575b1215614101575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f83136140e557506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d90565b8002908160ff1c9182607f011c918302019160011d91906140c0565b9060010190614089565b92810192811d614082565b6004938401931d614078565b6008938401931d61406e565b6010938401931d614063565b6020938401931d614057565b506040915080821d614046565b80600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc000000000000000008112613286576f80000000000000000000000000000000915f6780000000000000008216600f0b13614d4f575b5f6740000000000000008216600f0b13614d32575b5f6720000000000000008216600f0b13614d15575b5f6710000000000000008216600f0b13614cf8575b5f6708000000000000008216600f0b13614cdb575b5f6704000000000000008216600f0b13614cbe575b5f6702000000000000008216600f0b13614ca1575b5f6701000000000000008216600f0b13614c84575b5f66800000000000008216600f0b13614c67575b5f66400000000000008216600f0b13614c4a575b5f66200000000000008216600f0b13614c2d575b5f66100000000000008216600f0b13614c10575b5f66080000000000008216600f0b13614bf3575b5f66040000000000008216600f0b13614bd6575b5f66020000000000008216600f0b13614bb9575b5f66010000000000008216600f0b13614b9c575b5f658000000000008216600f0b13614b7f575b5f654000000000008216600f0b13614b62575b5f652000000000008216600f0b13614b45575b5f651000000000008216600f0b13614b28575b5f650800000000008216600f0b13614b0b575b5f650400000000008216600f0b13614aee575b5f650200000000008216600f0b13614ad1575b5f650100000000008216600f0b13614ab4575b5f6480000000008216600f0b13614a97575b5f6440000000008216600f0b13614a7a575b5f6420000000008216600f0b13614a5d575b5f6410000000008216600f0b13614a40575b5f6408000000008216600f0b13614a23575b5f6404000000008216600f0b13614a06575b5f6402000000008216600f0b136149e9575b5f6401000000008216600f0b136149cc575b5f63800000008216600f0b136149af575b5f63400000008216600f0b13614992575b5f63200000008216600f0b13614975575b5f63100000008216600f0b13614958575b5f63080000008216600f0b1361493b575b5f63040000008216600f0b1361491e575b5f63020000008216600f0b13614901575b5f63010000008216600f0b136148e4575b5f628000008216600f0b136148c7575b5f624000008216600f0b136148aa575b5f622000008216600f0b1361488d575b5f621000008216600f0b13614870575b5f620800008216600f0b13614853575b5f620400008216600f0b13614836575b5f620200008216600f0b13614819575b5f620100008216600f0b136147fc575b5f6180008216600f0b136147df575b5f6140008216600f0b136147c2575b5f6120008216600f0b136147a5575b5f6110008216600f0b13614788575b5f6108008216600f0b1361476b575b5f6104008216600f0b1361474e575b5f6102008216600f0b13614731575b5f6101008216600f0b13614714575b5f60808216600f0b136146f7575b5f60408216600f0b136146da575b5f60208216600f0b136146bd575b5f60108216600f0b136146a0575b5f60088216600f0b13614683575b5f60048216600f0b13614666575b5f60028216600f0b13614648575b60015f9116600f0b1361462b575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161071157600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c90614601565b7001000000000000000162e42fefa39ef35890920260801c916145f3565b9170010000000000000002c5c85fdf473de6b20260801c916145e5565b91700100000000000000058b90bfbe8e7bcd6d0260801c916145d7565b917001000000000000000b17217f7d1cf79afa0260801c916145c9565b91700100000000000000162e42fefa39ef366f0260801c916145bb565b917001000000000000002c5c85fdf473de6eca0260801c916145ad565b9170010000000000000058b90bfbe8e7bce5440260801c9161459f565b91700100000000000000b17217f7d1cf79e9490260801c91614591565b9170010000000000000162e42fefa39ef44d910260801c91614582565b91700100000000000002c5c85fdf473dea871f0260801c91614573565b917001000000000000058b90bfbe8e7bdcbe2e0260801c91614564565b9170010000000000000b17217f7d1cf7d83c1a0260801c91614555565b917001000000000000162e42fefa39f02b772c0260801c91614546565b9170010000000000002c5c85fdf473e242ea380260801c91614537565b91700100000000000058b90bfbe8e7cc35c3f00260801c91614528565b917001000000000000b17217f7d1cfb72b45e10260801c91614519565b91700100000000000162e42fefa39fe95583c20260801c91614509565b917001000000000002c5c85fdf4741bea6e77e0260801c916144f9565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c916144e9565b91700100000000000b17217f7d1d351a389d400260801c916144d9565b9170010000000000162e42fefa3ae53369388c0260801c916144c9565b91700100000000002c5c85fdf477b662b269450260801c916144b9565b917001000000000058b90bfbe8f71cb4e4b33d0260801c916144a9565b9170010000000000b17217f7d20cf927c8e94c0260801c91614499565b917001000000000162e42fefa494f1478fde050260801c91614488565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c91614477565b91700100000000058b90bfbe9ddbac5e109cce0260801c91614466565b917001000000000b17217f7d5a7716bba4a9ae0260801c91614455565b91700100000000162e42fefb2fed257559bdaa0260801c91614444565b917001000000002c5c85fdf84bd62ae30a74cc0260801c91614433565b9170010000000058b90bfbf8479bd5a81b51ad0260801c91614422565b91700100000000b17217f80f4ef5aadda455540260801c91614411565b9170010000000162e42ff0999ce3541b9fffcf0260801c916143ff565b91700100000002c5c85fe31f35a6a30da1be500260801c916143ed565b917001000000058b90bfcdee5acd3c1cedc8230260801c916143db565b9170010000000b17217fba9c739aa5819f44f90260801c916143c9565b917001000000162e42fff037df38aa2b219f060260801c916143b7565b9170010000002c5c8601cc6b9e94213c72737a0260801c916143a5565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91614393565b917001000000b1721835514b86e6d96efd1bfe0260801c91614381565b91700100000162e430e5a18f6119e3c02282a50260801c9161436e565b917001000002c5c863b73f016468f6bac5ca2b0260801c9161435b565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91614348565b91700100000b1721bcfc99d9f890ea069117630260801c91614335565b9170010000162e43f4f831060e02d839a9d16d0260801c91614322565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c9161430f565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c916142fc565b9170010000b17255775c040618bf4a4ade83fc0260801c916142e9565b917001000162e525ee054754457d59952920260260801c916142d5565b9170010002c5cc37da9491d0985c348c68e7b30260801c916142c1565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c916142ad565b917001000b175effdc76ba38e31671ca9397250260801c91614299565b91700100162f3904051fa128bca9c55c31e5df0260801c91614285565b917001002c605e2e8cec506d21bfc89a23a00f0260801c91614271565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c9161425d565b91700100b1afa5abcbed6129ab13ec11dc95430260801c91614249565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c91614234565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c9161421f565b917001059b0d31585743ae7c548eb68ca417fd0260801c9161420a565b9170010b5586cf9890f6298b92b71842a983630260801c916141f5565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c916141e0565b917001306fe0a31b7152de8d5a46305c85edec0260801c916141cb565b6fb504f333f9de6484597d89b3754abe9f92506141b656fea2646970667358221220e520796464cdc8822a564990f4be3efe6802bdb608714268e1fd795e29751cac64736f6c634300081e0033a26469706673582212208c60e4603f5bb795ce42a004f14e2b9304016817ca3f9a9ca6829ba5d166afff64736f6c634300081e0033610140346103f557601f6136f238819003918201601f19168301916001600160401b038311848410176103f957808492610100946040528339810103126103f5576100498161040d565b60208201519091906001600160a01b03811681036103f55760408201516001600160a01b03811691908281036103f5576060840151906001600160a01b038216908183036103f55761009d6080870161040d565b936100aa60a0880161040d565b956100bc60e060c08a0151990161040d565b986001600160a01b03169182156103e2575f80546001600160a01b031981168517825560405194916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a360e0521561038f575060a05215610339576080526001600160a01b038116156102e357610100526001600160a01b038116156102785761012052620f42408110156102335760c052600180546001600160a01b0319166001600160a01b03929092169190911790556040516132d09081610422823960805181818161052101528181610f5d015281816117490152612683015260a0518181816104f80152818161101c01528181611720015261265a015260c0518181816104a2015281816116ca015281816122fe0152612604015260e0518181816104cf0152818161108a015281816116f70152612631015261010051818181610a7b01528181611bb40152612a760152610120518181816103310152818161155901526124970152f35b60405162461bcd60e51b815260206004820152601c60248201527f506c616e6e65723a2070726f746f636f6c20666565203e3d2070706d000000006044820152606490fd5b60405162461bcd60e51b815260206004820152603660248201527f506c616e6e65723a2062616c616e6365642070616972206465706c6f7965722060448201527f616464726573732063616e6e6f74206265207a65726f000000000000000000006064820152608490fd5b60405162461bcd60e51b815260206004820152602860248201527f506c616e6e65723a206465706c6f79657220616464726573732063616e6e6f74604482015267206265207a65726f60c01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602860248201527f506c616e6e65723a206d696e74496d706c20616464726573732063616e6e6f74604482015267206265207a65726f60c01b6064820152608490fd5b62461bcd60e51b815260206004820152602860248201527f506c616e6e65723a2073776170496d706c20616464726573732063616e6e6f74604482015267206265207a65726f60c01b6064820152608490fd5b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036103f55756fe60806040526004361015610011575f80fd5b5f3560e01c806314c870c014612ab157806360cf7d4a146123215780636b4082d1146122c95780636b7b911214612247578063715018a6146121ad5780638da5cb5b1461215d5780639a043832146120ec5780639f181b5e146120b1578063a4689b24146110d4578063a7753f09146110ae578063ac210cc714611040578063c405e44214610fd2578063cce516b714610f81578063f0d1ae4f14610f13578063f2fde38b14610e27578063f317672514610dbf578063f525cb6814610d84578063f63772fc146101515763f70a3a17146100ea575f80fd5b3461014d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5773ffffffffffffffffffffffffffffffffffffffff610136612afb565b165f526006602052602060405f2054604051908152f35b5f80fd5b3461014d576101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5760043567ffffffffffffffff811161014d576101a1903690600401612bae565b60243567ffffffffffffffff811161014d576101c1903690600401612bae565b9060443567ffffffffffffffff811161014d576101e2903690600401612c3a565b906101eb612cb5565b926101f4612d22565b906101fd612d31565b93610206612d54565b956101243567ffffffffffffffff811161014d5761022b909695963690600401612cc5565b61016435966102386131d5565b83519861025d6102478b612c22565b9a6102556040519c8d612b6d565b808c52612c22565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe060208c01910136823760843560011c985f5b87518110156102af57808b6102a88f93600194612e6f565b5201610290565b50908b918b6102bc6131d5565b8015908115610d79575b5015610d1b578751865103610c975773ffffffffffffffffffffffffffffffffffffffff16928315610c135773ffffffffffffffffffffffffffffffffffffffff16958615610b8f57600f0b985f8a1315610b31578251885103610aad5780610aa2575b15610a79577f00000000000000000000000000000000000000000000000000000000000000009198905b5f5473ffffffffffffffffffffffffffffffffffffffff169160015473ffffffffffffffffffffffffffffffffffffffff16906040519b8c947f6ae73ce3000000000000000000000000000000000000000000000000000000008652600486015260248501610180905261018485016103cd9089612f54565b8581037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc016044870152610401908d612f54565b8581037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc016064870152610435908c612f97565b9160848601528482037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0160a4860152519081815260200192905f5b818110610a60575050505f73ffffffffffffffffffffffffffffffffffffffff8460209694819460a43560c48401527f000000000000000000000000000000000000000000000000000000000000000060e4840152610104830152827f000000000000000000000000000000000000000000000000000000000000000016610124830152827f000000000000000000000000000000000000000000000000000000000000000016610144830152827f0000000000000000000000000000000000000000000000000000000000000000166101648301520393165af1968715610904575f97610a0f575b5061056487612fe0565b73ffffffffffffffffffffffffffffffffffffffff871691825f52600460205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790555f5b86518110156106d05773ffffffffffffffffffffffffffffffffffffffff6105db8289612e6f565b511690815f52600560205260ff60405f20541615610611575b6001915f52600660205261060b8a60405f20613050565b016105b3565b60035491680100000000000000008310156106a3578061066661063b856001809701600355612e15565b819391549073ffffffffffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b9055805f52600560205260405f20837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905591506105f4565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b509087837ff45e30d37dc5ef98e17708308b886213b8f485ea52d495067eed8d4977423f2261071589956107316107238d604051948594606086526060860190612f54565b908482036020860152612f54565b828103604084015288612f97565b0390a25f5b835181101561095b576107498187612e6f565b51610757575b600101610736565b73ffffffffffffffffffffffffffffffffffffffff6107768286612e6f565b51166107828288612e6f565b51604051907f23b872dd000000000000000000000000000000000000000000000000000000005f52856004528760245260445260205f60648180865af19060015f511482161561093a575b6040525f6060521561090f57506024602073ffffffffffffffffffffffffffffffffffffffff6107fd8488612e6f565b5116604051928380927f70a082310000000000000000000000000000000000000000000000000000000082528a60048301525afa908115610904575f916108d3575b5061084a8288612e6f565b511461074f5760846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f6665652d6f6e2d7472616e7366657220746f6b656e73206e6f7420737570706f60448201527f72746564000000000000000000000000000000000000000000000000000000006064820152fd5b90506020813d82116108fc575b816108ed60209383612b6d565b8101031261014d57518861083f565b3d91506108e0565b6040513d5f823e3d90fd5b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b90600181151661095257823b15153d151616906107cd565b503d5f823e3d90fd5b6040517f6d8d0ff300000000000000000000000000000000000000000000000000000000815260048101889052610144356024820152826020826044815f8b5af1918215610904575f926109db575b506040805173ffffffffffffffffffffffffffffffffffffffff9092168252602082019290925290819081015b0390f35b9091506020813d602011610a07575b816109f760209383612b6d565b8101031261014d575190826109aa565b3d91506109ea565b9096506020813d602011610a58575b81610a2b60209383612b6d565b8101031261014d575173ffffffffffffffffffffffffffffffffffffffff8116810361014d57958761055a565b3d9150610a1e565b825185528d955060209485019490920191600101610471565b7f0000000000000000000000000000000000000000000000000000000000000000919890610354565b50600287511461032a565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f506c616e6e65723a206665657320616e6420746f6b656e73206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f506c616e6e65723a206b61707061206d757374206265203e20300000000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f506c616e6e65723a2072656365697665722063616e6e6f74206265207a65726f60448201527f20616464726573730000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f506c616e6e65723a2070617965722063616e6e6f74206265207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f506c616e6e65723a20746f6b656e7320616e64206465706f73697473206c656e60448201527f677468206d69736d6174636800000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f506c616e6e65723a20646561646c696e652065786365656465640000000000006044820152fd5b90504211158b6102c6565b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d576020600254604051908152f35b3461014d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5773ffffffffffffffffffffffffffffffffffffffff610e0b612afb565b165f526004602052602060ff60405f2054166040519015158152f35b3461014d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5773ffffffffffffffffffffffffffffffffffffffff610e73612afb565b610e7b6131d5565b168015610ee75773ffffffffffffffffffffffffffffffffffffffff5f54827fffffffffffffffffffffffff00000000000000000000000000000000000000008216175f55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b7f1e4fbdf7000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461014d576109d76110c86110c236612d78565b9061312b565b60405191829182612b1e565b3461014d576101a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5760043567ffffffffffffffff811161014d57611124903690600401612bae565b60243567ffffffffffffffff811161014d57611144903690600401612bae565b9060443567ffffffffffffffff811161014d57611165903690600401612c3a565b9161116e612cb5565b916084359182600f0b80930361014d5760e43594851515860361014d57611193612d54565b94610124359073ffffffffffffffffffffffffffffffffffffffff821680920361014d576101443567ffffffffffffffff811161014d576111d8903690600401612cc5565b9061018435966111e66131d5565b81600f0b906801000000000000000082121561202d5768010000000000000000811215611fa9578551916001831115611f4b575f1215611eed578068010000000000000000017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580611ed3575b1561014d57600f0b9061126883613221565b927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908111611ea65761129c90613221565b600f0b0260401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580611e8c575b1561014d57600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580611e72575b1561014d57600f90810b92900b8112611e03575f821315611da55761132e91613239565b600f0b5f81138080611d93575b15611d35571561014d575f908068010000000000000000821215611d28575b806401000000006002921215611d1c575b62010000811215611d10575b610100811215611d04575b6010811215611cf8575b6004811215611ced575b1215611ce3575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f8313611cc757506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082600f0b1461014d5761142f915f03600f0b613239565b600f0b5f811315611c6957801561014d57700100000000000000000000000000000000057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580611c4f575b1561014d57600f0b945f861315611bf1576114999796976131d5565b8351986114a86102478b612c22565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe060208c01910136823760a43560011c985f5b87518110156114fa57808b6114f38f93600194612e6f565b52016114db565b50908b918b6115076131d5565b8015908115611be6575b5015610d1b578751865103610c975773ffffffffffffffffffffffffffffffffffffffff16928315610c13578615610b8f578251885103610aad5780611bdb575b15611bb2577f00000000000000000000000000000000000000000000000000000000000000009198905b5f5473ffffffffffffffffffffffffffffffffffffffff169160015473ffffffffffffffffffffffffffffffffffffffff16906040519b8c947f6ae73ce3000000000000000000000000000000000000000000000000000000008652600486015260248501610180905261018485016115f59089612f54565b8581037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc016044870152611629908d612f54565b8581037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01606487015261165d908c612f97565b9160848601528482037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0160a4860152519081815260200192905f5b818110611b99575050505f73ffffffffffffffffffffffffffffffffffffffff8460209694819460c43560c48401527f000000000000000000000000000000000000000000000000000000000000000060e4840152610104830152827f000000000000000000000000000000000000000000000000000000000000000016610124830152827f000000000000000000000000000000000000000000000000000000000000000016610144830152827f0000000000000000000000000000000000000000000000000000000000000000166101648301520393165af1968715610904575f97611b48575b5061178c87612fe0565b73ffffffffffffffffffffffffffffffffffffffff871691825f52600460205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790555f5b86518110156118a05773ffffffffffffffffffffffffffffffffffffffff6118038289612e6f565b511690815f52600560205260ff60405f20541615611839575b6001915f5260066020526118338a60405f20613050565b016117db565b60035491680100000000000000008310156106a3578061186361063b856001809701600355612e15565b9055805f52600560205260405f20837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055915061181c565b509087837ff45e30d37dc5ef98e17708308b886213b8f485ea52d495067eed8d4977423f2261071589956118e56107238d604051948594606086526060860190612f54565b0390a25f5b8351811015611ad0576118fd8187612e6f565b5161190b575b6001016118ea565b73ffffffffffffffffffffffffffffffffffffffff61192a8286612e6f565b51166119368288612e6f565b51604051907f23b872dd000000000000000000000000000000000000000000000000000000005f52856004528760245260445260205f60648180865af19060015f5114821615611ab8575b6040525f6060521561090f57506024602073ffffffffffffffffffffffffffffffffffffffff6119b18488612e6f565b5116604051928380927f70a082310000000000000000000000000000000000000000000000000000000082528a60048301525afa908115610904575f91611a87575b506119fe8288612e6f565b51146119035760846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f6665652d6f6e2d7472616e7366657220746f6b656e73206e6f7420737570706f60448201527f72746564000000000000000000000000000000000000000000000000000000006064820152fd5b90506020813d8211611ab0575b81611aa160209383612b6d565b8101031261014d5751886119f3565b3d9150611a94565b90600181151661095257823b15153d15161690611981565b6040517f6d8d0ff300000000000000000000000000000000000000000000000000000000815260048101889052610164356024820152826020826044815f8b5af1918215610904575f926109db57506040805173ffffffffffffffffffffffffffffffffffffffff9290921682526020820192909252f35b9096506020813d602011611b91575b81611b6460209383612b6d565b8101031261014d575173ffffffffffffffffffffffffffffffffffffffff8116810361014d579587611782565b3d9150611b57565b825185528d955060209485019490920191600101611699565b7f000000000000000000000000000000000000000000000000000000000000000091989061157c565b506002875114611552565b90504211158b611511565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4d53523a206b617070613c3d300000000000000000000000000000000000006044820152fd5b506f7fffffffffffffffffffffffffffffff81131561147d565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4c4d53523a20793c3d30000000000000000000000000000000000000000000006044820152fd5b8002908160ff1c9182607f011c918302019160011d91906113d4565b906001019061139d565b92810192811d611396565b6004938401931d61138c565b6008938401931d611382565b6010938401931d611377565b6020938401931d61136b565b506040915080821d61135a565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4c4d53523a20626164204520726174696f0000000000000000000000000000006044820152fd5b5068010000000000000000821261133b565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4c4d53523a207320746f6f206c6172676520666f72206e0000000000000000006044820152fd5b5f821315611e145761132e91613239565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4c4d53523a2062616420736c697070616765206f72206e0000000000000000006044820152fd5b506f7fffffffffffffffffffffffffffffff81131561130a565b506f7fffffffffffffffffffffffffffffff8113156112cd565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b506f7fffffffffffffffffffffffffffffff811315611256565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4c4d53523a20663d3000000000000000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4c4d53523a206e3e3120726571756972656400000000000000000000000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f506c616e6e65723a20746172676574536c697070616765206d7573742062652060448201527f3c2031202836342e3634290000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f506c616e6e65723a20747261646546726163206d757374206265203c2031202860448201527f36342e36342900000000000000000000000000000000000000000000000000006064820152fd5b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d576020600354604051908152f35b3461014d576121036120fd36612d78565b9061308b565b6040518091602082016020835281518091526020604084019201905f5b81811061212e575050500390f35b825173ffffffffffffffffffffffffffffffffffffffff16845285945060209384019390920191600101612120565b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d576121e36131d5565b5f73ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461014d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5773ffffffffffffffffffffffffffffffffffffffff612293612afb565b61229b6131d5565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060015416176001555f80f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461014d576101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5760043567ffffffffffffffff811161014d57612371903690600401612bae565b60243567ffffffffffffffff811161014d57612391903690600401612bae565b60443567ffffffffffffffff811161014d576123b1903690600401612c3a565b6123b9612cb5565b60843567ffffffffffffffff811161014d576123d9903690600401612cc5565b6123e1612d22565b946123ea612d31565b916123f3612d54565b906101243567ffffffffffffffff811161014d57612415903690600401612cc5565b93610164356124226131d5565b8015908115612aa6575b5015610d1b578651855103610c975773ffffffffffffffffffffffffffffffffffffffff16918215610c135773ffffffffffffffffffffffffffffffffffffffff16948515610b8f57600f0b975f891315610b31578151875103610aad5780612a9b575b15612a74577f0000000000000000000000000000000000000000000000000000000000000000905b73ffffffffffffffffffffffffffffffffffffffff5f54169073ffffffffffffffffffffffffffffffffffffffff600154166040519a8b937f6ae73ce30000000000000000000000000000000000000000000000000000000085526004850152610180602485015261259461256461253461018487018a612f54565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8782030160448801528d612f54565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8682030160648701528b612f97565b9060848501527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8482030160a4850152602080845192838152019301905f5b818110612a5b575050505f73ffffffffffffffffffffffffffffffffffffffff8460209694819460a43560c48401527f000000000000000000000000000000000000000000000000000000000000000060e4840152610104830152827f000000000000000000000000000000000000000000000000000000000000000016610124830152827f000000000000000000000000000000000000000000000000000000000000000016610144830152827f0000000000000000000000000000000000000000000000000000000000000000166101648301520393165af1968715610904575f97612a0a575b506126c687612fe0565b73ffffffffffffffffffffffffffffffffffffffff871691825f52600460205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790555f5b86518110156127da5773ffffffffffffffffffffffffffffffffffffffff61273d8289612e6f565b511690815f52600560205260ff60405f20541615612773575b6001915f52600660205261276d8a60405f20613050565b01612715565b60035491680100000000000000008310156106a3578061279d61063b856001809701600355612e15565b9055805f52600560205260405f20837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790559150612756565b509087837ff45e30d37dc5ef98e17708308b886213b8f485ea52d495067eed8d4977423f22610715899561281f6107238d604051948594606086526060860190612f54565b0390a25f5b835181101561095b576128378187612e6f565b51612845575b600101612824565b73ffffffffffffffffffffffffffffffffffffffff6128648286612e6f565b51166128708288612e6f565b51604051907f23b872dd000000000000000000000000000000000000000000000000000000005f52856004528760245260445260205f60648180865af19060015f51148216156129f2575b6040525f6060521561090f57506024602073ffffffffffffffffffffffffffffffffffffffff6128eb8488612e6f565b5116604051928380927f70a082310000000000000000000000000000000000000000000000000000000082528a60048301525afa908115610904575f916129c1575b506129388288612e6f565b511461283d5760846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f6665652d6f6e2d7472616e7366657220746f6b656e73206e6f7420737570706f60448201527f72746564000000000000000000000000000000000000000000000000000000006064820152fd5b90506020813d82116129ea575b816129db60209383612b6d565b8101031261014d57518861292d565b3d91506129ce565b90600181151661095257823b15153d151616906128bb565b9096506020813d602011612a53575b81612a2660209383612b6d565b8101031261014d575173ffffffffffffffffffffffffffffffffffffffff8116810361014d5795876126bc565b3d9150612a19565b825185528d9550602094850194909201916001016125d3565b7f0000000000000000000000000000000000000000000000000000000000000000906124b8565b506002865114612490565b90504211158a61242c565b3461014d5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d576109d76110c8612aee612afb565b6044359060243590612e83565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361014d57565b60206040818301928281528451809452019201905f5b818110612b415750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101612b34565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176106a357604052565b81601f8201121561014d5780359067ffffffffffffffff82116106a35760405192612c0160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601160185612b6d565b8284526020838301011161014d57815f926020809301838601378301015290565b67ffffffffffffffff81116106a35760051b60200190565b9080601f8301121561014d57813590612c5282612c22565b92612c606040519485612b6d565b82845260208085019360051b82010191821161014d57602001915b818310612c885750505090565b823573ffffffffffffffffffffffffffffffffffffffff8116810361014d57815260209283019201612c7b565b6064359081600f0b820361014d57565b9080601f8301121561014d578135612cdc81612c22565b92612cea6040519485612b6d565b81845260208085019260051b82010192831161014d57602001905b828210612d125750505090565b8135815260209182019101612d05565b60c43590811515820361014d57565b60e4359073ffffffffffffffffffffffffffffffffffffffff8216820361014d57565b610104359073ffffffffffffffffffffffffffffffffffffffff8216820361014d57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc604091011261014d576004359060243590565b90612db682612c22565b612dc36040519182612b6d565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0612df18294612c22565b0190602036910137565b91908201809211611ea657565b91908203918211611ea657565b600354811015612e2d5760035f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8054821015612e2d575f5260205f2001905f90565b8051821015612e2d5760209160051b010190565b73ffffffffffffffffffffffffffffffffffffffff90929192165f52600660205260405f2090815480841015612f3857808491612ec08484612dfb565b1115612f3057612ed09250612e08565b905b612edb82612dac565b925f5b838110612eec575050505090565b8073ffffffffffffffffffffffffffffffffffffffff612f17612f1160019486612dfb565b86612e5a565b90549060031b1c16612f298288612e6f565b5201612ede565b505090612ed2565b50505050604051612f4a602082612b6d565b5f81525f36813790565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b90602080835192838152019201905f5b818110612fb45750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101612fa7565b600254680100000000000000008110156106a35773ffffffffffffffffffffffffffffffffffffffff61301e82600161304c94016002556002612e5a565b919093169083549073ffffffffffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b9055565b8054680100000000000000008110156106a35761301e8161304c93600173ffffffffffffffffffffffffffffffffffffffff94018155612e5a565b919060035480841015613119578084916130a58484612dfb565b1115613112576130b59250612e08565b6130be81612dac565b905f5b8181106130cf575090925050565b8073ffffffffffffffffffffffffffffffffffffffff6130f96130f460019489612dfb565b612e15565b90549060031b1c1661310b8286612e6f565b52016130c1565b50506130b5565b50509050604051612f4a602082612b6d565b90600254808310156131c4578083916131448484612dfb565b11156131bc576131549250612e08565b905b61315f82612dac565b915f91600254925b828110613175575050505090565b61317f8183612dfb565b9084821015612e2d5773ffffffffffffffffffffffffffffffffffffffff60019260025f5260205f200154166131b58288612e6f565b5201613167565b505090613156565b505050604051612f4a602082612b6d565b73ffffffffffffffffffffffffffffffffffffffff5f541633036131f557565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b677fffffffffffffff811161014d5760401b600f0b90565b90600f0b90811561014d5760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613280575b1561014d57600f0b90565b506f7fffffffffffffffffffffffffffffff81131561327556fea2646970667358221220c43e3b538be70614df138fb93465096e6d629b1716664b5620affbf747d33b3e64736f6c634300081e003360c03461009a57601f612fd338819003918201601f19168301916001600160401b0383118484101761009e57808492604094855283398101031261009a578051906001600160a01b038216820361009a5760200151906001600160a01b038216820361009a5760805260a052604051612f2090816100b3823960805181610311015260a0518181816106c401528181610e57015261189f0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c9081630ab75fef14611968575080630db4cdda1461171c5780633a06daa2146111d357806344e48a9c14610f6157806397c6481214610cd4578063ad84489314610bf5578063b9c0d20414610888578063bfb5cdc51461058b578063c63a9743146100d95763c757221b1461008a575f80fd5b346100d55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d55760206100cb6100c6611a3b565b611e69565b6040519015158152f35b5f80fd5b346100d55760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d557610110611a3b565b6024356044356064359283600f0b8094036100d55773ffffffffffffffffffffffffffffffffffffffff16916040517f476e44b60000000000000000000000000000000000000000000000000000000081525f81600481875afa80156103a1576020915f91610569575b500180515180831080610560575b15610502575f8613156104a45715610446576040517f017cf6610000000000000000000000000000000000000000000000000000000081525f81600481885afa9081156103a1575f91610424575b50604051907f6bba3f2f000000000000000000000000000000000000000000000000000000008252602082600481895afa9182156103a1575f926103e3575b5060206044935196604051948580927f939f5ea40000000000000000000000000000000000000000000000000000000082528860048301528960248301525afa9283156103a1575f936103ac575b50906060956102ba6102f293604051998a9889987fbf05a0a6000000000000000000000000000000000000000000000000000000008a5260048a01526024890152604488015260e0606488015260e4870190611ad6565b91600f0b60848601527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8583030160a4860152611d44565b9060c4830152038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156103a1575f905f925f9161036a575b5061036690604051938493846040919493926060820195825260208201520152565b0390f35b90506103669250610393915060603d60601161039a575b61038b8183611b09565b810190611d29565b9092610344565b503d610381565b6040513d5f823e3d90fd5b919092506020823d6020116103db575b816103c960209383611b09565b810103126100d5579051916060610263565b3d91506103bc565b9291506020833d60201161041c575b816103ff60209383611b09565b810103126100d5576020610414604494611b77565b929350610215565b3d91506103f2565b61044091503d805f833e6104388183611b09565b810190611c6e565b866101d6565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f73776170546f4c696d69743a20706f6f6c20756e696e697469616c697a6564006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f73776170546f4c696d69743a206c696d6974203c3d20300000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f73776170546f4c696d69743a20696478000000000000000000000000000000006044820152fd5b50808410610188565b61058591503d805f833e61057d8183611b09565b810190611b9d565b8661017a565b346100d55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d55773ffffffffffffffffffffffffffffffffffffffff6105d7611a3b565b166040517f476e44b60000000000000000000000000000000000000000000000000000000081525f81600481855afa80156103a1576020915f9161086e575b500151519061062482611dcf565b915f5b81811061075a576040517f18160ddd0000000000000000000000000000000000000000000000000000000081528490602081600481885afa9081156103a1575f91610726575b506106ab915f9160405193849283927fcdc2468b00000000000000000000000000000000000000000000000000000000845260243560048501611e4a565b038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156103a157610366915f9161070c575b50604051918291602083526020830190611ad6565b61072091503d805f833e6104388183611b09565b826106f7565b90506020813d602011610752575b8161074160209383611b09565b810103126100d557516106ab61066d565b3d9150610734565b604051907fe4b50cb8000000000000000000000000000000000000000000000000000000008252806004830152602082602481875afa9182156103a15773ffffffffffffffffffffffffffffffffffffffff926020915f91610841575b506024604051809581937f70a08231000000000000000000000000000000000000000000000000000000008352896004840152165afa80156103a1575f9061080f575b600192506108088287611ce8565b5201610627565b506020823d8211610839575b8161082860209383611b09565b810103126100d557600191516107fa565b3d915061081b565b6108619150823d8111610867575b6108598183611b09565b810190611e1e565b876107b7565b503d61084f565b61088291503d805f833e61057d8183611b09565b83610616565b346100d55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d5576108bf611a3b565b73ffffffffffffffffffffffffffffffffffffffff6024359116906040517f476e44b60000000000000000000000000000000000000000000000000000000081525f81600481865afa80156103a1576020915f91610bdb575b50018051518015610b7d57821015610b1f576020600493604051948580927f6bba3f2f0000000000000000000000000000000000000000000000000000000082525afa9283156103a1575f93610ae3575b5051906109758261210c565b9261099084600f0b945f86139261098b84611f94565b61205e565b9061099f5f83600f0b13611ff9565b15610a85576109ad90612141565b5f928051915f935b838510610a2257868681156100d55760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580610a08575b156100d557602090600f0b604051908152f35b506f7fffffffffffffffffffffffffffffff8113156109f5565b9091929394610a7a600191610a74610a61610a5c8761098b610a448d8c611ce8565b51600f0b610a528a8d611ce8565b51600f0b90612191565b612281565b610a6b8a89611ce8565b51600f0b61205e565b90612244565b9501939291906109b5565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c4d53523a2073697a65207a65726f00000000000000000000000000000000006044820152fd5b9092506020813d602011610b17575b81610aff60209383611b09565b810103126100d557610b1090611b77565b9183610969565b3d9150610af2565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f706f6f6c50726963653a206964780000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f706f6f6c50726963653a20756e696e69740000000000000000000000000000006044820152fd5b610bef91503d805f833e61057d8183611b09565b84610918565b346100d55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d55773ffffffffffffffffffffffffffffffffffffffff6020610c43611a3b565b610c4b611a5e565b506004604051809481937f31596a6a000000000000000000000000000000000000000000000000000000008352165afa9081156103a1575f91610ca0575b6020610c97836044356120b9565b50604051908152f35b90506020813d602011610ccc575b81610cbb60209383611b09565b810103126100d55751610c97610c89565b3d9150610cae565b346100d55773ffffffffffffffffffffffffffffffffffffffff610cf736611a81565b6040517f476e44b60000000000000000000000000000000000000000000000000000000081529390921691905f84600481865afa9384156103a1575f94610f45575b506040517f9af1d35a0000000000000000000000000000000000000000000000000000000081525f81600481875afa9081156103a157610d829184915f91610f2b575b50611ce8565b5193604051937f017cf6610000000000000000000000000000000000000000000000000000000085525f85600481845afa9485156103a1575f95610f07575b50906020600492604051938480927f18160ddd0000000000000000000000000000000000000000000000000000000082525afa9182156103a1575f92610ed2575b5090604094610e3e92865197889687967ff16b7c2600000000000000000000000000000000000000000000000000000000885260048801611d7a565b038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156103a1575f905f90610e98575b6040809350519182526020820152f35b50506040813d604011610eca575b81610eb360409383611b09565b810103126100d55780602060409251910151610e88565b3d9150610ea6565b91506020823d602011610eff575b81610eed60209383611b09565b810103126100d5579051906040610e02565b3d9150610ee0565b600492919550610f226020913d805f833e6104388183611b09565b95919250610dc1565b610f3f91503d805f833e6104388183611b09565b87610d7c565b610f5a9194503d805f833e61057d8183611b09565b9284610d39565b346100d55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d55773ffffffffffffffffffffffffffffffffffffffff610fad611a3b565b166040517f476e44b60000000000000000000000000000000000000000000000000000000081525f81600481855afa80156103a1576020915f916111b9575b5001515190610ffa82611dcf565b915f5b8181106110b5576040517f18160ddd0000000000000000000000000000000000000000000000000000000081528490602081600481885afa9081156103a1575f91611081575b506106ab915f9160405193849283927f228fa85000000000000000000000000000000000000000000000000000000000845260243560048501611e4a565b90506020813d6020116110ad575b8161109c60209383611b09565b810103126100d557516106ab611043565b3d915061108f565b604051907fe4b50cb8000000000000000000000000000000000000000000000000000000008252806004830152602082602481875afa9182156103a15773ffffffffffffffffffffffffffffffffffffffff926020915f9161119c575b506024604051809581937f70a08231000000000000000000000000000000000000000000000000000000008352896004840152165afa80156103a1575f9061116a575b600192506111638287611ce8565b5201610ffd565b506020823d8211611194575b8161118360209383611b09565b810103126100d55760019151611155565b3d9150611176565b6111b39150823d8111610867576108598183611b09565b87611112565b6111cd91503d805f833e61057d8183611b09565b83610fec565b346100d55773ffffffffffffffffffffffffffffffffffffffff6111f636611a81565b92909116906040517f476e44b60000000000000000000000000000000000000000000000000000000081525f81600481865afa80156103a1576020915f91611702575b500180515180156116a457808310908161169a575b501561163c576040517f6bba3f2f000000000000000000000000000000000000000000000000000000008152602081600481875afa9081156103a1575f916115ed575b50610a5c9061098b6112d06112bd6112e99551936112ae8561210c565b9061098b5f83600f0b13611f94565b6112cb5f82600f0b13611ff9565b612141565b91610a52866112df8a84611ce8565b51600f0b92611ce8565b926040517f017cf6610000000000000000000000000000000000000000000000000000000081525f81600481875afa9081156103a1576004935f926113349284916115d35750611ce8565b5193604051938480927f017cf6610000000000000000000000000000000000000000000000000000000082525afa80156103a157611378925f916115b95750611ce8565b519081156100d55777ffffffffffffffffffffffffffffffffffffffffffffffff811161140757906113ac9160401b6121ce565b6fffffffffffffffffffffffffffffffff81116100d5576fffffffffffffffffffffffffffffffff166f7fffffffffffffffffffffffffffffff81116100d5576020916113fc91600f0b9061205e565b60405190600f0b8152f35b60c09181831c80936401000000008210156115ac575b600282620100006114aa9410156115a0575b610100811015611594575b6010811015611588575b600481101561157d575b1015611575575b8360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b6121ce565b926fffffffffffffffffffffffffffffffff84116100d5578160801c8402906fffffffffffffffffffffffffffffffff8316850290809460401b9082821061154b575b5003928160801b91828510611522575b60801c036115175761150f92036121ce565b905b016113ac565b505050600190611511565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906114fd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019450876114ed565b600101611455565b91810191811c61144e565b6004928301921c611444565b6008928301921c61143a565b6010928301921c61142f565b505060e082811c9061141d565b6115cd91503d805f833e6104388183611b09565b85610d7c565b6115e791503d8086833e6104388183611b09565b88610d7c565b90506020813d602011611634575b8161160860209383611b09565b810103126100d5576112e99161098b6112d06112bd611629610a5c95611b77565b945050505091611291565b3d91506115fb565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f70726963653a20696478000000000000000000000000000000000000000000006044820152fd5b905084108561124e565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f70726963653a20756e696e6974000000000000000000000000000000000000006044820152fd5b61171691503d805f833e61057d8183611b09565b85611239565b346100d55773ffffffffffffffffffffffffffffffffffffffff61173f36611a81565b6040517f476e44b60000000000000000000000000000000000000000000000000000000081529390921691905f84600481865afa9384156103a1575f9461194c575b506040517f9af1d35a0000000000000000000000000000000000000000000000000000000081525f81600481875afa9081156103a1576117c99183915f91610f2b5750611ce8565b5193604051937f017cf6610000000000000000000000000000000000000000000000000000000085525f85600481845afa9485156103a1575f95611928575b50906020600492604051938480927f18160ddd0000000000000000000000000000000000000000000000000000000082525afa9182156103a1575f926118f3575b50906060946118869260405197889687967fe9f317f000000000000000000000000000000000000000000000000000000000885260048801611d7a565b038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156103a1575f905f925f9161036a575061036690604051938493846040919493926060820195825260208201520152565b91506020823d602011611920575b8161190e60209383611b09565b810103126100d5579051906060611849565b3d9150611901565b6004929195506119436020913d805f833e6104388183611b09565b95919250611808565b6119619194503d805f833e61057d8183611b09565b9284611781565b346100d55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d5576020816024816119a5611a3b565b73ffffffffffffffffffffffffffffffffffffffff806119c3611a5e565b16917f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa80156103a1575f90611a08575b602090604051908152f35b506020813d602011611a33575b81611a2260209383611b09565b810103126100d557602090516119fd565b3d9150611a15565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036100d557565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036100d557565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60609101126100d55760043573ffffffffffffffffffffffffffffffffffffffff811681036100d557906024359060443590565b90602080835192838152019201905f5b818110611af35750505090565b8251845260209384019390920191600101611ae6565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611b4a57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b519081600f0b82036100d557565b67ffffffffffffffff8111611b4a5760051b60200190565b6020818303126100d55780519067ffffffffffffffff82116100d55701906040828203126100d557604051916040830183811067ffffffffffffffff821117611b4a57604052611bec81611b77565b835260208101519067ffffffffffffffff82116100d557019080601f830112156100d5578151611c1b81611b85565b92611c296040519485611b09565b81845260208085019260051b8201019283116100d557602001905b828210611c5657505050602082015290565b60208091611c6384611b77565b815201910190611c44565b6020818303126100d55780519067ffffffffffffffff82116100d557019080601f830112156100d5578151611ca281611b85565b92611cb06040519485611b09565b81845260208085019260051b8201019283116100d557602001905b828210611cd85750505090565b8151815260209182019101611ccb565b8051821015611cfc5760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b908160609103126100d5578051916040602083015192015190565b90602080835192838152019201905f5b818110611d615750505090565b8251600f0b845260209384019390920191600101611d54565b9695949160a094611dca94602092611dbc948b52838b015260408a015260c060608a01528051600f0b60c08a01520151604060e0890152610100880190611d44565b908682036080880152611ad6565b930152565b90611dd982611b85565b611de66040519182611b09565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611e148294611b85565b0190602036910137565b908160209103126100d5575173ffffffffffffffffffffffffffffffffffffffff811681036100d55790565b611e669392606092825260208201528160408201520190611ad6565b90565b73ffffffffffffffffffffffffffffffffffffffff166040517f1f3a0e41000000000000000000000000000000000000000000000000000000008152602081600481855afa9081156103a1575f91611f59575b50611f54575f600491604051928380927f476e44b60000000000000000000000000000000000000000000000000000000082525afa9081156103a1575f91611f3a575b505f5b60208201518051821015611f3357611f1b825f92611ce8565b51600f0b13611f2c57600101611f02565b5050600190565b5050505f90565b611f4e91503d805f833e61057d8183611b09565b5f611eff565b505f90565b90506020813d602011611f8c575b81611f7460209383611b09565b810103126100d5575180151581036100d5575f611ebc565b3d9150611f67565b15611f9b57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b1561200057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4c4d53523a20623c3d30000000000000000000000000000000000000000000006044820152fd5b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061209f575b156100d557600f0b90565b506f7fffffffffffffffffffffffffffffff811315612094565b91908015612106576120cb9083612205565b918281039081116120d95790565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b505f9190565b5f90815b815183101561213b576121336001916121298585611ce8565b51600f0b90612244565b920191612110565b91505090565b600f0b80156100d557700100000000000000000000000000000000057fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061209f57156100d557600f0b90565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061209f57156100d557600f0b90565b81156121d8570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b811561223e578181029181830414901517156120d957620f42408101908181116120d957620f423f019081116120d957620f4240900490565b50505f90565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061209f57156100d557600f0b90565b600f0b684000000000000000008112156100d5577fffffffffffffffffffffffffffffffffffffffffffffffc000000000000000008112611f5457611e6690700171547652b82fe1777d0ffda0d23a7d120260801d600f0b80684000000000000000008112156100d5577fffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000811261223e576f80000000000000000000000000000000915f6780000000000000008216600f0b13612ed2575b5f6740000000000000008216600f0b13612eb5575b5f6720000000000000008216600f0b13612e98575b5f6710000000000000008216600f0b13612e7b575b5f6708000000000000008216600f0b13612e5e575b5f6704000000000000008216600f0b13612e41575b5f6702000000000000008216600f0b13612e24575b5f6701000000000000008216600f0b13612e07575b5f66800000000000008216600f0b13612dea575b5f66400000000000008216600f0b13612dcd575b5f66200000000000008216600f0b13612db0575b5f66100000000000008216600f0b13612d93575b5f66080000000000008216600f0b13612d76575b5f66040000000000008216600f0b13612d59575b5f66020000000000008216600f0b13612d3c575b5f66010000000000008216600f0b13612d1f575b5f658000000000008216600f0b13612d02575b5f654000000000008216600f0b13612ce5575b5f652000000000008216600f0b13612cc8575b5f651000000000008216600f0b13612cab575b5f650800000000008216600f0b13612c8e575b5f650400000000008216600f0b13612c71575b5f650200000000008216600f0b13612c54575b5f650100000000008216600f0b13612c37575b5f6480000000008216600f0b13612c1a575b5f6440000000008216600f0b13612bfd575b5f6420000000008216600f0b13612be0575b5f6410000000008216600f0b13612bc3575b5f6408000000008216600f0b13612ba6575b5f6404000000008216600f0b13612b89575b5f6402000000008216600f0b13612b6c575b5f6401000000008216600f0b13612b4f575b5f63800000008216600f0b13612b32575b5f63400000008216600f0b13612b15575b5f63200000008216600f0b13612af8575b5f63100000008216600f0b13612adb575b5f63080000008216600f0b13612abe575b5f63040000008216600f0b13612aa1575b5f63020000008216600f0b13612a84575b5f63010000008216600f0b13612a67575b5f628000008216600f0b13612a4a575b5f624000008216600f0b13612a2d575b5f622000008216600f0b13612a10575b5f621000008216600f0b136129f3575b5f620800008216600f0b136129d6575b5f620400008216600f0b136129b9575b5f620200008216600f0b1361299c575b5f620100008216600f0b1361297f575b5f6180008216600f0b13612962575b5f6140008216600f0b13612945575b5f6120008216600f0b13612928575b5f6110008216600f0b1361290b575b5f6108008216600f0b136128ee575b5f6104008216600f0b136128d1575b5f6102008216600f0b136128b4575b5f6101008216600f0b13612897575b5f60808216600f0b1361287a575b5f60408216600f0b1361285d575b5f60208216600f0b13612840575b5f60108216600f0b13612823575b5f60088216600f0b13612806575b5f60048216600f0b136127e9575b5f60028216600f0b136127cb575b60015f9116600f0b136127ae575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff81116100d557600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c90612784565b7001000000000000000162e42fefa39ef35890920260801c91612776565b9170010000000000000002c5c85fdf473de6b20260801c91612768565b91700100000000000000058b90bfbe8e7bcd6d0260801c9161275a565b917001000000000000000b17217f7d1cf79afa0260801c9161274c565b91700100000000000000162e42fefa39ef366f0260801c9161273e565b917001000000000000002c5c85fdf473de6eca0260801c91612730565b9170010000000000000058b90bfbe8e7bce5440260801c91612722565b91700100000000000000b17217f7d1cf79e9490260801c91612714565b9170010000000000000162e42fefa39ef44d910260801c91612705565b91700100000000000002c5c85fdf473dea871f0260801c916126f6565b917001000000000000058b90bfbe8e7bdcbe2e0260801c916126e7565b9170010000000000000b17217f7d1cf7d83c1a0260801c916126d8565b917001000000000000162e42fefa39f02b772c0260801c916126c9565b9170010000000000002c5c85fdf473e242ea380260801c916126ba565b91700100000000000058b90bfbe8e7cc35c3f00260801c916126ab565b917001000000000000b17217f7d1cfb72b45e10260801c9161269c565b91700100000000000162e42fefa39fe95583c20260801c9161268c565b917001000000000002c5c85fdf4741bea6e77e0260801c9161267c565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c9161266c565b91700100000000000b17217f7d1d351a389d400260801c9161265c565b9170010000000000162e42fefa3ae53369388c0260801c9161264c565b91700100000000002c5c85fdf477b662b269450260801c9161263c565b917001000000000058b90bfbe8f71cb4e4b33d0260801c9161262c565b9170010000000000b17217f7d20cf927c8e94c0260801c9161261c565b917001000000000162e42fefa494f1478fde050260801c9161260b565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c916125fa565b91700100000000058b90bfbe9ddbac5e109cce0260801c916125e9565b917001000000000b17217f7d5a7716bba4a9ae0260801c916125d8565b91700100000000162e42fefb2fed257559bdaa0260801c916125c7565b917001000000002c5c85fdf84bd62ae30a74cc0260801c916125b6565b9170010000000058b90bfbf8479bd5a81b51ad0260801c916125a5565b91700100000000b17217f80f4ef5aadda455540260801c91612594565b9170010000000162e42ff0999ce3541b9fffcf0260801c91612582565b91700100000002c5c85fe31f35a6a30da1be500260801c91612570565b917001000000058b90bfcdee5acd3c1cedc8230260801c9161255e565b9170010000000b17217fba9c739aa5819f44f90260801c9161254c565b917001000000162e42fff037df38aa2b219f060260801c9161253a565b9170010000002c5c8601cc6b9e94213c72737a0260801c91612528565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91612516565b917001000000b1721835514b86e6d96efd1bfe0260801c91612504565b91700100000162e430e5a18f6119e3c02282a50260801c916124f1565b917001000002c5c863b73f016468f6bac5ca2b0260801c916124de565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c916124cb565b91700100000b1721bcfc99d9f890ea069117630260801c916124b8565b9170010000162e43f4f831060e02d839a9d16d0260801c916124a5565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c91612492565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c9161247f565b9170010000b17255775c040618bf4a4ade83fc0260801c9161246c565b917001000162e525ee054754457d59952920260260801c91612458565b9170010002c5cc37da9491d0985c348c68e7b30260801c91612444565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91612430565b917001000b175effdc76ba38e31671ca9397250260801c9161241c565b91700100162f3904051fa128bca9c55c31e5df0260801c91612408565b917001002c605e2e8cec506d21bfc89a23a00f0260801c916123f4565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c916123e0565b91700100b1afa5abcbed6129ab13ec11dc95430260801c916123cc565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c916123b7565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c916123a2565b917001059b0d31585743ae7c548eb68ca417fd0260801c9161238d565b9170010b5586cf9890f6298b92b71842a983630260801c91612378565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c91612363565b917001306fe0a31b7152de8d5a46305c85edec0260801c9161234e565b6fb504f333f9de6484597d89b3754abe9f925061233956fea2646970667358221220cccca872339975cd8edb15decadeed969a28e27ab4282e2206a87bcab83db3e664736f6c634300081e003360808060405234601557610291908161001a8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c6323e30c8b14610025575f80fd5b346101c85760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101c85761005c610238565b5060243573ffffffffffffffffffffffffffffffffffffffff81168091036101c8576044359060843567ffffffffffffffff81116101c857366023820112156101c857806004013567ffffffffffffffff81116101c85781013660248201116101c857602090829003126101c857602401359073ffffffffffffffffffffffffffffffffffffffff82168092036101c857606435830180931161020b57835f60449260209583957f095ea7b3000000000000000000000000000000000000000000000000000000008552600485015260248401525af1801561020057610167575b60206040517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b60203d6020116101f9575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f820116820182811067ffffffffffffffff8211176101cc576020918391604052810103126101c85751801515811461013d575b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b503d610172565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101c85756fea2646970667358221220608a068f4b69c3529bce103fd01ee3145166316c5be04613db70ee2b847f122f64736f6c634300081e0033a264697066735822122081b1dbfe1d9b4d7de788398cad040b0ea893aa5e1ed1da111b3e69af75e6a1df64736f6c634300081e0033","sourceMap":"1337:10439:34:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;849:28:2;1337:10439:34;;;;;;;;;;;;;;;;;;;;;;;;;;;1705:8;1688:13;:25;1337:10439;;336:42:1;1740:19:34;;;;1337:10439;;2030:14:1;1740:19:34;;1337:10439;1740:19;1337:10439;1740:19;;336:42:1;1740:19:34;;;;;;;;1337:10439;2030:14:1;;;;2105:60:34;2030:14:1;;;;2105:60:34;2030:14:1;2192:42:34;2030:14:1;2175:60:34;2030:14:1;;;2175:60:34;2030:14:1;2262:42:34;2030:14:1;2245:60:34;2030:14:1;;;2245:60:34;2030:14:1;2332:42:34;2030:14:1;2315:60:34;2030:14:1;;;2315:60:34;2030:14:1;2403:42:34;2030:14:1;2385:61:34;2030:14:1;;;2385:61:34;2030:14:1;336:42;2456:31:34;;;;1337:10439;;;2456:31;2030:14:1;2456:31:34;;2030:14:1;;1337:10439:34;;2456:31;;1337:10439;;2030:14:1;;;;;;;;;;;;;;1337:10439:34;;2030:14:1;1337:10439:34;;;2030:14:1;;;;;2456:31:34;;;336:42:1;2456:31:34;;;;;;;;1337:10439;2030:14:1;1337:10439:34;2175:60;2030:14:1;1337:10439:34;336:42:1;2497:31:34;;;;1337:10439;;2497:31;2030:14:1;2497:31:34;;1337:10439;2497:31;;1337:10439;;2030:14:1;;;;;;;;;;;;;;1337:10439:34;;2030:14:1;1337:10439:34;;;2030:14:1;;;;;2497:31:34;;;336:42:1;2497:31:34;;;;;;;;1337:10439;2030:14:1;1337:10439:34;2245:60;2030:14:1;1337:10439:34;336:42:1;2538:31:34;;;;1337:10439;;2538:31;2030:14:1;2538:31:34;;1337:10439;2538:31;;1337:10439;;2030:14:1;;;;;;;;;;;;;;1337:10439:34;;2030:14:1;1337:10439:34;;;2030:14:1;;;;;2538:31:34;;;336:42:1;2538:31:34;;;;;;;;1337:10439;2030:14:1;1337:10439:34;2315:60;2030:14:1;1337:10439:34;336:42:1;2579:31:34;;;;1337:10439;;2579:31;2030:14:1;2579:31:34;;1337:10439;2579:31;;1337:10439;;2030:14:1;;;;;;;;;;;;;;1337:10439:34;;2030:14:1;1337:10439:34;;;2030:14:1;;;;;2579:31:34;;;336:42:1;2579:31:34;;;;;;;;1337:10439;2030:14:1;1337:10439:34;2385:61;2030:14:1;1337:10439:34;336:42:1;2620:33:34;;;;1337:10439;;2620:33;2030:14:1;2620:33:34;;1337:10439;2620:33;;1337:10439;;2030:14:1;;;;;;;;;;;;;;1337:10439:34;;2030:14:1;1337:10439:34;;;2030:14:1;;;;;2620:33:34;;;336:42:1;2620:33:34;;;;;;;;1337:10439;2030:14:1;1337:10439:34;2105:60;2030:14:1;;;1337:10439:34;8752:28;;;;;1337:10439;;2030:14:1;8752:28:34;;2723:10;1337:10439;8752:28;;1337:10439;2030:14:1;1337:10439:34;;;;;;;;;;;;;;;8752:28;;;;;;;;1337:10439;2030:14:1;1337:10439:34;2175:60;2030:14:1;1337:10439:34;8790:28;;;;;1337:10439;;2030:14:1;8790:28:34;;2723:10;1337:10439;8790:28;;1337:10439;2030:14:1;1337:10439:34;;;;;;;;;;;;;;;8790:28;;;;;;;;1337:10439;2030:14:1;1337:10439:34;2245:60;2030:14:1;1337:10439:34;8828:29;;;;;1337:10439;;2030:14:1;8828:29:34;;2723:10;1337:10439;8828:29;;1337:10439;2030:14:1;1337:10439:34;;;;;;;;;;;;;;;8828:29;;;;;;;;1337:10439;2030:14:1;1337:10439:34;2315:60;2030:14:1;1337:10439:34;8867:28;;;;;1337:10439;;;2030:14:1;1337:10439:34;;8867:28;;;;2030:14:1;8867:28:34;;2723:10;1337:10439;8867:28;;1337:10439;2030:14:1;;1337:10439:34;;;8867:28;;;;;;;;1337:10439;2030:14:1;1337:10439:34;2385:61;2030:14:1;1337:10439:34;8905:30;;;;;1337:10439;;2030:14:1;8905:30:34;;2723:10;1337:10439;8905:30;;1337:10439;2030:14:1;1337:10439:34;;;;;;;;;;;;;;;8905:30;;;;;;;;1337:10439;;;;;2785:27;;;;;;;;;;;;;;2030:14:1;2785:27:34;;;;;;1598:42;1337:10439;;2785:27;;;;;;;;;1337:10439;;2851:27;;;;;;;;2785;2851;;;;;2030:14:1;2851:27:34;;;;;;1598:42;1337:10439;;2851:27;;;;;;;;;1337:10439;;2917:23;;;;;;;;2785:27;2917:23;;;;;;;;;;;;;;;;;;;;1337:10439;;3003:35;;;;;;;;2785:27;3003:35;;;;;;;;;;;;;;;;;;;1337:10439;;3145:277;;;;;;;;;2785:27;3145:277;;;;;1337:10439;3145:277;;;2030:14:1;3145:277:34;;;;;;2723:10;1337:10439;;1598:42;2030:14:1;;;1337:10439:34;;2030:14:1;;1337:10439:34;2030:14:1;;1337:10439:34;;2030:14:1;;;;;1337:10439:34;;2030:14:1;;;;;1337:10439:34;;2030:14:1;;;;;1337:10439:34;1515:7;2030:14:1;;;1337:10439:34;1424:42;1337:10439;2030:14:1;;1337:10439:34;3145:277;;;;;;;;;1337:10439;;3444:16;;;;:::i;:::-;1337:10439;;2030:14:1;;;;1337:10439:34;2030:14:1;:::i;:::-;3608:1:34;2030:14:1;;;;;1337:10439:34;;;2030:14:1;;;;1337:10439:34;2105:60;2030:14:1;;;1337:10439:34;3620:24;;;:::i;:::-;2030:14:1;1337:10439:34;2315:60;2030:14:1;1337:10439:34;3654:24;;;:::i;:::-;2030:14:1;1337:10439:34;2385:61;2030:14:1;1337:10439:34;3688:25;;;:::i;:::-;2030:14:1;1337:10439:34;;2030:14:1;;;;;:::i;:::-;3608:1:34;2030:14:1;;1337:10439:34;;2030:14:1;;;;2735:9:34;3775:17;;;:::i;:::-;2030:14:1;8891:3:34;3802:17;;;:::i;:::-;2030:14:1;8852:4:34;3829:18;;;:::i;:::-;2030:14:1;1337:10439:34;;2030:14:1;;;;;:::i;:::-;3608:1:34;2030:14:1;;1337:10439:34;;2030:14:1;;;;3925:2:34;3911:16;;;:::i;:::-;2030:14:1;3951:3:34;3937:17;;;:::i;:::-;2030:14:1;3978:3:34;3964:17;;;:::i;:::-;2030:14:1;1337:10439:34;;2030:14:1;;;;:::i;:::-;3608:1:34;2030:14:1;;1337:10439:34;;2030:14:1;;;;;4044::34;;;:::i;:::-;2030::1;1515:7:34;4068:19;;;:::i;:::-;2030:14:1;4110:4:34;4097:17;;;:::i;:::-;2030:14:1;1337:10439:34;;2030:14:1;;;;;:::i;:::-;3608:1:34;2030:14:1;;1337:10439:34;;2030:14:1;;;;4299:9:34;;;:::i;:::-;2030:14:1;;4290:6:34;2030:14:1;;4290:6:34;2030:14:1;;;;;4290:31:34;4311:10;;;;:::i;:::-;2030:14:1;4290:31:34;;:::i;:::-;4269:52;;;:::i;:::-;2030:14:1;4361:9:34;;;:::i;:::-;2030:14:1;;4290:6:34;2030:14:1;;4290:6:34;2030:14:1;;;;;4373:10:34;4352:31;4423:9;4373:10;;;;:::i;4352:31::-;4331:52;;;:::i;:::-;2030:14:1;4423:9:34;:::i;:::-;2030:14:1;;;4290:6:34;2030:14:1;;4290:6:34;2030:14:1;;;;;4435:10:34;;4414:31;4435:10;;:::i;4414:31::-;4393:52;;;:::i;:::-;2030:14:1;;23379:22:0;23388:13;2030:14:1;;;;2315:60:34;2030:14:1;36424:13:42;-1:-1:-1;36424:13:42;;1337:10439:34;;;41100:19:42;36469:7;;41100:19;;;1337:10439:34;;;805:35:0;4536:19;;;:42;;;1337:10439:34;;;;2315:60;2030:14:1;41100:19:42;1337:10439:34;805:35:0;4084:19;;;:42;;;1337:10439:34;;;;2315:60;2030:14:1;-1:-1:-1;37312:21:42;;41100:19;;;1337:10439:34;37403:26:42;;;:::i;:::-;2315:60:34;2030:14:1;-1:-1:-1;37447:23:42;;;;:44;;1337:10439:34;41100:19:42;;;1337:10439:34;;;-1:-1:-1;14261:13:0;;41100:19:42;14286:25:0;;;14282:56;;1337:10439:34;14349:17:0;14355:11;3695:1:34;14349:17:0;;;14345:48;;1337:10439:34;14410:7:0;14404:13;;;14400:44;;1337:10439:34;2030:14:1;14455:11:0;;;14451:40;;1337:10439:34;2385:61;14502:10:0;;;14498:39;;1337:10439:34;;14548:9:0;;;14544:38;;1337:10439:34;14593:9:0;;14589:23;;1337:10439:34;;;;;;;14737:3:0;1337:10439:34;;14760:31:0;14773:18;14755:176;14793:7;-1:-1:-1;14793:7:0;;;;2030:14:1;15317:34:0;2030:14:1;;2315:60:34;2030:14:1;1337:10439:34;2030:14:1;;;805:35:0;2030:14:1;2315:60:34;2030:14:1;9170::0;1337:10439:34;;37600:16:42;1337:10439:34;-1:-1:-1;1337:10439:34;2315:60;2030:14:1;37600:16:42;:::i;:::-;2315:60:34;2030:14:1;-1:-1:-1;37634:13:42;;41100:19;;;7136:6:0;;1337:10439:34;;;;805:35:0;7206:19;;;:42;;;14755:176;1337:10439:34;;;2315:60;2030:14:1;37785:17:42;-1:-1:-1;37785:17:42;;41100:19;;;2030:14:1;;1337:10439:34;2030:14:1;1337:10439:34;;;;4708:341;;;;;2030:14:1;4708:341:34;;2030:14:1;1337:10439:34;4708:341;;2030:14:1;4535:2:34;2030:14:1;;;1337:10439:34;2030:14:1;1337:10439:34;;;2030:14:1;;;;;;3695:1:34;2030:14:1;;;1337:10439:34;2030:14:1;1337:10439:34;;;2030:14:1;;;;;;;;;;;:::i;:::-;;;;;;1337:10439:34;2030:14:1;;;;;;;;;:::i;:::-;;3545:5:34;2030:14:1;;;1337:10439:34;-1:-1:-1;2030:14:1;;;1337:10439:34;2723:10;2030:14:1;;;1337:10439:34;2723:10;2030:14:1;;;1337:10439:34;;2030:14:1;;;;;;;;;:::i;:::-;5009:15:34;2030:14:1;;;1337:10439:34;-1:-1:-1;2030:14:1;;;1337:10439:34;4708:341;;-1:-1:-1;4708:341:34;;;;;;;;-1:-1:-1;4708:341:34;;;14755:176:0;1337:10439:34;;;2030:14:1;;;;;:::i;:::-;3608:1:34;2030:14:1;;1337:10439:34;;2030:14:1;;;;1337:10439:34;2105:60;2030:14:1;;;1337:10439:34;5192:24;;;:::i;:::-;2030:14:1;1337:10439:34;2175:60;2030:14:1;1337:10439:34;5226:24;;;:::i;:::-;2030:14:1;1337:10439:34;2245:60;2030:14:1;1337:10439:34;5260:24;;;:::i;:::-;2030:14:1;1337:10439:34;;2030:14:1;;;;:::i;:::-;3608:1:34;2030:14:1;;1337:10439:34;;2030:14:1;;;;2735:9:34;5329:17;;;:::i;:::-;2030:14:1;2735:9:34;5356:17;;;:::i;:::-;2030:14:1;8852:4:34;5383:18;;;:::i;:::-;2030:14:1;1337:10439:34;;2030:14:1;;;;;:::i;:::-;3608:1:34;2030:14:1;;1337:10439:34;2030:14:1;;;;5560:9:34;;;:::i;:::-;2030:14:1;4290:6:34;2030:14:1;;;;;;4290:6:34;2030:14:1;;;;;;;5539:39:34;;;:::i;:::-;2030:14:1;5609:9:34;;;:::i;:::-;2030:14:1;;4290:6:34;2030:14:1;;;;;;4290:6:34;2030:14:1;;;;;;;5658:9:34;5588:39;;;;:::i;5658:9::-;2030:14:1;;4290:6:34;2030:14:1;;;;;;4290:6:34;2030:14:1;;;;;;;;;5637:39:34;1337:10439;5637:39;;;;:::i;:::-;2030:14:1;;23379:22:0;1337:10439:34;;5786:408;;;;;2030:14:1;5786:408:34;;2030:14:1;1337:10439:34;5786:408;;2030:14:1;2315:60:34;1337:10439;2030:14:1;;1337:10439:34;2030:14:1;;1337:10439:34;;2030:14:1;;;;;;1337:10439:34;;2030:14:1;;1337:10439:34;2030:14:1;;1337:10439:34;;2030:14:1;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;1337:10439:34;2030:14:1;;;;1337:10439:34;-1:-1:-1;2030:14:1;;;1337:10439:34;2723:10;2030:14:1;;;1337:10439:34;2723:10;2030:14:1;;;1337:10439:34;;2030:14:1;;;;;;;;;:::i;:::-;5009:15:34;2030:14:1;;;1337:10439:34;-1:-1:-1;2030:14:1;;;1337:10439:34;5786:408;;-1:-1:-1;5786:408:34;;;;;;;;;14755:176:0;2030:14:1;;1337:10439:34;;;2030:14:1;;;;;:::i;:::-;3695:1:34;2030:14:1;;;;;1337:10439:34;;2030:14:1;;;;1337:10439:34;2105:60;2030:14:1;;;1337:10439:34;6340:24;;;:::i;:::-;2030:14:1;1337:10439:34;2245:60;2030:14:1;1337:10439:34;6374:24;;;:::i;:::-;2030:14:1;1337:10439:34;;2030:14:1;;;;:::i;:::-;3695:1:34;2030:14:1;;1337:10439:34;;2030:14:1;;;;2735:9:34;6443:17;;;:::i;:::-;2030:14:1;8852:4:34;6470:18;;;:::i;:::-;2030:14:1;1337:10439:34;;2030:14:1;;;;;:::i;:::-;3695:1:34;2030:14:1;;1337:10439:34;2030:14:1;;;;6647:9:34;;;:::i;:::-;2030:14:1;;4290:6:34;2030:14:1;;;;;;4290:6:34;2030:14:1;;;;;;;6696:9:34;6626:39;;;;:::i;:::-;2030:14:1;6696:9:34;:::i;:::-;2030:14:1;4290:6:34;2030:14:1;;;;;;4290:6:34;2030:14:1;;;;;;;6675:39:34;;;:::i;:::-;2030:14:1;1337:10439:34;2030:14:1;-1:-1:-1;2030:14:1;;;1337:10439:34;;6824:387;;;;;2030:14:1;6824:387:34;;2030:14:1;1337:10439:34;6824:387;;2030:14:1;;;;;1337:10439:34;2030:14:1;1337:10439:34;;;2030:14:1;;;;;;;;;;1337:10439:34;2030:14:1;1337:10439:34;;;2030:14:1;;;;;;;;;;;:::i;:::-;;;;;;6284:1:34;2030:14:1;;;1337:10439:34;6284:1;2030:14:1;;;1337:10439:34;2030:14:1;;;;1337:10439:34;2723:10;2030:14:1;;;1337:10439:34;2723:10;2030:14:1;;;1337:10439:34;;2030:14:1;;;;;;;;;:::i;:::-;5009:15:34;2030:14:1;;;1337:10439:34;-1:-1:-1;2030:14:1;;;1337:10439:34;6824:387;;-1:-1:-1;6824:387:34;;;;;;;;;14755:176:0;1337:10439:34;;;7239:33;;;;;;;;2785:27;7239:33;;;;;1337:10439;7239:33;;;;;;1337:10439;;;2030:14:1;;;;1337:10439:34;7239:33;;;-1:-1:-1;7239:33:34;;;;;1337:10439;;;;;;;;9397:16;2030:14:1;9397:16:34;;-1:-1:-1;9397:16:34;1337:10439;9397:16;;;;;;;;;-1:-1:-1;9397:16:34;;;14755:176:0;2030:14:1;;;9470:13:34;;;;:::i;:::-;1337:10439;;9532:18;2030:14:1;9532:18:34;;2030:14:1;9532:18:34;1337:10439;9532:18;;;;;;;;;-1:-1:-1;9532:18:34;;;14755:176:0;2030:14:1;9495:56:34;1337:10439;;;2030:14:1;1337:10439:34;;2030:14:1;;;:::i;:::-;1337:10439:34;2030:14:1;;1337:10439:34;2030:14:1;1337:10439:34;;;9495:56;:::i;:::-;1337:10439;;2030:14:1;9751:46:34;;2723:10;1337:10439;9751:46;;1337:10439;2723:10;2030:14:1;1337:10439:34;;;9631:5;2030:14:1;1337:10439:34;;;-1:-1:-1;2030:14:1;1337:10439:34;;;2030:14:1;9751:46:34;2030:14:1;9751:46:34;-1:-1:-1;9751:46:34;;;;;;;-1:-1:-1;9751:46:34;;;14755:176:0;1337:10439:34;;9808:30;;-1:-1:-1;2030:14:1;1337:10439:34;;2030:14:1;:::i;:::-;1337:10439:34;2030:14:1;;1337:10439:34;2030:14:1;1337:10439:34;;;9808:30;:::i;:::-;1337:10439;;2030:14:1;9881:18:34;;2030:14:1;9881:18:34;1337:10439;9881:18;;;;;;;;-1:-1:-1;9881:18:34;;;14755:176:0;1337:10439:34;;9848:52;;-1:-1:-1;2030:14:1;1337:10439:34;;2030:14:1;:::i;:::-;2385:61:34;2030:14:1;;1337:10439:34;2030:14:1;1337:10439:34;;;9848:52;:::i;:::-;1337:10439;;2030:14:1;10015:53:34;;2723:10;1337:10439;10015:53;;1337:10439;2723:10;2030:14:1;1337:10439:34;;;6284:1;2030:14:1;1337:10439:34;;;-1:-1:-1;2030:14:1;1337:10439:34;;;-1:-1:-1;2030:14:1;1337:10439:34;;;-1:-1:-1;10015:53:34;2030:14:1;10015:53:34;;;;;;;;;;;14755:176:0;1337:10439:34;;;10264:23;;;;;;;2785:27;10264:23;;;;;;;;;;;;-1:-1:-1;10264:23:34;;;;;1337:10439;10412:9;;;:::i;:::-;1337:10439;;;;;10384:49;2030:14:1;10384:49:34;;;1337:10439;10384:49;;1337:10439;2030:14:1;1337:10439:34;;;10316:10;2030:14:1;1337:10439:34;;;2030:14:1;10384:49:34;2030:14:1;10384:49:34;;;;;;;;;-1:-1:-1;10384:49:34;;;14755:176:0;10507:9:34;1337:10439;10507:9;;;;:::i;:::-;1337:10439;;;;10489:63;;;;;;-1:-1:-1;1337:10439:34;2030:14:1;1337:10439:34;;;;;10489:63;;;;;2030:14:1;10489:63:34;;;1337:10439;10489:63;;1337:10439;2030:14:1;1337:10439:34;;;10489:63;;;;;;;;14755:176:0;1337:10439:34;;;;;2030:14:1;1337:10439:34;;10821:9;1337:10439;;10663:25;;;;;1337:10439;10663:25;;;;;;;:::i;:::-;10821:9;:::i;:::-;1337:10439;;;;10756:92;;;;;;;2030:14:1;10756:92:34;;1337:10439;10756:92;;1337:10439;2030:14:1;1337:10439:34;;;10316:10;2030:14:1;1337:10439:34;;;;2030:14:1;1337:10439:34;;;2030:14:1;1337:10439:34;;;;:::i;:::-;10756:92;;;;;;;;;;;14755:176:0;1337:10439:34;2030:14:1;1337:10439:34;;;;10963:56;;;;2030:14:1;10963:56:34;;2723:10;1337:10439;10963:56;;1337:10439;2723:10;2030:14:1;1337:10439:34;;;;2030:14:1;1337:10439:34;;;10930:11;2030:14:1;1337:10439:34;;;;2030:14:1;1337:10439:34;;;10963:56;;;;;;;;;14755:176:0;-1:-1:-1;2030:14:1;11135:5:34;;;:17;;;;;41100:19:42;;;;;;;;;11135:17:34;;;;;;;1337:10439;;11208:97;2030:14:1;11208:97:34;;2723:10;1337:10439;11208:97;;1337:10439;;2030:14:1;1337:10439:34;;;2723:10;2030:14:1;1337:10439:34;;;;2030:14:1;1337:10439:34;;;2030:14:1;1337:10439:34;;;11178:10;2030:14:1;1337:10439:34;;;;2030:14:1;1337:10439:34;;2030:14:1;1337:10439:34;2030:14:1;1337:10439:34;;;;2030:14:1;1337:10439:34;;;11208:97;;2030:14:1;11208:97:34;;;;;;;;;;;11135:17;11408:26;;;;;;;1337:10439;;2030:14:1;11408:26:34;;;;1337:10439;11408:26;;;;;;;;;;;;;;11135:17;-1:-1:-1;;11667:15:34;;;;1337:10439;2030:14:1;;11667:15:34;1337:10439;;;11692:75;;;;;2030:14:1;11692:75:34;;2723:10;1337:10439;11692:75;;1337:10439;2723:10;2030:14:1;1337:10439:34;;;11600:10;2030:14:1;1337:10439:34;;;;2030:14:1;1337:10439:34;;;;2030:14:1;1337:10439:34;;;;2030:14:1;1337:10439:34;;;11692:75;;;;;;;;;;;11667:15;7322:18;;336:42:1;7322:18:34;;;;1337:10439;;2030:14:1;7322:18:34;;;;1337:10439;7322:18;;336:42:1;7322:18:34;;;;;;;;;;;11667:15;1337:10439;;;;7402:29;2030:14:1;7402:29:34;;;1337:10439;7402:29;;1337:10439;7402:29;;2030:14:1;7402:29:34;336:42:1;7402:29:34;;;;;;;;;;;11667:15;1337:10439;;;7465:26;2030:14:1;7465:26:34;;;1337:10439;7465:26;;1337:10439;7465:26;;2030:14:1;7465:26:34;336:42:1;7465:26:34;;;;;;;;;;;11667:15;7501:32;336:42:1;7501:32:34;;;;1337:10439;2030:14:1;1337:10439:34;;;;7501:32;;;;;2030:14:1;7501:32:34;;1337:10439;7501:32;;2030:14:1;6284:1:34;2030:14:1;;;1337:10439:34;2030:14:1;;1337:10439:34;;2030:14:1;;;;;;;;;;;:::i;:::-;7501:32:34;;;336:42:1;7501:32:34;;;;;;;;;;;11667:15;7543:26;;336:42:1;7543:26:34;;;;2030:14:1;1337:10439:34;;;;;7543:26;;;;;2030:14:1;7543:26:34;;;1337:10439;7543:26;;2030:14:1;1337:10439:34;2030:14:1;;;1337:10439:34;2030:14:1;;1337:10439:34;;2030:14:1;;;;;;;;;;:::i;:::-;7543:26:34;;;336:42:1;7543:26:34;;;;;;;;11667:15;2030:14:1;1337:10439:34;2105:60;2030:14:1;;;1337:10439:34;;;7597:26;2030:14:1;7597:26:34;;1337:10439;7597:26;;1337:10439;7597:26;;2030:14:1;7597:26:34;336:42:1;7597:26:34;;;;;;;;;;;11667:15;7579:45;336:42:1;7579:45:34;;;;1337:10439;2030:14:1;1337:10439:34;;;7579:45;;;;2030:14:1;7579:45:34;;;1337:10439;7579:45;;2030:14:1;;;;;;;;1337:10439:34;;2030:14:1;1337:10439:34;;;2030:14:1;;;;;;1337:10439:34;2030:14:1;;;;;;;;;:::i;:::-;7579:45:34;;;336:42:1;7579:45:34;;;;;;;;11667:15;2030:14:1;1337:10439:34;2175:60;2030:14:1;1337:10439:34;;;7652:26;2030:14:1;7652:26:34;;1337:10439;7652:26;;1337:10439;7652:26;;2030:14:1;7652:26:34;336:42:1;7652:26:34;;;;;;;;;;;11667:15;7634:45;336:42:1;7634:45:34;;;;1337:10439;2030:14:1;1337:10439:34;;;7634:45;;;;2030:14:1;7634:45:34;;;1337:10439;7634:45;;2030:14:1;;;;;;;;1337:10439:34;;2030:14:1;1337:10439:34;;;2030:14:1;;;;;7634:45:34;;;336:42:1;7634:45:34;;;;;;;;11667:15;2030:14:1;1337:10439:34;2245:60;2030:14:1;1337:10439:34;;;7707:26;2030:14:1;7707:26:34;;1337:10439;7707:26;;1337:10439;7707:26;;2030:14:1;7707:26:34;336:42:1;7707:26:34;;;;;;;;;;;11667:15;7689:45;336:42:1;7689:45:34;;;;1337:10439;2030:14:1;1337:10439:34;;;7689:45;;;;2030:14:1;7689:45:34;;;1337:10439;7689:45;;2030:14:1;;;;;;;;1337:10439:34;;2030:14:1;1337:10439:34;;;2030:14:1;;;;;7689:45:34;;;336:42:1;7689:45:34;;;;;;;;11667:15;2030:14:1;1337:10439:34;2315:60;2030:14:1;1337:10439:34;;;7762:26;2030:14:1;7762:26:34;;1337:10439;7762:26;;1337:10439;7762:26;;2030:14:1;7762:26:34;336:42:1;7762:26:34;;;;;;;;;;;11667:15;7744:45;336:42:1;7744:45:34;;;;1337:10439;2030:14:1;1337:10439:34;;;7744:45;;;;2030:14:1;7744:45:34;;;1337:10439;7744:45;;2030:14:1;;;;;;;;1337:10439:34;;2030:14:1;1337:10439:34;;;2030:14:1;;;;;7744:45:34;;;336:42:1;7744:45:34;;;;;;;;11667:15;2030:14:1;1337:10439:34;2385:61;2030:14:1;1337:10439:34;;;7818:27;2030:14:1;7818:27:34;;1337:10439;7818:27;;1337:10439;7818:27;;2030:14:1;7818:27:34;336:42:1;7818:27:34;;;;;;;;;;;11667:15;7799:47;336:42:1;7799:47:34;;;;1337:10439;2030:14:1;1337:10439:34;;;7799:47;;;;2030:14:1;7799:47:34;;;1337:10439;7799:47;;2030:14:1;;;;;;;;1337:10439:34;;2030:14:1;1337:10439:34;;;2030:14:1;;;;;7799:47:34;;;336:42:1;7799:47:34;;;;;;;;11667:15;7857:8;;8486:46;7857:8;7994:49;8112;7857:8;7939:45;8171:61;7857:8;;;7881:48;8053:49;7857:8;;;:::i;:::-;1337:10439;;2030:14:1;1337:10439:34;;2030:14:1;:::i;:::-;2245:60:34;2030:14:1;;;;;;;7881:48:34;:::i;:::-;1337:10439;;2030:14:1;;;;:::i;:::-;2245:60:34;2030:14:1;;;;;;;7939:45:34;:::i;:::-;1337:10439;;2030:14:1;;;;:::i;:::-;2245:60:34;2030:14:1;;;;;;;7994:49:34;:::i;:::-;1337:10439;;2030:14:1;;;;:::i;:::-;2245:60:34;2030:14:1;;;;;;;8053:49:34;:::i;:::-;1337:10439;;2030:14:1;;;;:::i;:::-;2245:60:34;2030:14:1;;;;;;;8112:49:34;:::i;:::-;1337:10439;;2030:14:1;;;;:::i;:::-;2245:60:34;2030:14:1;;;;;;;8171:61:34;:::i;:::-;8242:8;;:::i;:::-;8266:45;1337:10439;2105:60;2030:14:1;;;1337:10439:34;;;2030:14:1;;;;:::i;:::-;2245:60:34;2030:14:1;;;;;;;8266:45:34;:::i;:::-;8321;1337:10439;2175:60;2030:14:1;1337:10439:34;;;2030:14:1;;;;:::i;:::-;2245:60:34;2030:14:1;;;;;;;8321:45:34;:::i;:::-;8376;1337:10439;2245:60;2030:14:1;1337:10439:34;;;2030:14:1;;;;:::i;:::-;2245:60:34;2030:14:1;;;;;;;8376:45:34;:::i;:::-;8431;1337:10439;2315:60;2030:14:1;1337:10439:34;;;2030:14:1;;;;:::i;:::-;2245:60:34;2030:14:1;;;;;;;8431:45:34;:::i;:::-;1337:10439;2385:61;2030:14:1;1337:10439:34;;2030:14:1;1337:10439:34;;2030:14:1;;;:::i;:::-;2245:60:34;2030:14:1;;;;;;;8486:46:34;:::i;:::-;1337:10439;;7799:47;;;;;;;;;:::i;:::-;1337:10439;;7799:47;;;;;;;;1337:10439;;;;7799:47;1337:10439;;2030:14:1;1337:10439:34;;2030:14:1;;;;7799:47:34;1337:10439;;;7818:27;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;7744:45;;;;;:::i;:::-;1337:10439;;7744:45;;;;7762:26;;;;;;;;;;;;;:::i;:::-;;;;7689:45;;;;;:::i;:::-;1337:10439;;7689:45;;;;7707:26;;;;;;;;;;;;;:::i;:::-;;;;7634:45;;;;;:::i;:::-;1337:10439;;7634:45;;;;7652:26;;;;;;;;;;;;;:::i;:::-;;;;7579:45;;;;;:::i;:::-;1337:10439;;7579:45;;;;7597:26;;;;;;;;;;;;;:::i;:::-;;;;7543;;;;;:::i;:::-;1337:10439;;7543:26;;;;;1337:10439;;;7501:32;;;;;:::i;:::-;1337:10439;;7501:32;;;;;1337:10439;;2030:14:1;1337:10439:34;;2030:14:1;;;;7501:32:34;1337:10439;;;7465:26;;;;;;;;;;;;;;:::i;:::-;;;;;7402:29;;;;;;;;;;;;;;:::i;:::-;;;;;;1337:10439;;2030:14:1;1337:10439:34;;2030:14:1;;;;7322:18:34;;;;;:::i;:::-;1337:10439;;7322:18;;;;11692:75;;;;;;;;;;;;:::i;:::-;;;1337:10439;;;;11692:75;;;;;;;;;11667:15;;1337:10439;2030:14:1;11667:15:34;;;11408:26;;;;;:::i;:::-;1337:10439;;11408:26;;;;;1337:10439;;2030:14:1;1337:10439:34;;2030:14:1;;;;11208:97:34;;;;;;-1:-1:-1;11208:97:34;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1337:10439;;2030:14:1;1337:10439:34;;2030:14:1;;;;41100:19:42;2030:14:1;;;;;;1337:10439:34;2030:14:1;;11135:17:34;;;;;;;;;;10963:56;;;;;;;;;;;;;:::i;:::-;;;;;;1337:10439;;2030:14:1;1337:10439:34;;2030:14:1;;;;10756:92:34;;;2030:14:1;10756:92:34;2030:14:1;10756:92:34;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;10489:63;;;;;-1:-1:-1;10489:63:34;;;:::i;:::-;-1:-1:-1;10489:63:34;;;;;1337:10439;;2030:14:1;-1:-1:-1;2030:14:1;;;;;10489:63:34;-1:-1:-1;1337:10439:34;;10384:49;;;;2030:14:1;10384:49:34;;2030:14:1;10384:49:34;;;;;;1337:10439;10384:49;;;:::i;:::-;;;1337:10439;;;;2030:14:1;10384:49:34;;;;;;;-1:-1:-1;10384:49:34;;10264:23;1337:10439;;2030:14:1;-1:-1:-1;2030:14:1;;;;;10264:23:34;2030:14:1;-1:-1:-1;2030:14:1;;1337:10439:34;2030:14:1;;-1:-1:-1;2030:14:1;10015:53:34;;;-1:-1:-1;10015:53:34;;;;;;:::i;:::-;;;1337:10439;2030:14:1;1337:10439:34;;;;;;;;;2785:27;1337:10439;;;;;;;2030:14:1;1337:10439:34;;;;;;;;;;2030:14:1;1337:10439:34;;;:::i;:::-;;;2030:14:1;;;:::i;:::-;1337:10439:34;;;2030:14:1;1337:10439:34;;;;2030:14:1;1337:10439:34;;;;;;;;;2030:14:1;1337:10439:34;;;;;;;;10015:53;;;;;1337:10439;2030:14:1;;1337:10439:34;;2030:14:1;1337:10439:34;;;;;;;10015:53;1337:10439;;2030:14:1;-1:-1:-1;2030:14:1;;;;;9881:18:34;;2030:14:1;9881:18:34;;2030:14:1;9881:18:34;;;;;;1337:10439;9881:18;;;:::i;:::-;;;1337:10439;;;;9848:52;2030:14:1;;9881:18:34;;;;;-1:-1:-1;9881:18:34;;9751:46;;2030:14:1;9751:46:34;;2030:14:1;9751:46:34;;;;;;1337:10439;9751:46;;;:::i;:::-;;;1337:10439;;;;9808:30;2030:14:1;;9751:46:34;;;;;-1:-1:-1;9751:46:34;;9532:18;;;;2030:14:1;9532:18:34;;2030:14:1;9532:18:34;;;;;;1337:10439;9532:18;;;:::i;:::-;;;1337:10439;;;;2030:14:1;9532:18:34;;;;;;;-1:-1:-1;9532:18:34;;;1337:10439;;2030:14:1;-1:-1:-1;2030:14:1;;;;;9397:16:34;;;;;;-1:-1:-1;9397:16:34;;;;;;:::i;:::-;;;1337:10439;2030:14:1;1337:10439:34;;;;;;;;;2785:27;1337:10439;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2030:14:1;1337:10439:34;;2030:14:1;;;:::i;:::-;1337:10439:34;;;2030:14:1;1337:10439:34;;;;2030:14:1;1337:10439:34;;;;;;;;;2030:14:1;1337:10439:34;;;;;;;;9397:16;;;;;;;1337:10439;;;;;;2030:14:1;;;;1337:10439:34;;2030:14:1;1337:10439:34;;;;;;;6824:387;;;1337:10439;6824:387;1337:10439;6824:387;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;2030:14:1;;-1:-1:-1;2030:14:1;;1337:10439:34;2030:14:1;;-1:-1:-1;2030:14:1;5786:408:34;;;1337:10439;5786:408;1337:10439;5786:408;;;;;;;:::i;:::-;;;;4708:341;;;;;1337:10439;4708:341;1337:10439;4708:341;;;;;;;:::i;:::-;;;;;;41100:19:42;;1337:10439:34;;41100:19:42;;;2030:14:1;1337:10439:34;41100:19:42;;;2245:60:34;2030:14:1;41100:19:42;;1337:10439:34;41100:19:42;2030:14:1;1337:10439:34;;41100:19:42;;7206:42:0;7229:19;958:34;7229:19;;;7206:42;;41100:19:42;;1337:10439:34;;41100:19:42;;;2030:14:1;1337:10439:34;41100:19:42;;;4535:2:34;2030:14:1;41100:19:42;;1337:10439:34;41100:19:42;2030:14:1;1337:10439:34;;41100:19:42;;14802:9:0;1337:10439:34;;;;;;;;14737:3:0;1337:10439:34;;;;;;14802:9:0;2030:14:1;1337:10439:34;14760:31:0;;;;14589:23;1337:10439:34;2030:14:1;1337:10439:34;14589:23:0;;;14544:38;1337:10439:34;;;;;;14544:38:0;;14498:39;1337:10439:34;;;;;;14498:39:0;;14451:40;14477:1;1337:10439:34;;;;;14451:40:0;;14400:44;2385:61:34;1337:10439;;;;;14400:44:0;;14345:48;2030:14:1;1337:10439:34;;;;;14345:48:0;;14282:56;-1:-1:-1;1337:10439:34;;-1:-1:-1;1337:10439:34;;;14282:56:0;;41100:19:42;;1337:10439:34;;41100:19:42;;;2030:14:1;1337:10439:34;41100:19:42;;;;2030:14:1;41100:19:42;;1337:10439:34;41100:19:42;2030:14:1;1337:10439:34;;41100:19:42;;37447:44;37474:17;41100:19;37474:17;;37447:44;;41100:19;;1337:10439:34;;41100:19:42;;;2030:14:1;1337:10439:34;41100:19:42;;;;2030:14:1;41100:19:42;;1337:10439:34;41100:19:42;2030:14:1;1337:10439:34;;41100:19:42;;4084:42:0;4107:19;958:34;4107:19;;;4084:42;;4536;4559:19;958:34;4559:19;;;4536:42;;41100:19:42;;1337:10439:34;;41100:19:42;;;2030:14:1;1337:10439:34;41100:19:42;;;4535:2:34;2030:14:1;41100:19:42;;1337:10439:34;41100:19:42;2030:14:1;1337:10439:34;;41100:19:42;;1337:10439:34;;;;;;;2030:14:1;1337:10439:34;;;;;2030:14:1;1337:10439:34;;;;2030:14:1;1337:10439:34;;;;2030:14:1;;;;;;;1337:10439:34;2030:14:1;;;;;;;;;1337:10439:34;2030:14:1;;;;;;;;;1337:10439:34;2030:14:1;;3145:277:34;1337:10439;;2030:14:1;1337:10439:34;;2030:14:1;;;;3145:277:34;2030:14:1;;;;;;1337:10439:34;2030:14:1;;3003:35:34;1337:10439;;2030:14:1;1337:10439:34;;2030:14:1;;;;3003:35:34;2030:14:1;;;;;;1337:10439:34;2030:14:1;;2917:23:34;1337:10439;;2030:14:1;1337:10439:34;;2030:14:1;;;;2917:23:34;2030:14:1;;;;;;1337:10439:34;2030:14:1;;2851:27:34;1337:10439;;2030:14:1;1337:10439:34;;2030:14:1;;;;2851:27:34;2030:14:1;;;;;;1337:10439:34;2030:14:1;;2785:27:34;1337:10439;;;2030:14:1;;;;;;;;2785:27:34;2030:14:1;;;;;;1337:10439:34;2030:14:1;;8905:30:34;;;;;:::i;:::-;1337:10439;;8905:30;;;;;1337:10439;;8867:28;;;;;:::i;:::-;1337:10439;;8867:28;;;;8828:29;;;;;:::i;:::-;1337:10439;;8828:29;;;;8790:28;;;;;:::i;:::-;1337:10439;;8790:28;;;;8752;;;;;:::i;:::-;1337:10439;;8752:28;;;;2620:33;;;;;:::i;:::-;1337:10439;;2620:33;;;;2579:31;;;;;:::i;:::-;1337:10439;;2579:31;;;;2538;;;;;:::i;:::-;1337:10439;;2538:31;;;;2497;;;;;:::i;:::-;1337:10439;;2497:31;;;;2456;;;;;:::i;:::-;1337:10439;;2456:31;;;;1740:19;;;;1337:10439;1740:19;;:::i;:::-;1337:10439;1740:19;;;1337:10439;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1598:42;1337:10439;;;;;;;;;;;;;;;;;1424:42;1337:10439;;;;;;;;;;;;;;;1515:7;1337:10439;;;;2030:14:1;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;1337:10439:34;2030:14:1;;;;;1337:10439:34;2030:14:1;;;;3661:1:34;2030:14:1;;;;;;;:::o;:::-;;;3695:1:34;2030:14:1;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;1337:10439:34;;;2030:14:1;;;;;;;;;;:::o;:::-;;1337:10439:34;2030:14:1;;;1337:10439:34;;;;;2030:14:1;;;-1:-1:-1;2030:14:1;;;;;;;;;;:::o;:::-;;;1337:10439:34;;;;;2030:14:1;;;;;;;;;;;;;;1337:10439:34;2030:14:1;;;1337:10439:34;;;;;2030:14:1;;;-1:-1:-1;2030:14:1;;;;;;;;;;:::o;:::-;;;1337:10439:34;;;2030:14:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1337:10439:34;;;2030:14:1;;;;;;;;1337:10439:34;2030:14:1;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;2030:14:1;;;;;;;;;;;;;;:::o;:::-;;;;1337:10439:34;2030:14:1;;;;1337:10439:34;;;;;;2030:14:1;1337:10439:34;;;2030:14:1;-1:-1:-1;2030:14:1;;;;;;;;;;;:::o;1337:10439:34:-;;;;;;;;;;;;;;;;;;:::o;8948:304::-;-1:-1:-1;8948:304:34;1337:10439;;9004:40;2030:14:1;9004:4:34;2030:14:1;;;1337:10439:34;;;;9004:40;;;;;2030:14:1;9004:40:34;;1337:10439;9004:40;;;;;1337:10439;9026:17;1337:10439;;;;9004:40;;;;;;;-1:-1:-1;9004:40:34;;;8948:304;2030:14:1;1337:10439:34;;9054:4;2030:14:1;1337:10439:34;9004:40;1337:10439;;9054:40;;;;2030:14:1;9054:40:34;;;9004;9054;;1337:10439;9026:17;1337:10439;;;;9054:40;;;;;;;-1:-1:-1;9054:40:34;;;8948:304;2030:14:1;1337:10439:34;;9104:4;2030:14:1;1337:10439:34;9004:40;1337:10439;;9104:40;;;;2030:14:1;9104:40:34;;;9004;9104;;1337:10439;9026:17;1337:10439;;;;9104:40;;;;;;;-1:-1:-1;9104:40:34;;;8948:304;2030:14:1;1337:10439:34;;9154:4;2030:14:1;1337:10439:34;9004:40;1337:10439;;9154:40;;;;2030:14:1;9154:40:34;;;9004;9154;;1337:10439;9026:17;1337:10439;;;;9154:40;;;;;;;-1:-1:-1;9154:40:34;1337:10439;9154:40;;;8948:304;2030:14:1;9004:40:34;1337:10439;9204:5;2030:14:1;1337:10439:34;;;;9204:41;;;;;2030:14:1;9204:41:34;;9004:40;9204:41;;1337:10439;9026:17;1337:10439;;;;9204:41;;;;;;;;8948:304;:::o;9204:41::-;;;1337:10439;9204:41;1337:10439;9204:41;;;;;;;:::i;:::-;;8948:304::o;9154:40::-;;;;;;;;;;;;;:::i;:::-;;;9104;;;1337:10439;9104:40;1337:10439;9104:40;;;;;;;:::i;:::-;;;9054;;;1337:10439;9054:40;1337:10439;9054:40;;;;;;;:::i;:::-;;;9004;;;1337:10439;9004:40;1337:10439;9004:40;;;;;;;:::i;:::-;;;1337:10439;;;;;;;;;2030:14:1;;1337:10439:34;;;;;2030:14:1;1337:10439:34;;2030:14:1;1337:10439:34;:::o;986:95:12:-;358:279;1337:10439:34;;;1041:32:12;;;;;;;;;;;;:::i;:::-;358:279;;;;;131:42;358:279;;;986:95::o;7740:145::-;1337:10439:34;7823:54:12;358:279;7740:145;;;;1337:10439:34;;;7823:54:12;;;;;;;;1337:10439:34;7823:54:12;;;1337:10439:34;;;;;;:::i;:::-;;;;;;;7823:54:12;;;;;;;;:::i;7038:252:0:-;;2030:14:1;;7136:6:0;;;1337:10439:34;;7182:2:0;1337:10439:34;;;;805:35:0;7206:19;;;:42;;;7038:252;1337:10439:34;;;2030:14:1;;7038:252:0;:::o;7206:42::-;7229:19;958:34;7229:19;;;7206:42;;7139:145:12;1337:10439:34;7222:54:12;358:279;7139:145;;;;1337:10439:34;;7222:54:12;;;;;;;;1337:10439:34;7222:54:12;;;1337:10439:34;;;;;;:::i;:::-;;;;;;7222:54:12;;;;;;;;:::i","linkReferences":{}},"methodIdentifiers":{"IS_SCRIPT()":"f8ccbf47","PROTOCOL_FEE_ADDRESS()":"50615d53","PROTOCOL_FEE_PPM()":"41a20a93","WETH()":"ad5c4648","run()":"c0406226"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"IS_SCRIPT\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PROTOCOL_FEE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PROTOCOL_FEE_PPM\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"contract NativeWrapper\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"run\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"script/DeploySepolia.sol\":\"DeploySepolia\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/abdk-libraries-solidity/ABDKMath64x64.sol\":{\"keccak256\":\"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97\",\"license\":\"BSD-4-Clause\",\"urls\":[\"bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7\",\"dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4b2a5a85e045dcf6a082700c7252e43854c2eed88f860aaa18ec1e85218ae2bf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://98d060ed5be569a92d908fc358149039dc8f833d61973aa1b9d1d8235676bf6d\",\"dweb:/ipfs/QmaWQpn5dJmbMS5skwmPPMeUWZG35BLkignPpcA3zyagEs\"]},\"lib/forge-std/src/Script.sol\":{\"keccak256\":\"0xc942e27c7baae499beb01afbbae99f24d42af9a6e4aae675bc6901b704aa8e9b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0456008adf68947247f358b62863af4a8e349549d2260f2ff9569ff0e3cf5c98\",\"dweb:/ipfs/QmdviSUj2i7o3TPN5vd2xocqGMFVqjUzaiJTZRYyPxyHPx\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xb2cbca1a6ffa19926c31bad47393a070305c809fe5d88c52214d5c51ce0733c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cf20975cfd9733910305fc8e746c7631c2ab210289aab036cec32f3c530335c7\",\"dweb:/ipfs/QmYYvVzvAN1uCt8XtDmWo5x2inSVJBYajFexe92rVWEuMf\"]},\"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/StdJson.sol\":{\"keccak256\":\"0xbc0132abe1c2accc2867c0f03667afffdf92f3e95a581bb03c9557eaa38ea500\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb6fab37dc73c219cfbb7b4f4998bcf7677ca5397a867e850f40232192073974\",\"dweb:/ipfs/QmUHsbVdp9SKmgek7ZfPcLTKrpZFXpqaqt4sVejzxGEQL3\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xcb876f5421e5aae334f9a6c5d549131c18ad347f1035d2a1e920f2623f346c85\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://28076e06b01be4095f860fa9b142c284bac34c0813948e0a52d11acc15502db6\",\"dweb:/ipfs/QmVR6XFTmBatJAVvYgkZxN21R5zvYTU4ard4Aow8TmXjy9\"]},\"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/StdUtils.sol\":{\"keccak256\":\"0xb2469a902a326074034c4f7081d868113db0edbb7cf48b86528af2d6b07295f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1430a81c4978be875e2a3b31a8bfa4e1438fecd327f23771b690d64db63c020a\",\"dweb:/ipfs/QmW6aB2u1LNaRgGQFwjV7L7UbxsRg63iJ7AuujPouEa4cT\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9b4df44a3b748593a58be7ba64fa5f420e5dcd7927bfa5173186228bfe61782f\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://b89fcf92ee1d14237cfb0dd949341053389d5b6a043ad77349b65bef80b1d59f\",\"dweb:/ipfs/QmPkia3aNHrqvE4tqxG2AyrdB4W91jTAvcbchgs2wAo6NL\"]},\"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\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol\":{\"keccak256\":\"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd\",\"dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashLender.sol\":{\"keccak256\":\"0x3a3549277762438ad9a38fce50493ed8995b806f78aabff02d51b4e1671ce6f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f105ec892766b8a41ece6d3b10a4e434166cc8db4ddb8451493a2de93cf7d893\",\"dweb:/ipfs/QmP5wxpX9cDzKtToA2cM5jbb928UN8DtGyV1cG4w7jPJCt\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd\",\"dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0x25f9b099413f805b4c4bbad8cc179326c10be237aec00349caf91524f8db0bbc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dcfb75af07ad33b1f8e966f793db3df8fbcfb14103ed3644c0c634658a8fd099\",\"dweb:/ipfs/QmPWamdkbcKwG3ah2G9TZtKHzQmjnunsWoPWr5KKfbrKNb\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x3ce148ed98f31ec9c463b32ee66f96194f0de89e41d7da3ef9e084f0effce06e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3939cd40f5bf5ea382e5af5c5011c1b998bb88b4872774aa0de0071cb0c0d49e\",\"dweb:/ipfs/QmWtEDNECUaeYYAQoP6epe4TGYphAbbfG7aEmKVhLHq451\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168\",\"dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd274645d15bb7e4fcb9c833e401b2c5837404f90057f11a49118f25e0af7c76f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d38e0b997bb7aebae26d190b03d0991feb0d204c45f945e60014e1ca9175de69\",\"dweb:/ipfs/QmWzsUHHAZcjMyF8uMDEtNpMTkYZdQrfvdKPobXvwVHKo6\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x50e81a8b089e3f382b6c915aa0166773de64ea4756e8f9479d9943a5f956ddf5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bfeb96a150537222e2191c03887127499a4f21dfb5f9a7211da4d81749b52848\",\"dweb:/ipfs/QmYR75ECbsBuxSiXmGvGfNKJRLoK5MdLUZL1bd8SixzxL4\"]},\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161\",\"dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"script/DeploySepolia.sol\":{\"keccak256\":\"0x5845375b60af6f6b8a6c56e8486b3ff6703b58ab1db2e46ec39726fc66b64e99\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f56b0c18ddb51644f2d49043802c0eb86916fccd4490547d535efd430c435286\",\"dweb:/ipfs/Qma5FhhHeLF6CqBmtL4Ekj6ZhtGkqdQNkpHY4qmcDt7AcG\"]},\"src/ERC20External.sol\":{\"keccak256\":\"0x421f511bb3aa7258fb7121aa66b9a2e8e0b7a07b7e51c800c714f7acbfd599d3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b3fde56a83eae12a31eb4875d8952a99d18591fe0f18b6a12392c8f48f76af46\",\"dweb:/ipfs/QmeApbmGv6Z2b1JynvBxaAK1j1eWhGYpeNEP56V8XXvpcz\"]},\"src/ERC20Internal.sol\":{\"keccak256\":\"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f\",\"dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk\"]},\"src/IOwnable.sol\":{\"keccak256\":\"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1\",\"dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9\"]},\"src/IPartyFlashCallback.sol\":{\"keccak256\":\"0xff1d473d27c4dc75441a5f0db2d761916cce4a702f660e998467791efd1d9b2e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3220d69c62ed8c8106762c92857f24011284e8ddcfa5db4210e506b112fa1870\",\"dweb:/ipfs/QmYoZiGsVwoJvyPMcsSste4tq93wVBgDqCZkwPY7dvyLBJ\"]},\"src/IPartyInfo.sol\":{\"keccak256\":\"0x80e88e8c29cdf12426f16b4bf2a088397fcc31c2664564f7f26117dc85009af7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b91392cbda8adfccf9bea2e584616c4b3359d7381a18f5f3e5c9c71618786051\",\"dweb:/ipfs/QmWtWb1gVs2pzFkjwDj4mcdoCnQLPbwq4Qxbh38VEdWwAW\"]},\"src/IPartyPlanner.sol\":{\"keccak256\":\"0x8f27d564f2c1fde267aa1fec970402e2da5b731ac97f4d5fe24f6ebab1fd03ff\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://399d21923fdbb6c3012f086c6de62bd4ea6648cf71a46e59beaad9a74d854025\",\"dweb:/ipfs/QmcS4qRFjUJ4JyeTnjDSnTzprSnrd8TTxF2gfZf2JBs1c6\"]},\"src/IPartyPool.sol\":{\"keccak256\":\"0x55d3656b1a4c75801852066b7ba871212e5e807917b3b9029349349fae39375c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://009b67ccf1d28a04a2407a05ddda8f954033b7ac70f7fd5cbedbf779e867df9f\",\"dweb:/ipfs/QmS5vQcfma6PN28Q6qQwqa7KmUKu2KST72jwF8ffsj6Bw2\"]},\"src/LMSRStabilized.sol\":{\"keccak256\":\"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3\",\"dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB\"]},\"src/LMSRStabilizedBalancedPair.sol\":{\"keccak256\":\"0x782f3baf92f74152c0b93b95199abbb3a36c75c921454260c8b0237f91d7c59d\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://04d463c4fdcb6c8e2ebf9aed649ff21cca759ba73a4c93659e30c7df25e26c81\",\"dweb:/ipfs/QmUxmWytiw5VYJRUrFbSGm1oWmDPQ4q23pnkmK1q9P4apN\"]},\"src/NativeWrapper.sol\":{\"keccak256\":\"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238\",\"dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB\"]},\"src/OwnableExternal.sol\":{\"keccak256\":\"0x0a0199368ad20a31e7169b3e56449bf022c9d680e0d487c118608a7f14cb7efb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3348a063649e01acf9c6aa6b7ce2ecf62ace8c6f1467477de7d605996f08ec64\",\"dweb:/ipfs/QmSoxb35FFsNCgXgWn91CupvjpGmyM31wcfxAVpVFFPecX\"]},\"src/OwnableInternal.sol\":{\"keccak256\":\"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca\",\"dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE\"]},\"src/PartyInfo.sol\":{\"keccak256\":\"0x009de3c5bd0542df3f74b89be5c5dd09dd3bb441b2028df99db3e6b7e27d862d\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://65b1e0622dd99b3af332a93a42463dad10f4a3db10a313c8e6bcb341eaf8e930\",\"dweb:/ipfs/QmUfeDd1jUPdxReFYRA8fUWCmfLvXNZf8mnNnBt1ohWJzM\"]},\"src/PartyPlanner.sol\":{\"keccak256\":\"0xdd92d3d269279e372680583a5d6e1a7342715c9b6708777f17635c4e2391620f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://cd9ef0482a8efd86a49eef567defe412e72e522d85de0d8ded89eac6b8f6463a\",\"dweb:/ipfs/QmVpXgadYC3NbQ4DfWFg4yRKZEvJ42bzFvC2MLu6JAjDoS\"]},\"src/PartyPool.sol\":{\"keccak256\":\"0xf4af110b4cd06a00ee1ec2bd61e887662dcb26aaf6903b9910902614b50e4955\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://691fabaffecdf698601cc0696099e3bfa44ed60097b8f9b9f01cd4bf703bbb77\",\"dweb:/ipfs/QmXuPX2zu8sN9VyePDvVra4QP8LN2knNxbiGsMGzYAyS8S\"]},\"src/PartyPoolBalancedPair.sol\":{\"keccak256\":\"0x7d36ae211709da83ecafcc70f31e5fcdc1bc299243eedceebf17f26339757d7b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://91762575c367c9b1d50a633fb46ccf429a28bbaf70f76b524749ad32dc716d7a\",\"dweb:/ipfs/QmVLxjR3h2XJukjXFx56b4m8SPg6oupxqkzY5EKCK7GFHn\"]},\"src/PartyPoolBase.sol\":{\"keccak256\":\"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5\",\"dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5\"]},\"src/PartyPoolDeployer.sol\":{\"keccak256\":\"0xdf2a6a8602eba3aef625c798a0ec6525feb7520c2fd6933c30dd76fe3c4e2618\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9aa94963e0d34feddf63b3ae034874557229740be1ef80f49e87bd05694c9b50\",\"dweb:/ipfs/QmYQ6mH1mEJCJ9XNGdT3saRU3q36GZ94WuyRsn9LRWXtbM\"]},\"src/PartyPoolHelpers.sol\":{\"keccak256\":\"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5\",\"dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP\"]},\"src/PartyPoolMintImpl.sol\":{\"keccak256\":\"0xe9d9927cecd46a1f836b2c43e9d6184642b9e695c7462e5fb7c671a38aab7398\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8d821911d7982fc302929198539b27f72be100b91450c98d2e0081519f776499\",\"dweb:/ipfs/QmRChx1DPD1gKXwfD1m6aQ7pgh1aX6CvYLNX41ufdJteaJ\"]},\"src/PartyPoolSwapImpl.sol\":{\"keccak256\":\"0x71ecbd6d0fb106031baed7e4c21694ef24f0112af7d975325b98b1b0463ba5b2\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://64f8f8bae2f89ca495b9edacd012363b55e78a198f100650beb2b1238e8ef11f\",\"dweb:/ipfs/QmVfihiw9TqncuEfZKx7c6WEHiGFfRQyhtfdTGzfN7emNY\"]},\"test/MockERC20.sol\":{\"keccak256\":\"0x0bc6f65e240dafff70f1f2d9069163c38b7f18f2b9f719c348b2525a3f3862de\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f52582fc050d9b461de199c55e270df101cc88d515f063db84f1f7250d9fe470\",\"dweb:/ipfs/QmPNhnGkM4Fw9EQoZT1ivMymeBjTKHkv2UzSK83WQPMwc6\"]},\"test/MockFlashBorrower.sol\":{\"keccak256\":\"0x32b6e9a6af1135e89ae19872ebe3cba1f32a247e76ce4688183a52a76e552a52\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ba428a2bb7451f7f17f4b5578fa30d14127314d4cc1ac5eaea677d928d922ab2\",\"dweb:/ipfs/QmZiiFZJvrPVtUCYGCRqijb9JdhANyZ6tiqCA5CvaNQRs3\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"IS_SCRIPT","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"PROTOCOL_FEE_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"PROTOCOL_FEE_PPM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"WETH","outputs":[{"internalType":"contract NativeWrapper","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"run"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"script/DeploySepolia.sol":"DeploySepolia"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/abdk-libraries-solidity/ABDKMath64x64.sol":{"keccak256":"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97","urls":["bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7","dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN"],"license":"BSD-4-Clause"},"lib/forge-std/src/Base.sol":{"keccak256":"0x4b2a5a85e045dcf6a082700c7252e43854c2eed88f860aaa18ec1e85218ae2bf","urls":["bzz-raw://98d060ed5be569a92d908fc358149039dc8f833d61973aa1b9d1d8235676bf6d","dweb:/ipfs/QmaWQpn5dJmbMS5skwmPPMeUWZG35BLkignPpcA3zyagEs"],"license":"MIT"},"lib/forge-std/src/Script.sol":{"keccak256":"0xc942e27c7baae499beb01afbbae99f24d42af9a6e4aae675bc6901b704aa8e9b","urls":["bzz-raw://0456008adf68947247f358b62863af4a8e349549d2260f2ff9569ff0e3cf5c98","dweb:/ipfs/QmdviSUj2i7o3TPN5vd2xocqGMFVqjUzaiJTZRYyPxyHPx"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xb2cbca1a6ffa19926c31bad47393a070305c809fe5d88c52214d5c51ce0733c6","urls":["bzz-raw://cf20975cfd9733910305fc8e746c7631c2ab210289aab036cec32f3c530335c7","dweb:/ipfs/QmYYvVzvAN1uCt8XtDmWo5x2inSVJBYajFexe92rVWEuMf"],"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/StdJson.sol":{"keccak256":"0xbc0132abe1c2accc2867c0f03667afffdf92f3e95a581bb03c9557eaa38ea500","urls":["bzz-raw://eb6fab37dc73c219cfbb7b4f4998bcf7677ca5397a867e850f40232192073974","dweb:/ipfs/QmUHsbVdp9SKmgek7ZfPcLTKrpZFXpqaqt4sVejzxGEQL3"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xcb876f5421e5aae334f9a6c5d549131c18ad347f1035d2a1e920f2623f346c85","urls":["bzz-raw://28076e06b01be4095f860fa9b142c284bac34c0813948e0a52d11acc15502db6","dweb:/ipfs/QmVR6XFTmBatJAVvYgkZxN21R5zvYTU4ard4Aow8TmXjy9"],"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/StdUtils.sol":{"keccak256":"0xb2469a902a326074034c4f7081d868113db0edbb7cf48b86528af2d6b07295f8","urls":["bzz-raw://1430a81c4978be875e2a3b31a8bfa4e1438fecd327f23771b690d64db63c020a","dweb:/ipfs/QmW6aB2u1LNaRgGQFwjV7L7UbxsRg63iJ7AuujPouEa4cT"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9b4df44a3b748593a58be7ba64fa5f420e5dcd7927bfa5173186228bfe61782f","urls":["bzz-raw://b89fcf92ee1d14237cfb0dd949341053389d5b6a043ad77349b65bef80b1d59f","dweb:/ipfs/QmPkia3aNHrqvE4tqxG2AyrdB4W91jTAvcbchgs2wAo6NL"],"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"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d","urls":["bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100","dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc","urls":["bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037","dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44","urls":["bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d","dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol":{"keccak256":"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e","urls":["bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd","dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashLender.sol":{"keccak256":"0x3a3549277762438ad9a38fce50493ed8995b806f78aabff02d51b4e1671ce6f5","urls":["bzz-raw://f105ec892766b8a41ece6d3b10a4e434166cc8db4ddb8451493a2de93cf7d893","dweb:/ipfs/QmP5wxpX9cDzKtToA2cM5jbb928UN8DtGyV1cG4w7jPJCt"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86","urls":["bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd","dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0x25f9b099413f805b4c4bbad8cc179326c10be237aec00349caf91524f8db0bbc","urls":["bzz-raw://dcfb75af07ad33b1f8e966f793db3df8fbcfb14103ed3644c0c634658a8fd099","dweb:/ipfs/QmPWamdkbcKwG3ah2G9TZtKHzQmjnunsWoPWr5KKfbrKNb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0x3ce148ed98f31ec9c463b32ee66f96194f0de89e41d7da3ef9e084f0effce06e","urls":["bzz-raw://3939cd40f5bf5ea382e5af5c5011c1b998bb88b4872774aa0de0071cb0c0d49e","dweb:/ipfs/QmWtEDNECUaeYYAQoP6epe4TGYphAbbfG7aEmKVhLHq451"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9","urls":["bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168","dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd274645d15bb7e4fcb9c833e401b2c5837404f90057f11a49118f25e0af7c76f","urls":["bzz-raw://d38e0b997bb7aebae26d190b03d0991feb0d204c45f945e60014e1ca9175de69","dweb:/ipfs/QmWzsUHHAZcjMyF8uMDEtNpMTkYZdQrfvdKPobXvwVHKo6"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol":{"keccak256":"0x50e81a8b089e3f382b6c915aa0166773de64ea4756e8f9479d9943a5f956ddf5","urls":["bzz-raw://bfeb96a150537222e2191c03887127499a4f21dfb5f9a7211da4d81749b52848","dweb:/ipfs/QmYR75ECbsBuxSiXmGvGfNKJRLoK5MdLUZL1bd8SixzxL4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol":{"keccak256":"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0","urls":["bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161","dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"},"script/DeploySepolia.sol":{"keccak256":"0x5845375b60af6f6b8a6c56e8486b3ff6703b58ab1db2e46ec39726fc66b64e99","urls":["bzz-raw://f56b0c18ddb51644f2d49043802c0eb86916fccd4490547d535efd430c435286","dweb:/ipfs/Qma5FhhHeLF6CqBmtL4Ekj6ZhtGkqdQNkpHY4qmcDt7AcG"],"license":"UNLICENSED"},"src/ERC20External.sol":{"keccak256":"0x421f511bb3aa7258fb7121aa66b9a2e8e0b7a07b7e51c800c714f7acbfd599d3","urls":["bzz-raw://b3fde56a83eae12a31eb4875d8952a99d18591fe0f18b6a12392c8f48f76af46","dweb:/ipfs/QmeApbmGv6Z2b1JynvBxaAK1j1eWhGYpeNEP56V8XXvpcz"],"license":"UNLICENSED"},"src/ERC20Internal.sol":{"keccak256":"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36","urls":["bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f","dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk"],"license":"UNLICENSED"},"src/IOwnable.sol":{"keccak256":"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990","urls":["bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1","dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9"],"license":"MIT"},"src/IPartyFlashCallback.sol":{"keccak256":"0xff1d473d27c4dc75441a5f0db2d761916cce4a702f660e998467791efd1d9b2e","urls":["bzz-raw://3220d69c62ed8c8106762c92857f24011284e8ddcfa5db4210e506b112fa1870","dweb:/ipfs/QmYoZiGsVwoJvyPMcsSste4tq93wVBgDqCZkwPY7dvyLBJ"],"license":"UNLICENSED"},"src/IPartyInfo.sol":{"keccak256":"0x80e88e8c29cdf12426f16b4bf2a088397fcc31c2664564f7f26117dc85009af7","urls":["bzz-raw://b91392cbda8adfccf9bea2e584616c4b3359d7381a18f5f3e5c9c71618786051","dweb:/ipfs/QmWtWb1gVs2pzFkjwDj4mcdoCnQLPbwq4Qxbh38VEdWwAW"],"license":"UNLICENSED"},"src/IPartyPlanner.sol":{"keccak256":"0x8f27d564f2c1fde267aa1fec970402e2da5b731ac97f4d5fe24f6ebab1fd03ff","urls":["bzz-raw://399d21923fdbb6c3012f086c6de62bd4ea6648cf71a46e59beaad9a74d854025","dweb:/ipfs/QmcS4qRFjUJ4JyeTnjDSnTzprSnrd8TTxF2gfZf2JBs1c6"],"license":"UNLICENSED"},"src/IPartyPool.sol":{"keccak256":"0x55d3656b1a4c75801852066b7ba871212e5e807917b3b9029349349fae39375c","urls":["bzz-raw://009b67ccf1d28a04a2407a05ddda8f954033b7ac70f7fd5cbedbf779e867df9f","dweb:/ipfs/QmS5vQcfma6PN28Q6qQwqa7KmUKu2KST72jwF8ffsj6Bw2"],"license":"UNLICENSED"},"src/LMSRStabilized.sol":{"keccak256":"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b","urls":["bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3","dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB"],"license":"UNLICENSED"},"src/LMSRStabilizedBalancedPair.sol":{"keccak256":"0x782f3baf92f74152c0b93b95199abbb3a36c75c921454260c8b0237f91d7c59d","urls":["bzz-raw://04d463c4fdcb6c8e2ebf9aed649ff21cca759ba73a4c93659e30c7df25e26c81","dweb:/ipfs/QmUxmWytiw5VYJRUrFbSGm1oWmDPQ4q23pnkmK1q9P4apN"],"license":"UNLICENSED"},"src/NativeWrapper.sol":{"keccak256":"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579","urls":["bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238","dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB"],"license":"UNLICENSED"},"src/OwnableExternal.sol":{"keccak256":"0x0a0199368ad20a31e7169b3e56449bf022c9d680e0d487c118608a7f14cb7efb","urls":["bzz-raw://3348a063649e01acf9c6aa6b7ce2ecf62ace8c6f1467477de7d605996f08ec64","dweb:/ipfs/QmSoxb35FFsNCgXgWn91CupvjpGmyM31wcfxAVpVFFPecX"],"license":"MIT"},"src/OwnableInternal.sol":{"keccak256":"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581","urls":["bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca","dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE"],"license":"MIT"},"src/PartyInfo.sol":{"keccak256":"0x009de3c5bd0542df3f74b89be5c5dd09dd3bb441b2028df99db3e6b7e27d862d","urls":["bzz-raw://65b1e0622dd99b3af332a93a42463dad10f4a3db10a313c8e6bcb341eaf8e930","dweb:/ipfs/QmUfeDd1jUPdxReFYRA8fUWCmfLvXNZf8mnNnBt1ohWJzM"],"license":"UNLICENSED"},"src/PartyPlanner.sol":{"keccak256":"0xdd92d3d269279e372680583a5d6e1a7342715c9b6708777f17635c4e2391620f","urls":["bzz-raw://cd9ef0482a8efd86a49eef567defe412e72e522d85de0d8ded89eac6b8f6463a","dweb:/ipfs/QmVpXgadYC3NbQ4DfWFg4yRKZEvJ42bzFvC2MLu6JAjDoS"],"license":"UNLICENSED"},"src/PartyPool.sol":{"keccak256":"0xf4af110b4cd06a00ee1ec2bd61e887662dcb26aaf6903b9910902614b50e4955","urls":["bzz-raw://691fabaffecdf698601cc0696099e3bfa44ed60097b8f9b9f01cd4bf703bbb77","dweb:/ipfs/QmXuPX2zu8sN9VyePDvVra4QP8LN2knNxbiGsMGzYAyS8S"],"license":"UNLICENSED"},"src/PartyPoolBalancedPair.sol":{"keccak256":"0x7d36ae211709da83ecafcc70f31e5fcdc1bc299243eedceebf17f26339757d7b","urls":["bzz-raw://91762575c367c9b1d50a633fb46ccf429a28bbaf70f76b524749ad32dc716d7a","dweb:/ipfs/QmVLxjR3h2XJukjXFx56b4m8SPg6oupxqkzY5EKCK7GFHn"],"license":"UNLICENSED"},"src/PartyPoolBase.sol":{"keccak256":"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999","urls":["bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5","dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5"],"license":"UNLICENSED"},"src/PartyPoolDeployer.sol":{"keccak256":"0xdf2a6a8602eba3aef625c798a0ec6525feb7520c2fd6933c30dd76fe3c4e2618","urls":["bzz-raw://9aa94963e0d34feddf63b3ae034874557229740be1ef80f49e87bd05694c9b50","dweb:/ipfs/QmYQ6mH1mEJCJ9XNGdT3saRU3q36GZ94WuyRsn9LRWXtbM"],"license":"UNLICENSED"},"src/PartyPoolHelpers.sol":{"keccak256":"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c","urls":["bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5","dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP"],"license":"UNLICENSED"},"src/PartyPoolMintImpl.sol":{"keccak256":"0xe9d9927cecd46a1f836b2c43e9d6184642b9e695c7462e5fb7c671a38aab7398","urls":["bzz-raw://8d821911d7982fc302929198539b27f72be100b91450c98d2e0081519f776499","dweb:/ipfs/QmRChx1DPD1gKXwfD1m6aQ7pgh1aX6CvYLNX41ufdJteaJ"],"license":"UNLICENSED"},"src/PartyPoolSwapImpl.sol":{"keccak256":"0x71ecbd6d0fb106031baed7e4c21694ef24f0112af7d975325b98b1b0463ba5b2","urls":["bzz-raw://64f8f8bae2f89ca495b9edacd012363b55e78a198f100650beb2b1238e8ef11f","dweb:/ipfs/QmVfihiw9TqncuEfZKx7c6WEHiGFfRQyhtfdTGzfN7emNY"],"license":"UNLICENSED"},"test/MockERC20.sol":{"keccak256":"0x0bc6f65e240dafff70f1f2d9069163c38b7f18f2b9f719c348b2525a3f3862de","urls":["bzz-raw://f52582fc050d9b461de199c55e270df101cc88d515f063db84f1f7250d9fe470","dweb:/ipfs/QmPNhnGkM4Fw9EQoZT1ivMymeBjTKHkv2UzSK83WQPMwc6"],"license":"UNLICENSED"},"test/MockFlashBorrower.sol":{"keccak256":"0x32b6e9a6af1135e89ae19872ebe3cba1f32a247e76ce4688183a52a76e552a52","urls":["bzz-raw://ba428a2bb7451f7f17f4b5578fa30d14127314d4cc1ac5eaea677d928d922ab2","dweb:/ipfs/QmZiiFZJvrPVtUCYGCRqijb9JdhANyZ6tiqCA5CvaNQRs3"],"license":"UNLICENSED"}},"version":1},"id":34} \ No newline at end of file +{"abi":[{"type":"function","name":"IS_SCRIPT","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"PROTOCOL_FEE_ADDRESS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"PROTOCOL_FEE_PPM","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"WETH","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract NativeWrapper"}],"stateMutability":"view"},{"type":"function","name":"run","inputs":[],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x608080604052346028576201000162ff00ff19600c541617600c556201ecd690816200002d8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c90816341a20a931461330d5750806350615d53146132c1578063ad5c464814613275578063c04062261461009b5763f8ccbf4714610055575f80fd5b3461009857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009857602060ff600c5460101c166040519015158152f35b80fd5b5034612992575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126129925762aa36a7460361321757737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15612992576040517f7fb5297f0000000000000000000000000000000000000000000000000000000081525f8160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015612b3557613204575b5080768e4d16886b8946dfe463fa172129eabf4825fb090000007fffffffffffffffffff0000000000000000000000000000000000000000ffffff600c54161780600c5573dc225280216822ca956738390f589c794129bd537fffffffffffffffffffffffff0000000000000000000000000000000000000000600d541617600d55737ba123e4e7395a361284d069bd0d545f3f8206417fffffffffffffffffffffffff0000000000000000000000000000000000000000600e541617600e557388125947bbf1a6dd0fed4b257bb3f9e1fbdcb3cc7fffffffffffffffffffffffff0000000000000000000000000000000000000000600f541617600f5573c8db65c0b9f4cf59097d4c5bcb9e8e92b9e4e15f7fffffffffffffffffffffffff00000000000000000000000000000000000000006010541617601055737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156131445773ffffffffffffffffffffffffffffffffffffffff604051917fc657c71800000000000000000000000000000000000000000000000000000000835260181c1660048201526040602482015281818061031b60448201604090600481527f555358440000000000000000000000000000000000000000000000000000000060208201520190565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156130bd576131ef575b5073ffffffffffffffffffffffffffffffffffffffff600d5416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561314457604051907fc657c7180000000000000000000000000000000000000000000000000000000082526004820152604060248201528181806103e360448201604090600481527f465553440000000000000000000000000000000000000000000000000000000060208201520190565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156130bd576131da575b5073ffffffffffffffffffffffffffffffffffffffff600e5416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561314457604051907fc657c7180000000000000000000000000000000000000000000000000000000082526004820152604060248201528181806104ab60448201604090600481527f444956450000000000000000000000000000000000000000000000000000000060208201520190565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156130bd576131c5575b5073ffffffffffffffffffffffffffffffffffffffff600f5416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561314457604051907fc657c71800000000000000000000000000000000000000000000000000000000825260048201526040602482015281818061057360448201604090600481527f425554430000000000000000000000000000000000000000000000000000000060208201520190565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156130bd576131b0575b5073ffffffffffffffffffffffffffffffffffffffff60105416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561314457604051907fc657c71800000000000000000000000000000000000000000000000000000000825260048201526040602482015281818061063b60448201604090600581527f575445544800000000000000000000000000000000000000000000000000000060208201520190565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156130bd5761319b575b5073ffffffffffffffffffffffffffffffffffffffff600c5460181c16803b15613144576040517f40c10f1900000000000000000000000000000000000000000000000000000000815233600482015264e8d4a5100060248201529082908290604490829084905af180156130bd57613186575b5073ffffffffffffffffffffffffffffffffffffffff600d5416803b15613144576040517f40c10f1900000000000000000000000000000000000000000000000000000000815233600482015264e8d4a5100060248201529082908290604490829084905af180156130bd57613171575b5073ffffffffffffffffffffffffffffffffffffffff600e5416803b15613144576040517f40c10f1900000000000000000000000000000000000000000000000000000000815233600482015269d3c21bcecceda100000060248201529082908290604490829084905af180156130bd5761315c575b5073ffffffffffffffffffffffffffffffffffffffff600f5416803b15613144578180916044604051809481937f40c10f19000000000000000000000000000000000000000000000000000000008352336004840152655af3107a400060248401525af180156130bd57613147575b5073ffffffffffffffffffffffffffffffffffffffff60105416803b15613144576040517f40c10f1900000000000000000000000000000000000000000000000000000000815233600482015269d3c21bcecceda100000060248201529082908290604490829084905af180156130bd5761312f575b50506040516138d68082019082821067ffffffffffffffff83111761310257602091839162003acf833973fff9976782d46cc05630d1f6ebab18b2324d6b14815203019082f080156130f5576040516155388082019082821067ffffffffffffffff8311176130c8576020918391620073a5833973fff9976782d46cc05630d1f6ebab18b2324d6b14815203019083f080156130bd57604051615a7b8082019082821067ffffffffffffffff831117613090579082916200c8dd8339039084f091821561308557604051615fd98082019082821067ffffffffffffffff83111761305857908291620123588339039085f0801561304d576040516136f2928382019382851067ffffffffffffffff8611176130205773ffffffffffffffffffffffffffffffffffffffff808080610100958795620183318739338a5273fff9976782d46cc05630d1f6ebab18b2324d6b1460208b015216988960408a01521698896060890152169485608088015216948560a0820152620186a060c0820152730e280f5eda58872d7cdaa8ac0a57a55fd6133aed60e082015203019086f080156130155773ffffffffffffffffffffffffffffffffffffffff1692610a64846135cc565b604051608096610a748883613346565b600382527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08801908136602085013773ffffffffffffffffffffffffffffffffffffffff600c5460181c16610ac88461339f565b5273ffffffffffffffffffffffffffffffffffffffff600f5416610aeb846133d9565b5273ffffffffffffffffffffffffffffffffffffffff60105416610b0e846133e9565b5260405192610b1d8a85613346565b6003845282366020860137620f4240610b358561339f565b526305f5e100610b44856133d9565b52670de0b6b3a7640000610b57856133e9565b5260405193610b668b86613346565b60038552833660208701376032610b7c8661339f565b5260fa610b88866133d9565b5261015e610b95866133e9565b52604051610ba38c82613346565b60038152843660208301376001610bb98261339f565b52620186a0610bc7826133d9565b52610fa0610bd4826133e9565b5260405191610be38d84613346565b6003835285366020850137610bf78161339f565b51806127100290612710820403612fe857610c1c90610c158461339f565b51906133f9565b610c258461339f565b52610c2f816133d9565b51806127100290612710820403612fe85790610c51610c6092610c15856133d9565b610c5a856133d9565b526133e9565b5190816127100291612710830403612fbb5790610c15610c7f926133e9565b610c88826133e9565b526719999999999999999280612f8e575082600f0b925f841315612f305768010000000000000000841215612ed2576f028f5c28f5c28f5c000000000000000060401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612eb8575b1561299257600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612e9e575b1561299257600f0b5f811315612e405768010147ae147ae147ae610d55916139f3565b600f0b5f81138080612e2e575b15612dd05715612992575f908068010000000000000000821215612dc3575b806401000000006002921215612db7575b62010000811215612dab575b610100811215612d9f575b6010811215612d93575b6004811215612d88575b1215612d7e575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f8313612d6257506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b028c1d907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082600f0b1461299257610e55915f03600f0b6139f3565b600f0b5f811315612d0457801561299257700100000000000000000000000000000000057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612cea575b1561299257600f0b915f831315612c8c57610fed610f6c92610fa16040958651998a9687967f60cf7d4a0000000000000000000000000000000000000000000000000000000088526101806004890152600a6101848901527f546f6b656e20506f6f6c000000000000000000000000000000000000000000006101a48901526101c0602489015260026101c48901527f54500000000000000000000000000000000000000000000000000000000000006101e48901526102006044890152610204880190613464565b9160648701527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8683030160848701526134ad565b906109c460a48501525f60c48501523360e4850152336101048501527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc848303016101248501526134ad565b69021e19e0c9bab24000006101448301525f61016483015203815f8b5af1928315612b35575f93612c6a575b50604051906110288a83613346565b600382528236602084013773ffffffffffffffffffffffffffffffffffffffff600c5460181c166110588361339f565b5273ffffffffffffffffffffffffffffffffffffffff600d541661107b836133d9565b5273ffffffffffffffffffffffffffffffffffffffff600e541661109e836133e9565b526040516110ac8b82613346565b6003815283366020830137620f42406110c48261339f565b52620f42406110d2826133d9565b52670de0b6b3a76400006110e5826133e9565b52604051936110f48c86613346565b600385523660208601376111078161339f565b516127108102908082046127101490151715612c1f576111268561339f565b52611130816133d9565b51906127108202918083046127101490151715612c1f5761115491610c5a866133d9565b51916127108302928084046127101490151715612c1f576112906112339260409461117e876133e9565b5266068db8bac710cb95855196879586957fa4689b240000000000000000000000000000000000000000000000000000000087526101a06004880152600f6101a48801527f537461626c65636f696e20506f6f6c00000000000000000000000000000000006101c48801526101e0602488015260046101e48801527f53544150000000000000000000000000000000000000000000000000000000006102048801526102206044880152610224870190613464565b9260648601526084850152606460a4850152606460c48501525f60e485015233610104850152336101248501527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc848303016101448501526134ad565b69021e19e0c9bab24000006101648301525f61018483015203815f8a5af18015612b3557612c4c575b50606094604051976112cb878a613346565b600289527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08701803660208c013773ffffffffffffffffffffffffffffffffffffffff600c5460181c1661131e8b61339f565b5273ffffffffffffffffffffffffffffffffffffffff600e54166113418b6133d9565b5260405161134f8982613346565b6002815281366020830137620f42406113678261339f565b52670de0b6b3a764000061137a826133d9565b52604051916113898a84613346565b6002835236602084013761139c8161339f565b51906127108202918083046127101490151715612c1f576113c6916113c08461339f565b526133d9565b516127108102908082046127101490151715612c1f576113e5826133d9565b5260406114a45f9b6114fc67cccccccccccccccc845195869485947ff63772fc0000000000000000000000000000000000000000000000000000000086526101806004870152600b6101848701527f537461626c6520506169720000000000000000000000000000000000000000006101a48701526101c0602487015260056101c48701527f53504149520000000000000000000000000000000000000000000000000000006101e48701526102006044870152610204860190613464565b91606485015260076084850152600760a4850152600160c48501523360e4850152336101048501527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc848303016101248501526134ad565b69021e19e0c9bab24000006101448301525f61016483015203815f875af18015612b3557612bf1575b50604051612fd38082019082821067ffffffffffffffff8311176129d45760409183916201ba2383398781528b60208201520301905ff08015612b355773ffffffffffffffffffffffffffffffffffffffff8091169316604051977f6ff97f1d0000000000000000000000000000000000000000000000000000000089525f89600481855afa988915612b35575f99612b40575b508851906115c6836135cc565b604051997f18160ddd000000000000000000000000000000000000000000000000000000008b5260208b600481875afa9a8b15612b35575f9b612b01575b5061164760409b8c61161881519182613346565b601481527f706f73742d6372656174696f6e20737570706c790000000000000000000000006020820152613a54565b8a517fb3f1c93d0000000000000000000000000000000000000000000000000000000081523360048201523360248201526104d260448201525f60648201526020816084815f895af18015612a8f575f90612acd575b8c516116dd92506116ae8e82613346565b600681527f6d696e74656400000000000000000000000000000000000000000000000000006020820152613a54565b8a517f18160ddd000000000000000000000000000000000000000000000000000000008152602081600481885afa8015612a8f575f90612a99575b8c5161175892506117298e82613346565b601081527f706f73742d6d696e7420737570706c79000000000000000000000000000000006020820152613a54565b8a517f6863f5bc000000000000000000000000000000000000000000000000000000008152336004820152336024820152600760448201525f60648201525f60848201525f8160a48183895af18015612a8f57612a01575b508a516102ab80820182811067ffffffffffffffff8211176129d45782916201e9f6833903905ff080156129ca5773ffffffffffffffffffffffffffffffffffffffff6117fc8361339f565b5116908c51917fad8448930000000000000000000000000000000000000000000000000000000083528660048401526024830152630328b74060448301526020826064818c5afa918215612988575f92612996575b5073ffffffffffffffffffffffffffffffffffffffff806118718561339f565b5116911691813b15612992575f9160448f9284935194859384927f40c10f1900000000000000000000000000000000000000000000000000000000845288600485015260248401525af1801561298857612972575b50611954918e8d60209373ffffffffffffffffffffffffffffffffffffffff6119028351958b888801528787526118fd8588613346565b61339f565b51169151958694859384937f5cffe9de00000000000000000000000000000000000000000000000000000000855260048501526024840152630328b74060448401528b60648401526084830190613571565b0391885af1801561293b57612945575b5060a4818d8c51928380927fcb717f3a00000000000000000000000000000000000000000000000000000000825233600483015233602483015280604483015263132212406064830152806084830152885af1801561293b5761291e575b5060018211918c831561291257507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81019081116128e557908c949392915b8b51907f0eeee627000000000000000000000000000000000000000000000000000000008252336004830152866024830152336044830152866064830152608482015263054e084060a48201528560c48201528560e48201528561010482015281816101248189885af180156128db576128af575b5050813b156128015789517fa1af5b9a000000000000000000000000000000000000000000000000000000008152848160048183875af180156128a557908591612890575b505015612885578860ff60c460015b86845195869485937f491e79980000000000000000000000000000000000000000000000000000000085523360048601523360248601526729a2241af62c000060448601521660648401528160848401528160a48401525af1801561283d5790899161285c575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156126e75787517f76eadd36000000000000000000000000000000000000000000000000000000008152828160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561283d57908391612847575b50508751907f56ca623e0000000000000000000000000000000000000000000000000000000082528360048301528282602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa91821561283d578392612821575b508851917f56ca623e0000000000000000000000000000000000000000000000000000000083528560048401528383602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9283156127f7578493612805575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156128015783611cdb918b805193849283927f3d5923ee0000000000000000000000000000000000000000000000000000000084526004840152600760448401527f504c414e4e45520000000000000000000000000000000000000000000000000060648401528660248401526084830190613571565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156127f7579084916127e2575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156127de57611d929183918a5193849283927f3d5923ee0000000000000000000000000000000000000000000000000000000084528d6004850152600460448501527f494e464f00000000000000000000000000000000000000000000000000000000606485015260248401526084830190613571565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156126dd576127c9575b5073ffffffffffffffffffffffffffffffffffffffff600c5460181c168751907f56ca623e00000000000000000000000000000000000000000000000000000000825260048201528181602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9081156126dd5782916127af575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156126e75781611ee1918951809381927f3d5923ee0000000000000000000000000000000000000000000000000000000083528c6004840152611eb160448401604090600481527f555358440000000000000000000000000000000000000000000000000000000060208201520190565b907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc848303016024850152613571565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156126dd5761279a575b5073ffffffffffffffffffffffffffffffffffffffff600d54168751907f56ca623e00000000000000000000000000000000000000000000000000000000825260048201528181602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9081156126dd578291612780575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156126e75781611ffd918951809381927f3d5923ee0000000000000000000000000000000000000000000000000000000083528c6004840152611eb160448401604090600481527f465553440000000000000000000000000000000000000000000000000000000060208201520190565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156126dd5761276b575b5073ffffffffffffffffffffffffffffffffffffffff600e54168751907f56ca623e00000000000000000000000000000000000000000000000000000000825260048201528181602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9081156126dd578291612751575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156126e75781612119918951809381927f3d5923ee0000000000000000000000000000000000000000000000000000000083528c6004840152611eb160448401604090600481527f444956450000000000000000000000000000000000000000000000000000000060208201520190565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156126dd5761273c575b5073ffffffffffffffffffffffffffffffffffffffff600f54168751907f56ca623e00000000000000000000000000000000000000000000000000000000825260048201528181602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9081156126dd578291612722575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156126e75781612235918951809381927f3d5923ee0000000000000000000000000000000000000000000000000000000083528c6004840152611eb160448401604090600481527f425554430000000000000000000000000000000000000000000000000000000060208201520190565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156126dd5761270d575b5073ffffffffffffffffffffffffffffffffffffffff601054168751907f56ca623e00000000000000000000000000000000000000000000000000000000825260048201528181602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9081156126dd5782916126eb575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156126e75781612351918951809381927f3d5923ee0000000000000000000000000000000000000000000000000000000083528c6004840152611eb160448401604090600581527f575445544800000000000000000000000000000000000000000000000000000060208201520190565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156126dd576126bc575b50506126b99661244c6124c2946124116124fd9897956123d66124879661239b613912565b8c516123a78e82613346565b600e81527f20205061727479506c616e6e65720000000000000000000000000000000000006020820152613963565b8a516123e28c82613346565b600e81527f20202020205061727479496e666f0000000000000000000000000000000000006020820152613963565b885161241d8a82613346565b600e81527f20202020202053776170496d706c0000000000000000000000000000000000006020820152613963565b86516124588882613346565b600e81527f2020202020204d696e74496d706c0000000000000000000000000000000000006020820152613963565b84516124938682613346565b600e81527f2020202020204465706c6f7965720000000000000000000000000000000000006020820152613963565b82516124ce8482613346565b600e81527f4250616972204465706c6f7965720000000000000000000000000000000000006020820152613963565b612505613912565b61255f73ffffffffffffffffffffffffffffffffffffffff600c5460181c1682516125308482613346565b600e81527f20202020202020202020555358440000000000000000000000000000000000006020820152613963565b6125b673ffffffffffffffffffffffffffffffffffffffff600d541682516125878482613346565b600e81527f20202020202020202020465553440000000000000000000000000000000000006020820152613963565b61260d73ffffffffffffffffffffffffffffffffffffffff600e541682516125de8482613346565b600e81527f20202020202020202020444956450000000000000000000000000000000000006020820152613963565b61266473ffffffffffffffffffffffffffffffffffffffff600f541682516126358482613346565b600e81527f20202020202020202020425554430000000000000000000000000000000000006020820152613963565b73ffffffffffffffffffffffffffffffffffffffff601054169061268a81519182613346565b600e81527f20202020202020202057544554480000000000000000000000000000000000006020820152613963565b80f35b816126ca9197969497613346565b6126d957875f95929495612376565b8780fd5b88513d84823e3d90fd5b5080fd5b61270791503d8084833e6126ff8183613346565b8101906134e0565b5f6122c9565b8161271791613346565b6126d957875f61225a565b61273691503d8084833e6126ff8183613346565b5f6121ad565b8161274691613346565b6126d957875f61213e565b61276591503d8084833e6126ff8183613346565b5f612091565b8161277591613346565b6126d957875f612022565b61279491503d8084833e6126ff8183613346565b5f611f75565b816127a491613346565b6126d957875f611f06565b6127c391503d8084833e6126ff8183613346565b5f611e29565b816127d391613346565b6126d957875f611db7565b8280fd5b816127ec91613346565b6127de57825f611d03565b8a513d86823e3d90fd5b8380fd5b61281a9193503d8086833e6126ff8183613346565b915f611c4d565b6128369192503d8085833e6126ff8183613346565b905f611bf6565b89513d85823e3d90fd5b8161285191613346565b6126e757815f611b9e565b813d831161287e575b61286f8183613346565b810103126126e757875f611b31565b503d612865565b8860ff60c485611aca565b8161289a91613346565b61280157835f611abb565b8b513d87823e3d90fd5b816128ce92903d106128d4575b6128c68183613346565b8101906138f7565b50611a76565b503d6128bc565b8c513d88823e3d90fd5b60248d7f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b80959493929150611a01565b61293490823d84116128d4576128c68183613346565b50506119c2565b8b513d8f823e3d90fd5b6129669060203d60201161296b575b61295e8183613346565b8101906135b4565b611964565b503d612954565b8c929e505f61298091613346565b5f9d916118c6565b8d513d5f823e3d90fd5b5f80fd5b9091506020813d6020116129c2575b816129b260209383613346565b810103126129925751905f611851565b3d91506129a5565b8b513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b3d805f833e612a108183613346565b8101906020818303126129925780519067ffffffffffffffff821161299257019080601f830112156129925781518d92612a55612a4c83613387565b94519485613346565b81845260208085019260051b82010192831161299257602001905b828210612a7f575050506117b0565b8151815260209182019101612a70565b8c513d5f823e3d90fd5b506020813d602011612ac5575b81612ab360209383613346565b81010312612992576117589051611718565b3d9150612aa6565b506020813d602011612af9575b81612ae760209383613346565b81010312612992576116dd905161169d565b3d9150612ada565b909a506020813d602011612b2d575b81612b1d60209383613346565b810103126129925751995f611604565b3d9150612b10565b6040513d5f823e3d90fd5b9098503d805f833e612b528183613346565b8101906020818303126129925780519067ffffffffffffffff821161299257019080601f8301121561299257815190612b8a82613387565b92612b986040519485613346565b82845260208085019360051b82010191821161299257602001915b818310612bc457505050975f6115b9565b825173ffffffffffffffffffffffffffffffffffffffff8116810361299257815260209283019201612bb3565b612c129060403d604011612c18575b612c0a8183613346565b810190613430565b50611525565b503d612c00565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b612c649060403d604011612c1857612c0a8183613346565b506112b9565b612c8491935060403d604011612c1857612c0a8183613346565b50915f611019565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4d53523a206b617070613c3d300000000000000000000000000000000000006044820152fd5b506f7fffffffffffffffffffffffffffffff811315610ea3565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4c4d53523a20793c3d30000000000000000000000000000000000000000000006044820152fd5b8002908160ff1c9182607f011c918302019160011d9190610dfb565b9060010190610dc4565b92810192811d610dbd565b6004938401931d610db3565b6008938401931d610da9565b6010938401931d610d9e565b6020938401931d610d92565b506040915080821d610d81565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4c4d53523a20626164204520726174696f0000000000000000000000000000006044820152fd5b50680100000000000000008212610d62565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4c4d53523a2062616420736c697070616765206f72206e0000000000000000006044820152fd5b506f7fffffffffffffffffffffffffffffff811315610d32565b506f7fffffffffffffffffffffffffffffff811315610cf5565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4c4d53523a20663e3d31000000000000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4c4d53523a20663d3000000000000000000000000000000000000000000000006044820152fd5b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526012600452fd5b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b6040513d87823e3d90fd5b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b6040513d86823e3d90fd5b6024877f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b6040513d85823e3d90fd5b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b6040513d84823e3d90fd5b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b50604051903d90823e3d90fd5b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8161313991613346565b61009857805f6108a0565b50fd5b8161315191613346565b61009857805f61082a565b8161316691613346565b61009857805f6107bb565b8161317b91613346565b61009857805f610745565b8161319091613346565b61009857805f6106d4565b816131a591613346565b61009857805f610660565b816131ba91613346565b61009857805f610598565b816131cf91613346565b61009857805f6104d0565b816131e491613346565b61009857805f610408565b816131f991613346565b61009857805f610340565b61321091505f90613346565b5f5f61013d565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e6f74205365706f6c69610000000000000000000000000000000000000000006044820152fd5b34612992575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261299257602060405173fff9976782d46cc05630d1f6ebab18b2324d6b148152f35b34612992575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112612992576020604051730e280f5eda58872d7cdaa8ac0a57a55fd6133aed8152f35b34612992575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126129925780620186a060209252f35b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176129d457604052565b67ffffffffffffffff81116129d45760051b60200190565b8051156133ac5760200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8051600110156133ac5760400190565b8051600210156133ac5760600190565b8115613403570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b919082604091031261299257815173ffffffffffffffffffffffffffffffffffffffff811681036129925760209092015190565b90602080835192838152019201905f5b8181106134815750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101613474565b90602080835192838152019201905f5b8181106134ca5750505090565b82518452602093840193909201916001016134bd565b6020818303126129925780519067ffffffffffffffff8211612992570181601f820112156129925780519067ffffffffffffffff82116129d45760405192613550601f84017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200185613346565b8284526020838301011161299257815f9260208093018386015e8301015290565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b90816020910312612992575180151581036129925790565b5f90602073ffffffffffffffffffffffffffffffffffffffff604481600c5460181c169360405195869384927f095ea7b300000000000000000000000000000000000000000000000000000000845216958660048401527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248401525af1918215612b35575f926138da575b50602073ffffffffffffffffffffffffffffffffffffffff600d54166044604051809581937f095ea7b30000000000000000000000000000000000000000000000000000000083528660048401527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248401525af1918215612b35575f926138bd575b50602073ffffffffffffffffffffffffffffffffffffffff600e54166044604051809581937f095ea7b30000000000000000000000000000000000000000000000000000000083528660048401527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248401525af1918215612b35575f926138a0575b50602073ffffffffffffffffffffffffffffffffffffffff600f54166044604051809581937f095ea7b30000000000000000000000000000000000000000000000000000000083528660048401527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248401525af1908115612b35575f92602092613885575b50604473ffffffffffffffffffffffffffffffffffffffff601054169160405194859384927f095ea7b300000000000000000000000000000000000000000000000000000000845260048401527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248401525af18015612b355761386a5750565b6138829060203d60201161296b5761295e8183613346565b50565b61389b90833d851161296b5761295e8183613346565b6137e8565b6138b89060203d60201161296b5761295e8183613346565b613761565b6138d59060203d60201161296b5761295e8183613346565b6136dd565b6138f29060203d60201161296b5761295e8183613346565b613659565b90816060910312612992578051916040602083015192015190565b5f806040517f51973ec90000000000000000000000000000000000000000000000000000000060208201526004815261394c602482613346565b6020815191016a636f6e736f6c652e6c6f675afa50565b6139c061394c5f9392849373ffffffffffffffffffffffffffffffffffffffff6040519485937f319af333000000000000000000000000000000000000000000000000000000006020860152604060248601526064850190613571565b91166044830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282613346565b90600f0b9081156129925760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613a3a575b1561299257600f0b90565b506f7fffffffffffffffffffffffffffffff811315613a2f565b613a9c61394c5f939284936040519384927fb60e72cc000000000000000000000000000000000000000000000000000000006020850152604060248501526064840190613571565b906044830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810183528261334656fe60a03461009c57601f6138d638819003918201601f19168301916001600160401b038311848410176100a05780849260209460405283398101031261009c57516001600160a01b038116810361009c5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005560805260405161382190816100b58239608051818181610cfc015281816113670152611dfa0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f5f3560e01c80632a54db01146116555780638a3d858d146109d8578063bf05a0a6146107db5763e49cd47514610046575f80fd5b346107d85760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107d85760043573ffffffffffffffffffffffffffffffffffffffff811681036107d65761009d61192b565b60443567ffffffffffffffff606435116107d2573660236064350112156107d25767ffffffffffffffff60643560040135116107d257366024606435600401356064350101116107d25760a435916100f3611caa565b61010260ff6008541615611aab565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff86165afa9081156107c7578691610795575b5082116107375773ffffffffffffffffffffffffffffffffffffffff81168552600e602052604085205480156106d957807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101116106ac576101c0608435846129da565b50908694801515806106a3575b61060d575b5061020a8473ffffffffffffffffffffffffffffffffffffffff881673ffffffffffffffffffffffffffffffffffffffff8616611d21565b6040517f23e30c8b00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015284604482015282606482015260a060848201526064356004013560a48201526064356004013560246064350160c48301378760c4606435600401358301015260208160c4817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60643560040135011681010301818b73ffffffffffffffffffffffffffffffffffffffff8c165af1801561054e5788906105b7575b7f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd9915003610559576103576103248386611b10565b73ffffffffffffffffffffffffffffffffffffffff851673ffffffffffffffffffffffffffffffffffffffff8916611de2565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff88165afa90811561054e57869798969596916104ef575b507f249e0bf62ff982342c6a63926041694a221796af4b9ebacefc45823da42348139473ffffffffffffffffffffffffffffffffffffffff94936104938461045d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6104566104989761043e61042f846104bd9c016119e4565b90549060031b1c821015611b67565b6104498386016119e4565b90549060031b1c90611a71565b9201611a41565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b611a71565b9583604051948594169816963396846040919493926060820195825260208201520152565b0390a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055602060405160018152f35b94505091906020843d602011610546575b8161050d6020938361195e565b8101031261054257925185939192907f249e0bf62ff982342c6a63926041694a221796af4b9ebacefc45823da42348136103b5565b5f80fd5b3d9150610500565b6040513d8a823e3d90fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f666c6173683a2063616c6c6261636b00000000000000000000000000000000006044820152fd5b506020813d602011610605575b816105d16020938361195e565b81010312610601577f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd990516102ef565b8780fd5b3d91506105c4565b620f424091955061061e9083611b1d565b04938461062c575b5f6101d2565b61069e61065a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83016119e4565b61066a8883548360031b1c611b10565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b610626565b508215156101cd565b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f666c6173683a20746f6b656e206e6f7420696e20706f6f6c00000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f666c6173683a20616d6f756e74203e2062616c616e63650000000000000000006044820152fd5b90506020813d6020116107bf575b816107b06020938361195e565b8101031261054257515f61015b565b3d91506107a3565b6040513d88823e3d90fd5b8380fd5b505b80fd5b50346107d85760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107d8576004356024356044359182600f0b83036107d2576064359067ffffffffffffffff82116109d457366023830112156109d45781600401359161084c836119cc565b9261085a604051948561195e565b8084526024602085019160051b8301019136831161060157602401905b8282106109c45750505061088961194e565b9360a43567ffffffffffffffff81116109c057366023820112156109c05780600401356108b5816119cc565b916108c3604051938461195e565b8183526024602084019260051b820101903682116109bc57602401915b81831061099e575050509161090361091392868361090c98979660c4359a611f9d565b95909184611bcc565b5190612757565b9461091f861515611be0565b9480948061096f575b50509161093b6109429261096b94611bcc565b5190612b1a565b9261094e841515611c45565b604051938493846040919493926060820195825260208201520152565b0390f35b81965061096b949295509261099461098d6109429561093b946129a1565b8098611b10565b9592945092610928565b823580600f0b81036109b8578152602092830192016108e0565b8a80fd5b8980fd5b8680fd5b8135815260209182019101610877565b8480fd5b506101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261054257610a0c611908565b90610a1561192b565b610a1d61194e565b9160c43560a43581151582036105425760e43590610a4060ff6008541615611aab565b610a48611caa565b600b5480604435109081611649575b50156115eb575f86600f0b131561158d578015908115611582575b501561152457602495602073ffffffffffffffffffffffffffffffffffffffff610a9d604435611a29565b90549060031b1c16604051988980927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa958615611294575f966114ef575b60249750602073ffffffffffffffffffffffffffffffffffffffff610b0b606435611a29565b90549060031b1c16604051998a80927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa978815611294575f986114bb575b50600954604051600a80548083525f918252602083019493600f0b91907fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a85b8160018401106114905795610bbf928592610bcc98549181811061147c575b1061146b575b50038361195e565b6064359160443591611f9d565b610bea610bdd604499939935611a59565b90549060031b1c89612757565b97610bf6891515611be0565b5f9789958061144a575b50610c1c610c0f606435611a59565b90549060031b1c84612b1a565b9a610c288c1515611c45565b73ffffffffffffffffffffffffffffffffffffffff610c48604435611a29565b90549060031b1c1696610c5c818989611de2565b604051957f70a082310000000000000000000000000000000000000000000000000000000087523060048801526020876024818c5afa968715611294575f97611412575b5090610cab91611b10565b850361138e5773ffffffffffffffffffffffffffffffffffffffff610cd1606435611a29565b90549060031b1c16978061134f575b1561129f5773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b15610542575f809160248f60405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af1908115611294578d9161127f575b508980808093865af13d1561127a573d67ffffffffffffffff811161124d5760405190610dbe60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116018361195e565b81528a60203d92013e5b156111ef575b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526020816024818c5afa9081156111e4578d908b926111ae575b50610e1e9192611a71565b810361112a5788948a61010435151580611121575b6110c8575b50610e8f91610e6b610e60610e8493610e5561042f6044356119e4565b6104496044356119e4565b61045d604435611a41565b610e7961042f6064356119e4565b6104496064356119e4565b61045d606435611a41565b8782600f0b131561106a578783600f0b131561100c577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c93610f5e610f5360a095610f39610f0673ffffffffffffffffffffffffffffffffffffffff97610ef7604435611f5d565b90549060031b1c600f0b6129ff565b610f11604435611f5d565b9091906fffffffffffffffffffffffffffffffff83549160031b928116831b921b1916179055565b610f44606435611f5d565b90549060031b1c600f0b612a57565b610f11606435611f5d565b610f68818b611a71565b83604051971687528b60208801528c6040880152606087015260808601521692a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015610fdb575b50505061096b90604051938493846040919493926060820195825260208201520152565b8280809381938290611003575b3390f115610ff7578080610fb7565b604051903d90823e3d90fd5b506108fc610fe8565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a20616d6f756e744f7574203c3d20300000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4d53523a20616d6f756e74496e203c3d2030000000000000000000000000006044820152fd5b610e8491965091610e6b610e60620f42406110ea610e8f966101043590611b1d565b0498896110fe575b9350505091508a610e38565b61111c61110c6044356119e4565b61066a8d83548360031b1c611b10565b6110f2565b50801515610e33565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f73776170546f4c696d69743a206e6f6e2d7374616e6461726420746f6b656e4f60448201527f75740000000000000000000000000000000000000000000000000000000000006064820152fd5b9150506020813d6020116111dc575b816111ca6020938361195e565b8101031261054257518c610e1e610e13565b3d91506111bd565b6040513d8c823e3d90fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b60248b7f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b610dc8565b61128c919a505f9061195e565b5f985f610d69565b6040513d5f823e3d90fd5b6040517fa9059cbb000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff83166004528c60245260205f604481808d5af19060015f511482161561132e575b604052610dce57877f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b90600181151661134657893b15153d151616906112fb565b503d5f823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168814610ce0565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f73776170546f4c696d69743a206e6f6e2d7374616e6461726420746f6b656e4960448201527f6e000000000000000000000000000000000000000000000000000000000000006064820152fd5b919096506020823d602011611442575b8161142f6020938361195e565b8101031261054257905195610cab610ca0565b3d9150611422565b909550611459919850896129a1565b96611464888a611b10565b945f610c00565b60801d600f0b81526020015f610bb7565b92602060019184600f0b8152019301610bb1565b8054600f81810b895260809190911d900b602088015260409096019560029290920191600101610b92565b9097506020813d6020116114e7575b816114d76020938361195e565b810103126105425751965f610b53565b3d91506114ca565b95506020873d60201161151c575b8161150a6020938361195e565b81010312610542576024965195610ae5565b3d91506114fd565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f73776170546f4c696d69743a20646561646c696e6520657863656564656400006044820152fd5b90504211155f610a72565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f73776170546f4c696d69743a206c696d6974203c3d20300000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f73776170546f4c696d69743a20696478000000000000000000000000000000006044820152fd5b9050606435105f610a57565b346105425760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105425761168c611908565b611694611caa565b73ffffffffffffffffffffffffffffffffffffffff8116156118aa57600b545f5b818110611706577fd508feb4afc81230b8e5dcca865a405a72db1f928a5064f893ab22ab56ec25215f80a160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055005b61170f816119e4565b90549060031b1c9081156118a1576024602073ffffffffffffffffffffffffffffffffffffffff61173f84611a29565b90549060031b1c16604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa908115611294575f91611870575b5082811061181257826117e06117d760019561180c946117a6876119e4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82549160031b1b19169055611a71565b61045d85611a41565b8573ffffffffffffffffffffffffffffffffffffffff6117ff85611a29565b90549060031b1c16611d21565b016116b5565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f636f6c6c6563743a20666565203e2062616c00000000000000000000000000006044820152fd5b90506020813d8211611899575b8161188a6020938361195e565b81010312610542575185611787565b3d915061187d565b6001915061180c565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f636f6c6c6563743a207a65726f206164647200000000000000000000000000006044820152fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361054257565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361054257565b6084359081600f0b820361054257565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761199f57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b67ffffffffffffffff811161199f5760051b60200190565b600c548110156119fc57600c5f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600b548110156119fc57600b5f5260205f2001905f90565b600f548110156119fc57600f5f5260205f2001905f90565b600d548110156119fc57600d5f5260205f2001905f90565b91908203918211611a7e57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b15611ab257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b91908201809211611a7e57565b81810292918115918404141715611a7e57565b8115611b3a570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b15611b6e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f62616c616e6365203c2070726f746f636f6c206f7765640000000000000000006044820152fd5b80518210156119fc5760209160051b010190565b15611be757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f73776170546f4c696d69743a20696e707574207a65726f0000000000000000006044820152fd5b15611c4c57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f73776170546f4c696d69743a206f7574707574207a65726f00000000000000006044820152fd5b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005414611cf95760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b9173ffffffffffffffffffffffffffffffffffffffff604051927fa9059cbb000000000000000000000000000000000000000000000000000000005f521660045260245260205f60448180865af19060015f5114821615611dca575b60405215611d885750565b73ffffffffffffffffffffffffffffffffffffffff907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b90600181151661134657823b15153d15161690611d7d565b9073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169173ffffffffffffffffffffffffffffffffffffffff82169183831480611f53575b15611e9457505050803b15610542575f906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af1801561129457611e885750565b5f611e929161195e565b565b919390925073ffffffffffffffffffffffffffffffffffffffff604051937f23b872dd000000000000000000000000000000000000000000000000000000005f52166004523060245260445260205f60648180855af19060015f5114821615611f34575b50906040525f60605215611f095750565b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6001821516611f4a573b15153d1516165f611ef8565b823d5f823e3d90fd5b5084341015611e3c565b90600a548210156119fc57600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b93929491909483600f0b905f8213156126f9575f94855b8851871015611fdf57611fd7600191611fcd898c611bcc565b51600f0b906129ff565b960195611fb4565b90929496919395505f81600f0b131561269b57611ffb91612a94565b9081600f0b80156105425770010000000000000000000000000000000005947fffffffffffffffffffffffffffffffff8000000000000000000000000000000086121580612681575b15610542576120806120859161207b61206398600f0b9889928c611bcc565b51600f0b612071888d611bcc565b51600f0b90612a57565b612a94565b612b75565b9081600f0b948512156125fd578161209c91612ad4565b600f0b5f811315610542575f9080680100000000000000008212156125f0575b8064010000000060029212156125e4575b620100008112156125d8575b6101008112156125cc575b60108112156125c0575b60048112156125b5575b12156125ab575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f831361258f57506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d926121638484612a94565b937fffffffffffffffffffffffffffffffff8000000000000000000000000000000081600f0b146105425761219c905f03600f0b612b75565b600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612575575b15610542576121e690600f0b83612a94565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061255b575b1561054257600f0b5f811315610542575f90806801000000000000000082121561254e575b806401000000006002921215612542575b62010000811215612536575b61010081121561252a575b601081121561251e575b6004811215612513575b1215612509575b607f8290031b91907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160401b6780000000000000005b5f81136124e957506122f292506fb17217f7d1cf79abc9e3b39803f2f6af6122ec91600f0b0260801d85612a94565b98611bcc565b51600f0b9383958589600f0b1361230e575b5050505050509190565b85985068010000000000000000929496506120809061232f92949699612a94565b9101907fffffffffffffffffffffffffffffffff80000000000000000000000000000000821215806124cf575b156105425761236d91600f0b612a57565b905f600f83900b13612388575050505b5f8080808080612304565b612393929350612ad4565b600f0b5f811315610542575f9080680100000000000000008212156124c2575b8064010000000060029212156124b6575b620100008112156124aa575b61010081121561249e575b6010811215612492575b6004811215612487575b121561247d575b607f8290031b91907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160401b6780000000000000005b5f811361245d57506124589250600f0b6fb17217f7d1cf79abc9e3b39803f2f6af0260801d90612a94565b61237d565b91928002908160ff1c9182607f011c918302019160011d9291909261242d565b90600101906123f6565b92810192811d6123ef565b6004938401931d6123e5565b6008938401931d6123db565b6010938401931d6123d0565b6020938401931d6123c4565b506040915080821d6123b3565b506f7fffffffffffffffffffffffffffffff82131561235c565b91928002908160ff1c9182607f011c918302019160011d929190926122bd565b9060010190612286565b92810192811d61227f565b6004938401931d612275565b6008938401931d61226b565b6010938401931d612260565b6020938401931d612254565b506040915080821d612243565b506f7fffffffffffffffffffffffffffffff81131561221e565b506f7fffffffffffffffffffffffffffffff8113156121d4565b8002908160ff1c9182607f011c918302019160011d9190612136565b90600101906120ff565b92810192811d6120f8565b6004938401931d6120ee565b6008938401931d6120e4565b6010938401931d6120d9565b6020938401931d6120cd565b506040915080821d6120bc565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4c4d53523a206c696d69745072696365203c3d2063757272656e74207072696360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152fd5b506f7fffffffffffffffffffffffffffffff861315612044565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4c4d53523a206c696d69745072696365203c3d203000000000000000000000006044820152fd5b6127618282612b1a565b9180156105425777ffffffffffffffffffffffffffffffffffffffffffffffff83116127f257612794908360401b611b30565b6fffffffffffffffffffffffffffffffff8111610542576fffffffffffffffffffffffffffffffff16906f7fffffffffffffffffffffffffffffff821161054257600f0b90600f0b126127e45790565b60018101809111611a7e5790565b60c083811c8091640100000000821015612994575b60028262010000612894941015612988575b61010081101561297c575b6010811015612970575b6004811015612965575b101561295d575b8560017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b611b30565b916fffffffffffffffffffffffffffffffff8311610542578060801c83026fffffffffffffffffffffffffffffffff82168402838760401b90828210612933575b5003928160801b9182851061290a575b60801c036128ff576128f79203611b30565b905b01612794565b5050506001906128f9565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906128e5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f6128d5565b60010161283f565b91810191811c612838565b6004928301921c61282e565b6008928301921c612824565b6010928301921c612819565b505060e084811c90612807565b9080156129d4576129b191611b1d565b620f4240810190818111611a7e57620f423f01908111611a7e57620f4240900490565b50505f90565b919080156129f9576129ef6129f691846129a1565b8093611a71565b90565b505f9190565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612a3d575b1561054257600f0b90565b506f7fffffffffffffffffffffffffffffff811315612a32565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612a3d571561054257600f0b90565b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612a3d571561054257600f0b90565b90600f0b9081156105425760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612a3d571561054257600f0b90565b81156129d457600f0b5f8112610542576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116105425760401b81198111610542570190565b600f0b68400000000000000000811215610542577fffffffffffffffffffffffffffffffffffffffffffffffc000000000000000008112612bd257700171547652b82fe1777d0ffda0d23a7d126129f6910260801d600f0b612bd7565b505f90565b80600f0b68400000000000000000811215610542577fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000081126129d4576f80000000000000000000000000000000915f6780000000000000008216600f0b136137d3575b5f6740000000000000008216600f0b136137b6575b5f6720000000000000008216600f0b13613799575b5f6710000000000000008216600f0b1361377c575b5f6708000000000000008216600f0b1361375f575b5f6704000000000000008216600f0b13613742575b5f6702000000000000008216600f0b13613725575b5f6701000000000000008216600f0b13613708575b5f66800000000000008216600f0b136136eb575b5f66400000000000008216600f0b136136ce575b5f66200000000000008216600f0b136136b1575b5f66100000000000008216600f0b13613694575b5f66080000000000008216600f0b13613677575b5f66040000000000008216600f0b1361365a575b5f66020000000000008216600f0b1361363d575b5f66010000000000008216600f0b13613620575b5f658000000000008216600f0b13613603575b5f654000000000008216600f0b136135e6575b5f652000000000008216600f0b136135c9575b5f651000000000008216600f0b136135ac575b5f650800000000008216600f0b1361358f575b5f650400000000008216600f0b13613572575b5f650200000000008216600f0b13613555575b5f650100000000008216600f0b13613538575b5f6480000000008216600f0b1361351b575b5f6440000000008216600f0b136134fe575b5f6420000000008216600f0b136134e1575b5f6410000000008216600f0b136134c4575b5f6408000000008216600f0b136134a7575b5f6404000000008216600f0b1361348a575b5f6402000000008216600f0b1361346d575b5f6401000000008216600f0b13613450575b5f63800000008216600f0b13613433575b5f63400000008216600f0b13613416575b5f63200000008216600f0b136133f9575b5f63100000008216600f0b136133dc575b5f63080000008216600f0b136133bf575b5f63040000008216600f0b136133a2575b5f63020000008216600f0b13613385575b5f63010000008216600f0b13613368575b5f628000008216600f0b1361334b575b5f624000008216600f0b1361332e575b5f622000008216600f0b13613311575b5f621000008216600f0b136132f4575b5f620800008216600f0b136132d7575b5f620400008216600f0b136132ba575b5f620200008216600f0b1361329d575b5f620100008216600f0b13613280575b5f6180008216600f0b13613263575b5f6140008216600f0b13613246575b5f6120008216600f0b13613229575b5f6110008216600f0b1361320c575b5f6108008216600f0b136131ef575b5f6104008216600f0b136131d2575b5f6102008216600f0b136131b5575b5f6101008216600f0b13613198575b5f60808216600f0b1361317b575b5f60408216600f0b1361315e575b5f60208216600f0b13613141575b5f60108216600f0b13613124575b5f60088216600f0b13613107575b5f60048216600f0b136130ea575b5f60028216600f0b136130cc575b60015f9116600f0b136130af575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161054257600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c90613085565b7001000000000000000162e42fefa39ef35890920260801c91613077565b9170010000000000000002c5c85fdf473de6b20260801c91613069565b91700100000000000000058b90bfbe8e7bcd6d0260801c9161305b565b917001000000000000000b17217f7d1cf79afa0260801c9161304d565b91700100000000000000162e42fefa39ef366f0260801c9161303f565b917001000000000000002c5c85fdf473de6eca0260801c91613031565b9170010000000000000058b90bfbe8e7bce5440260801c91613023565b91700100000000000000b17217f7d1cf79e9490260801c91613015565b9170010000000000000162e42fefa39ef44d910260801c91613006565b91700100000000000002c5c85fdf473dea871f0260801c91612ff7565b917001000000000000058b90bfbe8e7bdcbe2e0260801c91612fe8565b9170010000000000000b17217f7d1cf7d83c1a0260801c91612fd9565b917001000000000000162e42fefa39f02b772c0260801c91612fca565b9170010000000000002c5c85fdf473e242ea380260801c91612fbb565b91700100000000000058b90bfbe8e7cc35c3f00260801c91612fac565b917001000000000000b17217f7d1cfb72b45e10260801c91612f9d565b91700100000000000162e42fefa39fe95583c20260801c91612f8d565b917001000000000002c5c85fdf4741bea6e77e0260801c91612f7d565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c91612f6d565b91700100000000000b17217f7d1d351a389d400260801c91612f5d565b9170010000000000162e42fefa3ae53369388c0260801c91612f4d565b91700100000000002c5c85fdf477b662b269450260801c91612f3d565b917001000000000058b90bfbe8f71cb4e4b33d0260801c91612f2d565b9170010000000000b17217f7d20cf927c8e94c0260801c91612f1d565b917001000000000162e42fefa494f1478fde050260801c91612f0c565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c91612efb565b91700100000000058b90bfbe9ddbac5e109cce0260801c91612eea565b917001000000000b17217f7d5a7716bba4a9ae0260801c91612ed9565b91700100000000162e42fefb2fed257559bdaa0260801c91612ec8565b917001000000002c5c85fdf84bd62ae30a74cc0260801c91612eb7565b9170010000000058b90bfbf8479bd5a81b51ad0260801c91612ea6565b91700100000000b17217f80f4ef5aadda455540260801c91612e95565b9170010000000162e42ff0999ce3541b9fffcf0260801c91612e83565b91700100000002c5c85fe31f35a6a30da1be500260801c91612e71565b917001000000058b90bfcdee5acd3c1cedc8230260801c91612e5f565b9170010000000b17217fba9c739aa5819f44f90260801c91612e4d565b917001000000162e42fff037df38aa2b219f060260801c91612e3b565b9170010000002c5c8601cc6b9e94213c72737a0260801c91612e29565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91612e17565b917001000000b1721835514b86e6d96efd1bfe0260801c91612e05565b91700100000162e430e5a18f6119e3c02282a50260801c91612df2565b917001000002c5c863b73f016468f6bac5ca2b0260801c91612ddf565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91612dcc565b91700100000b1721bcfc99d9f890ea069117630260801c91612db9565b9170010000162e43f4f831060e02d839a9d16d0260801c91612da6565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c91612d93565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c91612d80565b9170010000b17255775c040618bf4a4ade83fc0260801c91612d6d565b917001000162e525ee054754457d59952920260260801c91612d59565b9170010002c5cc37da9491d0985c348c68e7b30260801c91612d45565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91612d31565b917001000b175effdc76ba38e31671ca9397250260801c91612d1d565b91700100162f3904051fa128bca9c55c31e5df0260801c91612d09565b917001002c605e2e8cec506d21bfc89a23a00f0260801c91612cf5565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c91612ce1565b91700100b1afa5abcbed6129ab13ec11dc95430260801c91612ccd565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c91612cb8565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c91612ca3565b917001059b0d31585743ae7c548eb68ca417fd0260801c91612c8e565b9170010b5586cf9890f6298b92b71842a983630260801c91612c79565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c91612c64565b917001306fe0a31b7152de8d5a46305c85edec0260801c91612c4f565b6fb504f333f9de6484597d89b3754abe9f9250612c3a56fea2646970667358221220e1cf16dbf2fb3dde0a41d9bda8bbba591e29d69326ff632243d789c4d486fbe164736f6c634300081e003360a03461009c57601f61553838819003918201601f19168301916001600160401b038311848410176100a05780849260209460405283398101031261009c57516001600160a01b038116810361009c5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005560805260405161548390816100b58239608051818181612cd6015281816131e7015261343f0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c8063228fa850146124535780633dd3c80514611d5c5780636863f5bc146119a55780638d01fa4414611483578063b3f1c93d14611009578063c5eabfb914610831578063cdc2468b14610803578063e9f317f0146102285763f16b7c261461007c575f80fd5b346102245761008a366125fe565b94919080949394518410156101c657821561016857851561010a576100dc846100d46100e3946100fd976100c360409b6100ea99613689565b9160208151600f0b910151906141fe565b939050612798565b5190612e7c565b9283612c31565b50826100f882809511612abd565b61295c565b9082519182526020820152f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6275726e53776170416d6f756e74733a20656d70747920737570706c790000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6275726e53776170416d6f756e74733a207a65726f206c7000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6275726e53776170416d6f756e74733a206964780000000000000000000000006044820152fd5b5f80fd5b3461022457610236366125fe565b925f9594959291925082518510156107a5578515610747576020820191825151156106e9578115159387856106b8575b61027b906102748984612798565b5190613689565b5f81600f0b13156106345761029e6102a691896102ad9551600f0b88519061397d565b989092612798565b51906141c9565b9081156105b0575f9361055b575b50826102c69161294f565b948515159081610550575b50156104cc5751935f92835b8651851015610308576103006001916102f6878a612798565b51600f0b90612f34565b9401936102dd565b90855f83600f0b131561046e5761032b6103309161032585612e62565b94612f34565b612e62565b91816103c3575050915b82156103655761036190604051938493846040919493926060820195825260208201520152565b0390f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761704d696e74416d6f756e74733a207a65726f204c50206d696e746564006044820152fd5b90918115610410578180821115610407576103dd9161295c565b915b82156103fd576103f7926103f2916127d9565b6127ec565b9161033a565b5050505f9161033a565b50505f916103df565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761704d696e74416d6f756e74733a206f6c645363616c6564207a65726f006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f737761704d696e74416d6f756e74733a207a65726f20746f74616c00000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f737761704d696e74416d6f756e74733a207472616e736665722065786365656460448201527f73206d61780000000000000000000000000000000000000000000000000000006064820152fd5b9050851115866102d1565b816105679294506127d9565b620f423f810180911161058357620f42409004916102c66102bb565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f737761704d696e74416d6f756e74733a20696e707574207a65726f206166746560448201527f7220696e7465726e616c20636f6e76657273696f6e00000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f737761704d696e74416d6f756e74733a20696e70757420746f6f20736d616c6c60448201527f20616674657220666565000000000000000000000000000000000000000000006064820152fd5b506106c383896127d9565b620f423f8101809111610583576106e2620f424061027b92048a61295c565b9050610266565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f737761704d696e74416d6f756e74733a20756e696e697420706f6f6c000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f737761704d696e74416d6f756e74733a20696e707574207a65726f00000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f737761704d696e74416d6f756e74733a206964780000000000000000000000006044820152fd5b346102245761036161081d61081736612523565b91612b22565b604051918291602083526020830190612577565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610224576108636125aa565b602435906044359081600f0b82036102245761088460ff600854161561288a565b61088c612bba565b600b5490600354158015610fff575b15610f7b576108a982612749565b936108b383612749565b925f5b818110610d54575050600a548551809103610b5e575b505f5b855181101561092457806108e560019288612798565b51600f0b61091c6108f5836129fd565b81939154906fffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b9055016108cf565b50835f610937610932612969565b612e37565b600f0b1315610b00577fffffffffffffffffffffffffffffffff0000000000000000000000000000000060095416906fffffffffffffffffffffffffffffffff16176009555f600954600f0b1315610aa25780610a7757507f6bc0553967b8bb727947c938555c0e061c3f96b629935c8f82a43b558dfb1c576109f3670de0b6b3a7640000935b84610a68575b73ffffffffffffffffffffffffffffffffffffffff6040519283925f8452606060208501526060840190612577565b9486604084015216930390a260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015610a38575b602083604051908152f35b5f80809381938290610a5f575b3390f115610a54578180610a2d565b6040513d5f823e3d90fd5b506108fc610a45565b610a72858561312a565b6109c4565b6109f37f6bc0553967b8bb727947c938555c0e061c3f96b629935c8f82a43b558dfb1c5791936109be565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4c4d53523a206b617070613e30000000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4c4d53523a20746f74616c207a65726f000000000000000000000000000000006044820152fd5b610b6790612749565b80519067ffffffffffffffff8211610d2757680100000000000000008211610d2757600a5482600a55808310610c90575b5060200190600a5f5260205f208160011c915f5b838110610c4257507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8116900380610be7575b5050506108cc565b925f935f5b818110610c0157505050015585808080610bdf565b9091946020610c386001928851600f0b908560041b6fffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b9601929101610bec565b5f5f5b60028110610c5a575083820155600101610bac565b86519096916001916020916fffffffffffffffffffffffffffffffff60078b901b81811b199092169216901b1792019601610c45565b600a5f5260205f206001808501811c8201920160011c019060108460041b1680610ccf575b505b818110610cc45750610b98565b5f8155600101610cb7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82549160200360031b1c16905589610cb5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6024602073ffffffffffffffffffffffffffffffffffffffff610d7684612907565b90549060031b1c16604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa908115610a54575f91610f4a575b508015610ec65780610e3b91610dd48489612798565b52610e1881610de285612937565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b610e2581610de2856128ef565b610e2e836128ef565b90549060031b1c90613689565b610e458289612798565b90600f0b90525f610e568289612798565b51600f0b1315610e68576001016108b6565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f696e697469616c4d696e743a207a65726f20696e7465726e616c2071000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f696e697469616c4d696e743a207a65726f20696e697469616c2062616c616e6360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152fd5b90506020813d8211610f73575b81610f646020938361246d565b81010312610224575188610dbe565b3d9150610f57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f696e697469616c4d696e743a20706f6f6c20616c726561647920696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152fd5b50600a541561089b565b60807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102245761103b6125aa565b6110436125cd565b906044359160643561105a60ff600854161561288a565b611062612bba565b8015908115611478575b501561141a57600b5460035480158015611410575b61138c57841561132e576110ac61109c61032b610932612969565b916110a5612a3d565b9087612b22565b915f5b8181106112d557506110c081612749565b905f5b81811061128857505061032b816109326110dc93613047565b818082111561127f576110ee9161295c565b905b8115611276576103f2611105926003546127d9565b935b8415611218576201869f81029081046201869f0361058357620186a0900484106111ba578161117f8573ffffffffffffffffffffffffffffffffffffffff93611171827f6bc0553967b8bb727947c938555c0e061c3f96b629935c8f82a43b558dfb1c579761312a565b604051948594169684612a85565b0390a260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015610a3857602083604051908152f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6d696e743a20696e73756666696369656e74204c50206d696e746564000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6d696e743a207a65726f204c50206d696e7465640000000000000000000000006044820152fd5b50505f93611107565b50505f906110f0565b806112bf6112b261129a600194612937565b90549060031b1c6112ab848a612798565b519061294f565b610e2581610de285612937565b6112c98286612798565b90600f0b9052016110c3565b806112e260019286612798565b516112ee575b016110af565b61132973ffffffffffffffffffffffffffffffffffffffff61130f83612907565b90549060031b1c166113218388612798565b519089612cbe565b6112e8565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6d696e743a207a65726f204c5020616d6f756e740000000000000000000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f6d696e743a2075736520696e697469616c4d696e7420666f7220706f6f6c206960448201527f6e697469616c697a6174696f6e000000000000000000000000000000000000006064820152fd5b50600a5415611081565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f6d696e743a20646561646c696e652065786365656465640000000000000000006044820152fd5b90504211158461106c565b34610224576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610224576114bb6125aa565b6114c36125cd565b9060443591606435916084359360a4359182151583036102245760e435936114e9612bba565b6114f860ff600854161561288a565b600b5496878710156119475783156118e95780159081156118de575b5015611880576003548015611822576115486115336115609286613689565b88600954600f0b611542612969565b906141fe565b9050611553886128ef565b90549060031b1c90612e7c565b9461157e61157060c43588612c31565b50876100f882809a11612abd565b965f9180151580611819575b6117a5575b506115b88573ffffffffffffffffffffffffffffffffffffffff861695863303611760576135b1565b6115ea73ffffffffffffffffffffffffffffffffffffffff6115d983612907565b90549060031b1c16968985896131c1565b6115f389612749565b905f5b8a81106117075750506001985f5b8181106116ca575b50509161168973ffffffffffffffffffffffffffffffffffffffff927f8c012c6148e8ecc34b864721470dcc1e938d162c498b7d28961a8a78238cfe139460409b5f146116bc575061165c61347c565b611666818a61295c565b8b51978852602088018b9052604088015260608701529116939081906080820190565b0390a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005582519182526020820152f35b6116c590613047565b61165c565b6116d48184612798565b51600f0b6116e457600101611604565b505f9950611689905073ffffffffffffffffffffffffffffffffffffffff61160c565b80611736611716600193612937565b90549060031b1c868d86851461174c575b5050610e2581610de285612937565b6117408286612798565b90600f0b9052016115f6565b6100f8906117599361295c565b868d611727565b865f52600260205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f526020526117a06117998360405f205461295c565b33836134dc565b6135b1565b620f42409192506117b690886127d9565b0490816117c4575b8961158f565b6118146117d08261291f565b6117e08583548360031b1c61294f565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b6117be565b5087151561158a565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6275726e537761703a20656d70747920737570706c79000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6275726e537761703a20646561646c696e6500000000000000000000000000006044820152fd5b905042111588611514565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6275726e537761703a207a65726f206c700000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6275726e537761703a20696478000000000000000000000000000000000000006044820152fd5b346102245760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610224576119dc6125aa565b6119e46125cd565b6084359160443591606435841515850361022457611a00612bba565b8015908115611d51575b5015611cf357600b54928015611c95576003548015611c3757611a3990611a32969596612a3d565b9083612823565b935f5b868110611bd8575050611a4e85612749565b5f5b868110611b9257506001955f5b818110611b55575b505091611adb73ffffffffffffffffffffffffffffffffffffffff927f3f84ed8aa11ed632de380466083280b4c5da668f12695b08636d7848eaf896b494610361985f14611b475750611ab661347c565b838616803303611b16575b50611acc81876135b1565b86604051948594169684612a85565b0390a260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055604051918291602083526020830190612577565b5f52600260205260405f208433165f52602052611b41611b3a8260405f205461295c565b33886134dc565b88611ac1565b611b5090613047565b611ab6565b611b5f8184612798565b51600f0b611b6f57600101611a5d565b505f9650611adb905073ffffffffffffffffffffffffffffffffffffffff611a65565b80611bbf6112b2611ba76001949a999a612937565b90549060031b1c611bb8848c612798565b519061295c565b611bc98285612798565b90600f0b905201959495611a50565b80611be7600192889998612798565b51611bf6575b01959495611a3c565b611c328373ffffffffffffffffffffffffffffffffffffffff611c1884612907565b90549060031b1c1687611c2b858d612798565b51916131c1565b611bed565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6275726e3a20656d70747920737570706c7900000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6275726e3a207a65726f206c70000000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f6275726e3a20646561646c696e652065786365656465640000000000000000006044820152fd5b905042111585611a0a565b60e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022457611d8e6125aa565b611d966125cd565b604435606435916084359360a4359360c43592611db860ff600854161561288a565b611dc0612bba565b600b5496878610156123f557821561239757801590811561238c575b501561232e57600a54156122d057611e02611df78784612c31565b9050610e2e876128ef565b945f86600f0b131561224c57611e2a611e429682600954600f0b611e24612969565b9061397d565b9690611e35836128ef565b90549060031b1c90612c53565b9687156121c857611e539088612c85565b95611e5e878961294f565b9384151590816121bd575b501561215f57611e9f8473ffffffffffffffffffffffffffffffffffffffff611e9185612907565b90549060031b1c1687612cbe565b5f9580151580612156575b612116575b50611ed8611ebd878661295c565b6117e0611ec985612937565b91909283548360031b1c61294f565b611ee3610932612969565b98611ef7611ef08b612e62565b928b612f34565b91611f0183612e62565b6003549091816120d4575050995b8a1561207657611f1e82612749565b925f5b838110612038575050505091611fbf73ffffffffffffffffffffffffffffffffffffffff611f838194611f747fcbf41a060d7827197acec8e5ef3abf36d633e77060f7aec03943608d1cd84ebe97613047565b611f7e8d8661312a565b612907565b90549060031b1c1696611f96818a61295c565b8b8560405196879616991697859094939260609260808301968352602083015260408201520152565b0390a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015612013575b505061036190604051938493846040919493926060820195825260208201520152565b5f8080938193829061202f575b3390f115610a54578380611ff0565b506108fc612020565b806120608461205b8561204c6001966129fd565b90549060031b1c600f0b612f71565b613001565b61206a8288612798565b90600f0b905201611f21565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f737761704d696e743a207a65726f204c50206d696e74656400000000000000006044820152fd5b9091818082111561210d576120e89161295c565b915b8215612103576120fd926103f2916127d9565b99611f0f565b5050505f99611f0f565b50505f916120ea565b620f424091965061212790886127d9565b049485612135575b89611eaf565b6121516121418361291f565b6117e08983548360031b1c61294f565b61212f565b50871515611eaa565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f737761704d696e743a207472616e736665722065786365656473206d617800006044820152fd5b90508411158a611e69565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f737761704d696e743a20696e707574207a65726f20616674657220696e74657260448201527f6e616c20636f6e76657273696f6e0000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f737761704d696e743a20696e70757420746f6f20736d616c6c2061667465722060448201527f66656500000000000000000000000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f737761704d696e743a20756e696e697420706f6f6c00000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f737761704d696e743a20646561646c696e6500000000000000000000000000006044820152fd5b905042111588611ddc565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f737761704d696e743a20696e707574207a65726f0000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f737761704d696e743a20696478000000000000000000000000000000000000006044820152fd5b346102245761036161081d61246736612523565b91612823565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610d2757604052565b67ffffffffffffffff8111610d275760051b60200190565b9080601f830112156102245781356124dd816124ae565b926124eb604051948561246d565b81845260208085019260051b82010192831161022457602001905b8282106125135750505090565b8135815260209182019101612506565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102245760043591602435916044359067ffffffffffffffff821161022457612574916004016124c6565b90565b90602080835192838152019201905f5b8181106125945750505090565b8251845260209384019390920191600101612587565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361022457565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361022457565b359081600f0b820361022457565b60c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102245760043591602435916044359160643567ffffffffffffffff81116102245760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc828503011261022457604051906040820182811067ffffffffffffffff821117610d275760405261269c816004016125f0565b825260248101359067ffffffffffffffff8211610224570183602382011215610224576004810135906126ce826124ae565b916126dc604051938461246d565b808352602060048185019260051b840101019186831161022457602401905b828210612731575050506020820152916084359067ffffffffffffffff82116102245761272a916004016124c6565b9060a43590565b6020809161273e846125f0565b8152019101906126fb565b90612753826124ae565b612760604051918261246d565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061278e82946124ae565b0190602036910137565b80518210156127ac5760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8181029291811591840414171561058357565b81156127f6570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b9082519161283083612749565b9382158015612882575b61287b575f5b84811061284f57505050505090565b8061286a856103f261286360019587612798565b51876127d9565b6128748289612798565b5201612840565b5050505090565b50831561283a565b1561289157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b600d548110156127ac57600d5f5260205f2001905f90565b600b548110156127ac57600b5f5260205f2001905f90565b600c548110156127ac57600c5f5260205f2001905f90565b600f548110156127ac57600f5f5260205f2001905f90565b9190820180921161058357565b9190820391821161058357565b60405190600a548083528260208101600a5f5260205f20925f905b8060018301106129d1576129aa9454918181106129bd575b106129ac575b50038361246d565b565b60801d600f0b81526020015f6129a2565b92602060019184600f0b815201930161299c565b9160029193506040600191865480600f0b825260801d600f0b6020820152019401920185929391612984565b90600a548210156127ac57600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b60405190600f548083528260208101600f5f5260205f20925f5b818110612a6c5750506129aa9250038361246d565b8454835260019485019487945060209093019201612a57565b939291612ab89073ffffffffffffffffffffffffffffffffffffffff604093168652606060208701526060860190612577565b930152565b15612ac457565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6275726e53776170416d6f756e74733a206f7574707574207a65726f000000006044820152fd5b825190612b2e82612749565b9383158015612bb2575b61287b575f5b838110612b4d57505050505090565b612b6a85612b65612b5e8486612798565b51866127d9565b61294f565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820191821161058357612ba1866001936127ec565b612bab8289612798565b5201612b3e565b508215612b38565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005414612c095760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b91908015612c4d57612c466125749184612c85565b809361295c565b505f9190565b612c67612c608383612e7c565b9283613689565b90600f0b90600f0b12612c775790565b600181018091116105835790565b908015612cb857612c95916127d9565b620f424081019081811161058357620f423f0190811161058357620f4240900490565b50505f90565b9073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169173ffffffffffffffffffffffffffffffffffffffff82169183831480612e2d575b15612d6e57505050803b15610224575f906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af18015610a5457612d645750565b5f6129aa9161246d565b919390925073ffffffffffffffffffffffffffffffffffffffff604051937f23b872dd000000000000000000000000000000000000000000000000000000005f52166004523060245260445260205f60648180855af19060015f5114821615612e0e575b50906040525f60605215612de35750565b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6001821516612e24573b15153d1516165f612dd2565b823d5f823e3d90fd5b5084341015612d18565b5f90815b8151831015612e5c57612e546001916102f68585612798565b920191612e3b565b91505090565b600f0b5f811261022457670de0b6b3a76400000260401c90565b8115612cb857600f0b5f8112610224576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116102245760401b81198111610224570190565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a575b1561022457600f0b90565b506f7fffffffffffffffffffffffffffffff811315612f0f565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b600f0b801561022457700100000000000000000000000000000000057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b90600f0b9081156102245760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b5f61305182612e37565b600f0b13156130cc578051600a915f5b82811061306e5750505050565b6130788183612798565b51600f0b9084548110156127ac57600191855f526130c460205f2083851c019160108460041b168354906fffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b905501613061565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a206e657720746f74616c207a65726f0000000000000000000000006044820152fd5b73ffffffffffffffffffffffffffffffffffffffff16908115613195577fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6020826131785f9460035461294f565b6003558484526001825260408420818154019055604051908152a3565b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b90919280613427575b1561335d575073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b15610224576040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081525f816024818380978960048401525af18015610a5457613348575b508180809481935af1903d15613342573d9067ffffffffffffffff821161331557604051916132a760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116018461246d565b825260203d92013e5b156132b757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526041600452fd5b506132b0565b6133559192505f9061246d565b5f905f613250565b9173ffffffffffffffffffffffffffffffffffffffff604051927fa9059cbb000000000000000000000000000000000000000000000000000000005f521660045260245260205f60448180865af19060015f5114821615613406575b604052156133c45750565b73ffffffffffffffffffffffffffffffffffffffff907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b90600181151661341e57823b15153d151616906133b9565b503d5f823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8216146131ca565b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000060095416600955600a545f600a55806134b35750565b600a5f52600160205f20910160011c8101905b8181106134d1575050565b5f81556001016134c6565b73ffffffffffffffffffffffffffffffffffffffff169081156135855773ffffffffffffffffffffffffffffffffffffffff169182156135595760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591835f526002825260405f20855f5282528060405f2055604051908152a3565b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b90919073ffffffffffffffffffffffffffffffffffffffff16801561365d57805f52600160205260405f205483811061362a576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef93858752600184520360408620558060035403600355604051908152a3565b91507fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b81156102245777ffffffffffffffffffffffffffffffffffffffffffffffff811161370157906136bb9160401b6127ec565b6fffffffffffffffffffffffffffffffff8111610224576fffffffffffffffffffffffffffffffff166f7fffffffffffffffffffffffffffffff811161022457600f0b90565b60c09181831c80936401000000008210156138a6575b600282620100006137a494101561389a575b61010081101561388e575b6010811015613882575b6004811015613877575b101561386f575b8360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b6127ec565b926fffffffffffffffffffffffffffffffff8411610224578160801c8402906fffffffffffffffffffffffffffffffff8316850290809460401b90828210613845575b5003928160801b9182851061381c575b60801c036138115761380992036127ec565b905b016136bb565b50505060019061380b565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906137f7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f6137e7565b60010161374f565b91810191811c613748565b6004928301921c61373e565b6008928301921c613734565b6010928301921c613729565b505060e082811c90613717565b156138ba57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b1561391f57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4c4d53523a20623c3d30000000000000000000000000000000000000000000006044820152fd5b90919392938251928382101561416b575f86600f0b131561410d576139a181612e37565b936139bb855f81600f0b13956139b6876138b3565b612f71565b906139ca5f83600f0b13613918565b6139d382612fb1565b916139dd82612749565b955f5b8381106140c357506510c6f7a0b5ed905f901561406557613a01898c613001565b916801000000000000000083600f0b12614054575b5f5b60408110613e39575b505f9b5f935b60408510613c09575b50505050505f955f935f5b848110613b05575b5050505050613af95791613a6b613a61613a7093613a769695612798565b51600f0b87612f71565b612f34565b93612f71565b915f83600f0b13801590613aec575b613a8d579190565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4c4d53523a207a65726f206f75747075740000000000000000000000000000006044820152606490fd5b505f81600f0b1315613a85565b5050505090505f905f90565b878103613b15575b600101613a3b565b613b2c613b228289612798565b51600f0b8d612f71565b5f81600f0b13613b3d575b50613b0d565b82613b4a919a929a612f71565b6820000000000000000081600f0b13613bf557613b69613b84916146aa565b613b7f613b768c87612798565b51600f0b612ed7565b614655565b5f81600f0b1315613bf557613ba690613b9d8b86612798565b51600f0b613001565b5f81600f0b1315613bf557613bbd613bc39161470c565b85612f71565b905f82600f0b12613be157600191613bda91612f34565b9890613b37565b985050505050505060015f80808080613a43565b509750505050505060015f80808080613a43565b68020000000000000000613c1d8286612f34565b60401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613e1f575b1561022457600f0b90898c8c5f915f905f905b8d8210613d01575b505015613ce2575050506f7fffffffffffffffffffffffffffffff5b83600f0b90600f0b135f14613cd95750935b82613ca28587614655565b600f0b1315613cc757603f8114613cbd575b60010193613a27565b929c508c92613cb4565b50505091995050975f80808080613a30565b94935092613c97565b613cf2613a6b91613cfc94612798565b51600f0b85612f71565b613c85565b9092839592949503613d1f575b50506001018c92918f918f92613c61565b8d613d37613d2d8585612798565b51600f0b89612f71565b5f81600f0b13613d49575b5050613d0e565b90613d5691969496612f71565b6820000000000000000081600f0b13613e0f57613d75613d82916146aa565b613b7f613b768885612798565b915f83600f0b1315613dff575090613b9d85613d9d93612798565b8d5f82600f0b1315613df05750613db6613dbc9161470c565b8b612f71565b908d5f83600f0b12613de15750600191613dd591612f34565b9290508c8f8d5f613d42565b93509150508c60018f80613c69565b93505090508c60018f80613c69565b9450505090508c60018f80613c69565b5050925090508c60018f80613c69565b506f7fffffffffffffffffffffffffffffff811315613c4e565b925f5f5f5b888110613f36575b5015613f1657506f7fffffffffffffffffffffffffffffff5b8d600f0b90600f0b12801590613efe575b613ef857600f0b60411b60401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613ede575b1561022457600f0b926a10000000000000000000008413613ecb575b600101613a18565b6a10000000000000000000009350613ec3565b506f7fffffffffffffffffffffffffffffff811315613ea7565b92613a21565b506a100000000000000000000081600f0b1215613e70565b613f3190613a6b613f278c8c612798565b51600f0b84612f71565b613e5f565b839e9c9a98969f9d9b9980989695948b8303613f65575b50506001019e9597999b9d92939496989a9c9e613e3e565b613f7d90613f73848d612798565b51600f0b90612f71565b5f81600f0b13613f8f575b508f613f4d565b90613f9c91949294612f71565b6820000000000000000081600f0b1361403a578b613b7f613b7686613fc3613fc9956146aa565b93612798565b5f81600f0b131561403a57613fe290613b9d858e612798565b5f81600f0b131561403a57613ff9613fff9161470c565b87612f71565b905f82600f0b126140205760019161401691612f34565b929050875f613f88565b9250505060019d9496989a9c9192939597999b9d5f613e46565b5091505060019d9496989a9c9192939597999b9d5f613e46565b680100000000000000009250613a16565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4c4d53523a20737761704d696e7420646567656e6572617465000000000000006044820152fd5b6001906140f76140f2876139b66140da8c8c612798565b51600f0b6140e8868d612798565b51600f0b90614655565b6146aa565b614101828b612798565b90600f0b9052016139e0565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4c4d53523a20616d6f756e74203c3d20300000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4c4d53523a2069647800000000000000000000000000000000000000000000006044820152fd5b6141ee6141df6141d98484612e7c565b93614692565b6141e884614692565b92612f71565b90600f0b90600f0b13612c775790565b93919383600f0b5f8113156145b55768010000000000000000126145575761423861422883612e37565b80926139b65f83600f0b136138b3565b906142475f83600f0b13613918565b61425082612fb1565b61425c84519287612f71565b9661426683612749565b935f5b84811061451e575061427e613d2d8388612798565b975f89600f0b13965f5b8681106142b25750505050505050501580156142a5575b613a8d57565b505f82600f0b131561429f565b8481036142c5575b600101955b95614288565b6142d2613f278284612798565b5f81600f0b136142e3575b506142ba565b6142f387829d949d9b939b612f71565b9182600f0b926820000000000000000084136144f2577fffffffffffffffffffffffffffffffff8000000000000000000000000000000061434e6140f28b8f8f6140e88e6143446139b69484612798565b51600f0b92612798565b94146102245761436d614368614373925f03600f0b6146aa565b614613565b84612f71565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580614504575b1561022457600f0b5f8113156144f257613ff96143c79161470c565b9288888c6143d58282612798565b51600f0b87600f0b1361444a576144049450614440979593506143fb92508e9150612798565b51600f0b612f34565b61440e8b8b612798565b90600f0b905261442b82614422888c612798565b51600f0b614655565b614435878b612798565b90600f0b9052612f34565b98600197886142dd565b61447694965061446d9395506140f2929161446491612798565b51600f0b612f71565b613b7f83612ed7565b915f83600f0b13156144e157506144a561449f61449a6144c995946144af94613001565b61470c565b86612f71565b6143fb8b8b612798565b6144b98a8a612798565b90600f0b90526102f68589612798565b985f6144d58589612798565b526001809801956142bf565b999050600191509a919a01956142bf565b50999050600191509a919a01956142bf565b506f7fffffffffffffffffffffffffffffff8113156143ab565b8061454161452e6001938a612798565b51600f0b61453b8c614613565b90612f71565b61454b8289612798565b90600f0b905201614269565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4275726e20746f6f206c617267650000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4275726e20746f6f20736d616c6c0000000000000000000000000000000000006044820152fd5b600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b677fffffffffffffff81116102245760401b600f0b90565b600f0b68400000000000000000811215610224577fffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000811261470757700171547652b82fe1777d0ffda0d23a7d12612574910260801d600f0b614839565b505f90565b600f0b5f811315610224575f90806801000000000000000082121561482c575b806401000000006002921215614820575b62010000811215614814575b610100811215614808575b60108112156147fc575b60048112156147f1575b12156147e7575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f83136147cb57506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d90565b8002908160ff1c9182607f011c918302019160011d91906147a6565b906001019061476f565b92810192811d614768565b6004938401931d61475e565b6008938401931d614754565b6010938401931d614749565b6020938401931d61473d565b506040915080821d61472c565b80600f0b68400000000000000000811215610224577fffffffffffffffffffffffffffffffffffffffffffffffc000000000000000008112612cb8576f80000000000000000000000000000000915f6780000000000000008216600f0b13615435575b5f6740000000000000008216600f0b13615418575b5f6720000000000000008216600f0b136153fb575b5f6710000000000000008216600f0b136153de575b5f6708000000000000008216600f0b136153c1575b5f6704000000000000008216600f0b136153a4575b5f6702000000000000008216600f0b13615387575b5f6701000000000000008216600f0b1361536a575b5f66800000000000008216600f0b1361534d575b5f66400000000000008216600f0b13615330575b5f66200000000000008216600f0b13615313575b5f66100000000000008216600f0b136152f6575b5f66080000000000008216600f0b136152d9575b5f66040000000000008216600f0b136152bc575b5f66020000000000008216600f0b1361529f575b5f66010000000000008216600f0b13615282575b5f658000000000008216600f0b13615265575b5f654000000000008216600f0b13615248575b5f652000000000008216600f0b1361522b575b5f651000000000008216600f0b1361520e575b5f650800000000008216600f0b136151f1575b5f650400000000008216600f0b136151d4575b5f650200000000008216600f0b136151b7575b5f650100000000008216600f0b1361519a575b5f6480000000008216600f0b1361517d575b5f6440000000008216600f0b13615160575b5f6420000000008216600f0b13615143575b5f6410000000008216600f0b13615126575b5f6408000000008216600f0b13615109575b5f6404000000008216600f0b136150ec575b5f6402000000008216600f0b136150cf575b5f6401000000008216600f0b136150b2575b5f63800000008216600f0b13615095575b5f63400000008216600f0b13615078575b5f63200000008216600f0b1361505b575b5f63100000008216600f0b1361503e575b5f63080000008216600f0b13615021575b5f63040000008216600f0b13615004575b5f63020000008216600f0b13614fe7575b5f63010000008216600f0b13614fca575b5f628000008216600f0b13614fad575b5f624000008216600f0b13614f90575b5f622000008216600f0b13614f73575b5f621000008216600f0b13614f56575b5f620800008216600f0b13614f39575b5f620400008216600f0b13614f1c575b5f620200008216600f0b13614eff575b5f620100008216600f0b13614ee2575b5f6180008216600f0b13614ec5575b5f6140008216600f0b13614ea8575b5f6120008216600f0b13614e8b575b5f6110008216600f0b13614e6e575b5f6108008216600f0b13614e51575b5f6104008216600f0b13614e34575b5f6102008216600f0b13614e17575b5f6101008216600f0b13614dfa575b5f60808216600f0b13614ddd575b5f60408216600f0b13614dc0575b5f60208216600f0b13614da3575b5f60108216600f0b13614d86575b5f60088216600f0b13614d69575b5f60048216600f0b13614d4c575b5f60028216600f0b13614d2e575b60015f9116600f0b13614d11575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161022457600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c90614ce7565b7001000000000000000162e42fefa39ef35890920260801c91614cd9565b9170010000000000000002c5c85fdf473de6b20260801c91614ccb565b91700100000000000000058b90bfbe8e7bcd6d0260801c91614cbd565b917001000000000000000b17217f7d1cf79afa0260801c91614caf565b91700100000000000000162e42fefa39ef366f0260801c91614ca1565b917001000000000000002c5c85fdf473de6eca0260801c91614c93565b9170010000000000000058b90bfbe8e7bce5440260801c91614c85565b91700100000000000000b17217f7d1cf79e9490260801c91614c77565b9170010000000000000162e42fefa39ef44d910260801c91614c68565b91700100000000000002c5c85fdf473dea871f0260801c91614c59565b917001000000000000058b90bfbe8e7bdcbe2e0260801c91614c4a565b9170010000000000000b17217f7d1cf7d83c1a0260801c91614c3b565b917001000000000000162e42fefa39f02b772c0260801c91614c2c565b9170010000000000002c5c85fdf473e242ea380260801c91614c1d565b91700100000000000058b90bfbe8e7cc35c3f00260801c91614c0e565b917001000000000000b17217f7d1cfb72b45e10260801c91614bff565b91700100000000000162e42fefa39fe95583c20260801c91614bef565b917001000000000002c5c85fdf4741bea6e77e0260801c91614bdf565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c91614bcf565b91700100000000000b17217f7d1d351a389d400260801c91614bbf565b9170010000000000162e42fefa3ae53369388c0260801c91614baf565b91700100000000002c5c85fdf477b662b269450260801c91614b9f565b917001000000000058b90bfbe8f71cb4e4b33d0260801c91614b8f565b9170010000000000b17217f7d20cf927c8e94c0260801c91614b7f565b917001000000000162e42fefa494f1478fde050260801c91614b6e565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c91614b5d565b91700100000000058b90bfbe9ddbac5e109cce0260801c91614b4c565b917001000000000b17217f7d5a7716bba4a9ae0260801c91614b3b565b91700100000000162e42fefb2fed257559bdaa0260801c91614b2a565b917001000000002c5c85fdf84bd62ae30a74cc0260801c91614b19565b9170010000000058b90bfbf8479bd5a81b51ad0260801c91614b08565b91700100000000b17217f80f4ef5aadda455540260801c91614af7565b9170010000000162e42ff0999ce3541b9fffcf0260801c91614ae5565b91700100000002c5c85fe31f35a6a30da1be500260801c91614ad3565b917001000000058b90bfcdee5acd3c1cedc8230260801c91614ac1565b9170010000000b17217fba9c739aa5819f44f90260801c91614aaf565b917001000000162e42fff037df38aa2b219f060260801c91614a9d565b9170010000002c5c8601cc6b9e94213c72737a0260801c91614a8b565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91614a79565b917001000000b1721835514b86e6d96efd1bfe0260801c91614a67565b91700100000162e430e5a18f6119e3c02282a50260801c91614a54565b917001000002c5c863b73f016468f6bac5ca2b0260801c91614a41565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91614a2e565b91700100000b1721bcfc99d9f890ea069117630260801c91614a1b565b9170010000162e43f4f831060e02d839a9d16d0260801c91614a08565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c916149f5565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c916149e2565b9170010000b17255775c040618bf4a4ade83fc0260801c916149cf565b917001000162e525ee054754457d59952920260260801c916149bb565b9170010002c5cc37da9491d0985c348c68e7b30260801c916149a7565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91614993565b917001000b175effdc76ba38e31671ca9397250260801c9161497f565b91700100162f3904051fa128bca9c55c31e5df0260801c9161496b565b917001002c605e2e8cec506d21bfc89a23a00f0260801c91614957565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c91614943565b91700100b1afa5abcbed6129ab13ec11dc95430260801c9161492f565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c9161491a565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c91614905565b917001059b0d31585743ae7c548eb68ca417fd0260801c916148f0565b9170010b5586cf9890f6298b92b71842a983630260801c916148db565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c916148c6565b917001306fe0a31b7152de8d5a46305c85edec0260801c916148b1565b6fb504f333f9de6484597d89b3754abe9f925061489c56fea2646970667358221220ea887eebf5245bf1d7b422a689af5404eabe088a83509f6cc5cc6c3f614d2d7e64736f6c634300081e003360808060405234601557615a61908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c636ae73ce314610024575f80fd5b34610373576101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103735760043573ffffffffffffffffffffffffffffffffffffffff81168091036103735760243567ffffffffffffffff8111610373576100959036906004016103f8565b9060443567ffffffffffffffff8111610373576100b69036906004016103f8565b6064359067ffffffffffffffff82116103735736602383011215610373578160040135916100eb6100e684610468565b6103b4565b9060208285815201906024829560051b8201019036821161037357602401915b8183106103875750505060843580600f0b8091036103735760a43567ffffffffffffffff81116103735736602382011215610373578060040135946101526100e687610468565b91602083888152016024819860051b8301019136831161037357602401905b82821061037757505050610104359173ffffffffffffffffffffffffffffffffffffffff831680930361037357610124359373ffffffffffffffffffffffffffffffffffffffff851680950361037357610144359573ffffffffffffffffffffffffffffffffffffffff871680970361037357610164359773ffffffffffffffffffffffffffffffffffffffff8916809903610373576040519b8c9b8c926155688094019e8f9081109067ffffffffffffffff1017610346576102528f92938f94602096610260966104c49039845261018086850152610180840190610480565b916040818403910152610480565b8c810360608e01529151808352910193905f5b81811061031a575050509060209160808b015289830360a08b015251918281520195905f5b81811061030457505050918596916101609360c43560c085015260e43560e0850152610100840152610120830152610140820152015203905ff080156102f95760209073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b6040513d5f823e3d90fd5b8251885260209788019790920191600101610298565b825173ffffffffffffffffffffffffffffffffffffffff16865260209586019590920191600101610273565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f80fd5b8135815260209182019101610171565b823573ffffffffffffffffffffffffffffffffffffffff811681036103735781526020928301920161010b565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff82111761034657604052565b81601f820112156103735780359067ffffffffffffffff82116103465761044660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116016103b4565b928284526020838301011161037357815f926020809301838601378301015290565b67ffffffffffffffff81116103465760051b60200190565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f858286010152011601019056fe610140604052346106ee576155688038038061001a81610a6a565b9283398101610180828203126106ee5761003382610a8f565b60208301516001600160401b0381116106ee5782610052918501610aa3565b60408401519091906001600160401b0381116106ee5783610074918601610aa3565b60608501519094906001600160401b0381116106ee5781019284601f850112156106ee578351956100ac6100a788610af4565b610a6a565b9460208689815201906020829960051b820101908882116106ee57602001915b818310610a4a57505050608083015180600f0b81036106ee5760a08401516001600160401b0381116106ee5784019680601f890112156106ee5787516101146100a782610af4565b986020808b848152019260051b8201019283116106ee57602001905b828210610a3a5750505060c08401519760e0850151926101536101008701610a8f565b610120870151979095906001600160a01b03891689036106ee57610140880151976001600160a01b03891689036106ee576101600151986001600160a01b038a168a036106ee5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00556080526001600160a01b03168015610a27575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a38051906001600160401b0382116106335760045490600182811c92168015610a1d575b60208310146109405781601f8493116109cf575b50602090601f8311600114610969575f9261095e575b50508160011b915f199060031b1c1916176004555b8051906001600160401b0382116106335760055490600182811c92168015610954575b60208310146109405781601f849311610904575b50602090601f831160011461089e575f92610893575b50508160011b915f199060031b1c1916176005555b60018751111561084e578651906001600160401b0382116106335768010000000000000000821161063357600b5482600b55808310610814575b50600b5f5260205f205f5b8381106107f7575050505060a05285518551036107be5761033a8651610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600654836006558084106107a2575b500160065f5260205f205f5b83811061078e57505050505f5b86518110156104185761271061039c8289610b49565b5110156103e1576103ad8188610b49565b51906006548110156103cd5760019160065f528160205f20015501610386565b634e487b7160e01b5f52603260045260245ffd5b60405162461bcd60e51b815260206004820152600f60248201526e506f6f6c3a20666565203e3d20312560881b6044820152606490fd5b50866127108110156107495760c05262061a8081101561070457801580156106f2575b156106ee5760e052601080546001600160a01b0319166001600160a01b039290921691909117905561012052610100528051905f5b8281106106a7578261048181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600d5483600d5580841061068b575b5001600d5f5260205f205f5b83811061067757846104d181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600f5483600f5580841061065b575b5001600f5f5260205f205f5b8381106106475761052085610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600c5483600c55808410610617575b500190600c5f5260205f20915f5b82811061060357604051614a0a9081610b5e8239608051818181611ac301528181611d1401528181612067015261278a015260a051818181610f130152610f7f015260c05181818161134801526116a6015260e0518181816105ac01528181610c550152818161105d0152818161136e015281816114be0152611b9d01526101005181818161031701526105f70152610120518181816108050152610a720152f35b600190602083519301928186015501610561565b61062d90600c5f5284845f209182019101610b0b565b83610553565b634e487b7160e01b5f52604160045260245ffd5b600190602084519401938184015501610510565b61067190600f5f5284845f209182019101610b0b565b84610504565b6001906020845194019381840155016104c0565b6106a190600d5f5284845f209182019101610b0b565b846104b4565b60018101908181116106da576001600160a01b03906106c69084610b49565b51165f52600e6020528060405f2055610470565b634e487b7160e01b5f52601160045260245ffd5b5f80fd5b506001600160a01b038216151561043b565b60405162461bcd60e51b815260206004820152601960248201527f506f6f6c3a2070726f746f636f6c20666565203e3d20343025000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601560248201527f506f6f6c3a20666c61736820666565203e3d20312500000000000000000000006044820152606490fd5b600190602084519401938184015501610379565b6107b89060065f5284845f209182019101610b0b565b5f61036d565b60405162461bcd60e51b81526020600482015260116024820152700a0deded87440cccacae640d8cadccee8d607b1b6044820152606490fd5b82516001600160a01b031681830155602090920191600101610319565b600b5f52610848907f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9908101908401610b0b565b5f61030e565b60405162461bcd60e51b815260206004820152601360248201527f506f6f6c3a206e656564203e31206173736574000000000000000000000000006044820152606490fd5b015190505f806102bf565b60055f9081528281209350601f198516905b8181106108ec57509084600195949392106108d4575b505050811b016005556102d4565b01515f1960f88460031b161c191690555f80806108c6565b929360206001819287860151815501950193016108b0565b6109309060055f5260205f20601f850160051c81019160208610610936575b601f0160051c0190610b0b565b5f6102a9565b9091508190610923565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610295565b015190505f8061025d565b60045f9081528281209350601f198516905b8181106109b7575090846001959493921061099f575b505050811b01600455610272565b01515f1960f88460031b161c191690555f8080610991565b9293602060018192878601518155019501930161097b565b60045f52610a17907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f850160051c8101916020861061093657601f0160051c0190610b0b565b5f610247565b91607f1691610233565b631e4fbdf760e01b5f525f60045260245ffd5b8151815260209182019101610130565b82516001600160a01b03811681036106ee578152602092830192016100cc565b6040519190601f01601f191682016001600160401b0381118382101761063357604052565b51906001600160a01b03821682036106ee57565b81601f820112156106ee578051906001600160401b03821161063357610ad2601f8301601f1916602001610a6a565b92828452602083830101116106ee57815f9260208093018386015e8301015290565b6001600160401b0381116106335760051b60200190565b818110610b16575050565b5f8155600101610b0b565b90610b2e6100a783610af4565b8281528092610b3f601f1991610af4565b0190602036910137565b80518210156103cd5760209160051b01019056fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c908163017504b614612a8e57508063017cf661146129fc57806306fdde03146128b3578063095ea7b3146127ae5780630d246214146127405780630eeee6271461191757806318160ddd146118db5780631f3a0e411461189a57806323b872dd14611703578063313ce567146116c957806331596a6a1461167057806341c0e1b5146115da578063476e44b614611519578063491e7998146113f15780635cffe9de146112115780636863f5bc146110805780636b4082d1146110275780636b7b911214610fa55780636bba3f2f14610f495780636d8d0ff314610e8e5780636ff97f1d14610d8e57806370a0823114610d2b578063715018a614610c8f57806379a68d5314610b6b5780638da5cb5b14610b1a5780638e499bcf14610ade578063939f5ea414610a965780639517606614610a2757806395d89b41146108cd5780639af1d35a1461082e578063a1af5b9a14610765578063a9059cbb14610715578063b3f1c93d14610648578063cb717f3a146104f3578063cce516b7146104a1578063d516b8c614610416578063dd62ed3e1461039d578063e4b50cb81461033b578063f0d1ae4f146102cc5763f2fde38b0361000f57346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610228612b9d565b6102306131e9565b16801561029d5773ffffffffffffffffffffffffffffffffffffffff8254827fffffffffffffffffffffffff00000000000000000000000000000000000000008216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b6024827f1e4fbdf700000000000000000000000000000000000000000000000000000000815280600452fd5b80fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff61038d600435612c6d565b90549060031b1c16604051908152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff60406103ec612b9d565b92826103f6612bc0565b9416815260026020522091165f52602052602060405f2054604051908152f35b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043590602435916064359182600f0b83036102c95761049d61047985858561046f838261330e565b9260443591612f08565b92505050604093919351938493846040919493926060820195825260208201520152565b0390f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff60105416604051908152f35b5060a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761049d61062b61061c61052f612b9d565b610537612bc0565b60443573ffffffffffffffffffffffffffffffffffffffff61055882613235565b9281604051957f3dd3c8050000000000000000000000000000000000000000000000000000000060208801521660248601521660448401526064830152606435608483015260843560a483015260c48201527f000000000000000000000000000000000000000000000000000000000000000060e482015260e481526105e061010482612c2c565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016613255565b60208082518301019101612e9c565b604080519384526020840192909252908201529081906060820190565b5060807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f161067e612b9d565b73ffffffffffffffffffffffffffffffffffffffff61069b612bc0565b81604051937fb3f1c93d00000000000000000000000000000000000000000000000000000000602086015216602484015216604482015260443560648201526064356084820152608481526105e060a482612c2c565b602081519181808201938492010103126107115760209051604051908152f35b5f80fd5b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761075a610750612b9d565b60243590336130c4565b602060405160018152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761082a73ffffffffffffffffffffffffffffffffffffffff60105416604051907f2a54db010000000000000000000000000000000000000000000000000000000060208301526024820152602481526107ee604482612c2c565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016613255565b5080f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760405180916020600654928381520191600682527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f915b8181106108b75761049d856108ab81870382612c2c565b60405191829182612b1c565b8254845260209093019260019283019201610894565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576040519080600554908160011c91600181168015610a1d575b6020841081146109f0578386529081156109ab575060011461094e575b61049d8461094281860382612c2c565b60405191829182612b55565b600581527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0939250905b8082106109915750909150810160200161094282610932565b919260018160209254838588010152019101909291610978565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208087019190915292151560051b850190920192506109429150839050610932565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b92607f1692610915565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020610ad660243560043561330e565b604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600b54604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b5060e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610b9e612b9d565b90610ba7612bc0565b906044356064356084359182600f0b809303610c8b5760c435938415158095036102c95761049d61062b61061c89898989898973ffffffffffffffffffffffffffffffffffffffff610bf98383612eb7565b9581604051987f8a3d858d0000000000000000000000000000000000000000000000000000000060208b01521660248901521660448701526064860152608485015260a484015260a43560c484015260e48301526101048201527f000000000000000000000000000000000000000000000000000000000000000061012482015261012481526107ee61014482612c2c565b8380fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610cc66131e9565b8073ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604060209173ffffffffffffffffffffffffffffffffffffffff610d7d612b9d565b168152600183522054604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604051806020600b5491828152018091600b85527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db990855b818110610e625750505082610e0b910383612c2c565b604051928392602084019060208552518091526040840192915b818110610e33575050500390f35b825173ffffffffffffffffffffffffffffffffffffffff16845285945060209384019390920191600101610e25565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610df5565b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f1610ec4612b9d565b73ffffffffffffffffffffffffffffffffffffffff604051917fc5eabfb900000000000000000000000000000000000000000000000000000000602084015216602482015260243560448201527f0000000000000000000000000000000000000000000000000000000000000000600f0b6064820152606481526105e0608482612c2c565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f0000000000000000000000000000000000000000000000000000000000000000600f0b8152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610ff2612b9d565b610ffa6131e9565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000601054161760105580f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c95760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576110b8612b9d565b6110c0612bc0565b90608435801515809103610c8b5773ffffffffffffffffffffffffffffffffffffffff6111429381604051947f6863f5bc0000000000000000000000000000000000000000000000000000000060208701521660248501521660448301526044356064830152606435608483015260a482015260a481526105e060c482612c2c565b805181019060208181840193031261120d5760208101519067ffffffffffffffff8211610c8b57019181603f840112156102c95760208301519267ffffffffffffffff84116111e0578360051b91604051946111a16020850187612c2c565b855260208080870194840101019384116102c95750604001905b8282106111d0576040518061049d8682612b1c565b81518152602091820191016111bb565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8280fd5b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043573ffffffffffffffffffffffffffffffffffffffff81168091036113e95761126a612bc0565b60643567ffffffffffffffff8111610c8b5736602382011215610c8b5780600401359067ffffffffffffffff82116113ed5736602483830101116113ed576113c3937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f846107ee9560246101049673ffffffffffffffffffffffffffffffffffffffff6040519a8b987fe49cd4750000000000000000000000000000000000000000000000000000000060208b0152848a0152166044880152604435606488015260c060848801528260e48801520186860137888582860101527f000000000000000000000000000000000000000000000000000000000000000060a48501527f000000000000000000000000000000000000000000000000000000000000000060c48501520116810103017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612c2c565b6020818051810103126113e957602001518015158091036113e957602090604051908152f35b5080fd5b8480fd5b50346102c95760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957611429612b9d565b611431612bc0565b906064359160a4358015158091036113ed578373ffffffffffffffffffffffffffffffffffffffff6114656114f496613235565b9381604051967f8d01fa440000000000000000000000000000000000000000000000000000000060208901521660248701521660448501526044356064850152608484015260843560a484015260c483015260e48201527f000000000000000000000000000000000000000000000000000000000000000061010482015261010481526105e061012482612c2c565b6040818051810103126113e95780604060208193015191015182519182526020820152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576060602060405161155881612be3565b838152015260405161156981612be3565b600954600f0b8152611579612e08565b906020810191825260405192839260208452606084019251600f0b6020850152519160408085015282518091526020608085019301915b8181106115be575050500390f35b8251600f0b8452859450602093840193909201916001016115b0565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576116116131e9565b60085460ff811615611621575080f35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001176008557f0f8eeedbc400fd6686703559f58d1e6143fdaed533f19a86c93d67a2fe4fb3318180a180f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405160128152f35b50346102c95760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761173b612b9d565b611743612bc0565b6044359173ffffffffffffffffffffffffffffffffffffffff811680855260026020526040852073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f2054907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82106117c0575b505061075a93506130c4565b84821061186657801561183a57331561180e578560409161075a975260026020522073ffffffffffffffffffffffffffffffffffffffff33165f526020528360405f20910390555f806117b4565b6024867f94280d6200000000000000000000000000000000000000000000000000000000815280600452fd5b6024867fe602df0500000000000000000000000000000000000000000000000000000000815280600452fd5b60648686847ffb8f41b200000000000000000000000000000000000000000000000000000000835233600452602452604452fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060ff600854166040519015158152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600354604051908152f35b506101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107115761194b612b9d565b602435917fffffffff00000000000000000000000000000000000000000000000000000000831690818403610711576044359173ffffffffffffffffffffffffffffffffffffffff83169485840361071157606435956084359560c4359687600f0b9687890361071157610104359860e4358a15158b036107115760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146127185760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005560ff600854166126ba5780159081156126af575b501561265157611a4690611a3b848d612eb7565b9060a435858e612f08565b9c859e95979392949f915073ffffffffffffffffffffffffffffffffffffffff611a6f83612c6d565b90549060031b1c169a73ffffffffffffffffffffffffffffffffffffffff611a9686612c6d565b90549060031b1c169c80155f146122df57505050878a73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001698898214806122d5575b156121fe57505050863b15610711575f8e976004604051809a81937fd0e30db00000000000000000000000000000000000000000000000000000000083525af19687156121f3578f908f908f996121dc575b50611b76611b98915b611b71611b5486612cb2565b90549060031b1c611b6487612cca565b90549060031b1c90612d4c565b612d4c565b91611b93611b8387612cb2565b90549060031b1c611b6488612cca565b612d12565b908d987f000000000000000000000000000000000000000000000000000000000000000090811515806121d3575b61214a575b5050611c6991611c4b611c0c611c6093611bf6611be788612cca565b90549060031b1c821015612da3565b611bff87612cca565b90549060031b1c90612d12565b611c1586612cb2565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b611c57611be787612cca565b611bff86612cca565b611c1585612cb2565b8b82600f0b13156120ec578b84600f0b131561208e57611cf293611cda82611cb2611cac611cb296611c9d611cac97613084565b90549060031b1c600f0b6133db565b91613084565b9091906fffffffffffffffffffffffffffffffff83549160031b928116831b921b1916179055565b611ce384613084565b90549060031b1c600f0b613433565b8061204f575b15611f895773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b15611f855787809160248d60405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af18015611f7a579188918c93611f5c575b5081809381925af13d15611f57573d67ffffffffffffffff8111611f2a5760405190611dd760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160183612c2c565b81528760203d92013e5b15611ecc577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a0915b611e16818a612d12565b73ffffffffffffffffffffffffffffffffffffffff604051931683528a60208401528b604084015260608301526080820152a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015611e9b575b50505061049d90604051938493846040919493926060820195825260208201520152565b8280809381938290611ec3575b3390f115611eb7578080611e77565b604051903d90823e3d90fd5b506108fc611ea8565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b611de1565b611f699193508290612c2c565b611f7657868a915f611d83565b8680fd5b6040513d8a823e3d90fd5b8780fd5b506040517fa9059cbb0000000000000000000000000000000000000000000000000000000087528360045289602452602087604481808a5af190600188511482161561202e575b60405215612002577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a091611e0c565b602486867f5274afe7000000000000000000000000000000000000000000000000000000008252600452fd5b90600181151661204657863b15153d15161690611fd0565b503d87823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168614611cf8565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a20616d6f756e744f7574203c3d20300000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4d53523a20616d6f756e74496e203c3d2030000000000000000000000000006044820152fd5b611c60929a50611c0c620f4240612168611c699694611c4b94612d59565b049b8c61217b575b93505050918f611bcb565b6121ce8d61219a61218b8a612cca565b91909283548360031b1c612d4c565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b612170565b50801515611bc6565b6121e9919e505f90612c2c565b5f9c611b76611b3f565b6040513d5f823e3d90fd5b60209293949596979899505f80809360649373ffffffffffffffffffffffffffffffffffffffff604051987f23b872dd00000000000000000000000000000000000000000000000000000000855216600452306024526044525af19060015f51148216156122b4575b6040525f6060521561228857908b95949392918e611b988f611b7690611b48565b887f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9060018115166122cc578a3b15153d15161690612267565b503d5f823e3d90fd5b5080341015611aed565b92985090917c0100000000000000000000000000000000000000000000000000000000036124a55750612421576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526020816024818d5afa80156121f3578e915f916123ea575b50612377906123716123618a612cb2565b90549060031b1c611b648b612cca565b90612d12565b0361238c578b958e611b988f611b7690611b48565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496e636f72726563742070726566756e64696e6720616d6f756e7400000000006044820152fd5b9150506020813d602011612419575b8161240660209383612c2c565b8101031261071157518d90612377612350565b3d91506123f9565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f50726566756e64696e672063616e6e6f7420626520757365642077697468206160448201527f206c696d697420707269636500000000000000000000000000000000000000006064820152fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015291506020826024818e5afa9182156121f3578f905f93612619575b506024929161251d916040519160208301528d85830152604482015260448152612517606482612c2c565b8a6133b8565b5060208b604051938480927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa80156121f3578f925f916125e0575b509061256d91612d12565b03612582578b958e611b988f611b7690611b48565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e742066756e647300000000000000000000000000006044820152fd5b919250506020813d602011612611575b816125fd60209383612c2c565b8101031261071157518e919061256d612562565b3d91506125f0565b9250506020823d602011612649575b8161263560209383612c2c565b81010312610711579051908e61251d6124ec565b3d9150612628565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f737761703a20646561646c696e652065786365656465640000000000000000006044820152fd5b90504211155f611a27565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346107115760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576127e5612b9d565b6024359033156128875773ffffffffffffffffffffffffffffffffffffffff1690811561285b57335f52600260205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576040515f6004548060011c906001811680156129f2575b6020831081146129c5578285529081156129835750600114612925575b61049d8361094281850382612c2c565b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b80821061296957509091508101602001610942612915565b919260018160209254838588010152019101909291612951565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b840190910191506109429050612915565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916128f8565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157604051806020600d54918281520190600d5f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5905f5b818110612a785761049d856108ab81870382612c2c565b8254845260209093019260019283019201612a61565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157600c548082526020820190600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7905f5b818110612b065761049d856108ab81870382612c2c565b8254845260209093019260019283019201612aef565b60206040818301928281528451809452019201905f5b818110612b3f5750505090565b8251845260209384019390920191600101612b32565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6040810190811067ffffffffffffffff821117612bff57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612bff57604052565b600b54811015612c8557600b5f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600f54811015612c8557600f5f5260205f2001905f90565b600c54811015612c8557600c5f5260205f2001905f90565b600d54811015612c8557600d5f5260205f2001905f90565b600654811015612c855760065f5260205f2001905f90565b91908203918211612d1f57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b91908201809211612d1f57565b81810292918115918404141715612d1f57565b8115612d76570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b15612daa57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f62616c616e6365203c2070726f746f636f6c206f7765640000000000000000006044820152fd5b60405190600a548083528260208101600a5f5260205f20925f905b806001830110612e7057612e49945491818110612e5c575b10612e4b575b500383612c2c565b565b60801d600f0b81526020015f612e41565b92602060019184600f0b8152019301612e3b565b9160029193506040600191865480600f0b825260801d600f0b6020820152019401920185929391612e23565b90816060910312610711578051916040602083015192015190565b9190826103e8026103e881048403612d1f5781612ed391612d4c565b90815f52600760205260405f2054938415612eed57505050565b612ef892945061330e565b915f5260076020528160405f2055565b92949394919091612f34612f1c878461332b565b9050612f2786612ce2565b90549060031b1c90613489565b905f82600f0b131561302657612f5a918486600954600f0b612f54612e08565b90613722565b919092612f798394612f6c8197612ce2565b90549060031b1c9061334d565b925f92849880613005575b508811612fa757612f97612fa492612ce2565b90549060031b1c906136b3565b94565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f737761703a207472616e736665722065786365656473206d61780000000000006044820152fd5b9098506130149193508461337f565b9161301f8385612d4c565b975f612f84565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761703a20696e70757420746f6f20736d616c6c20616674657220666565006044820152fd5b90600a54821015612c8557600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b73ffffffffffffffffffffffffffffffffffffffff169081156131bd5773ffffffffffffffffffffffffffffffffffffffff1691821561319157815f52600160205260405f205481811061315f57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f52600184520360405f2055845f526001825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff5f5416330361320957565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b600654156132505761324690612cfa565b90549060031b1c90565b505f90565b905f8091602081519101845af480806132fb575b1561327b575050613278613470565b90565b156132c25773ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b3d156132d3576040513d5f823e3d90fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b503d1515806132695750813b1515613269565b90611b6461331e61327893612cfa565b90549060031b1c91612cfa565b9190801561334757613340613278918461337f565b8093612d12565b505f9190565b61336161335a83836136b3565b9283613489565b90600f0b90600f0b126133715790565b60018101809111612d1f5790565b9080156133b25761338f91612d59565b620f4240810190818111612d1f57620f423f01908111612d1f57620f4240900490565b50505f90565b905f809160208151910182855af180806132fb571561327b575050613278613470565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613419575b1561071157600f0b90565b506f7fffffffffffffffffffffffffffffff81131561340e565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613419571561071157600f0b90565b604051903d82523d5f602084013e60203d830101604052565b81156107115777ffffffffffffffffffffffffffffffffffffffffffffffff811161350157906134bb9160401b612d6c565b6fffffffffffffffffffffffffffffffff8111610711576fffffffffffffffffffffffffffffffff166f7fffffffffffffffffffffffffffffff811161071157600f0b90565b60c09181831c80936401000000008210156136a6575b600282620100006135a494101561369a575b61010081101561368e575b6010811015613682575b6004811015613677575b101561366f575b8360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b612d6c565b926fffffffffffffffffffffffffffffffff8411610711578160801c8402906fffffffffffffffffffffffffffffffff8316850290809460401b90828210613645575b5003928160801b9182851061361c575b60801c03613611576136099203612d6c565b905b016134bb565b50505060019061360b565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906135f7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f6135e7565b60010161354f565b91810191811c613548565b6004928301921c61353e565b6008928301921c613534565b6010928301921c613529565b505060e082811c90613517565b81156133b257600f0b5f8112610711576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116107115760401b81198111610711570190565b8051821015612c855760209160051b010190565b955f959194939092849290875b875189101561375a576137526001916137488b8b61370e565b51600f0b906133db565b98019761372f565b909294975097909294975f81600f0b1315613b985761377891613bf6565b9384600f0b80156107115770010000000000000000000000000000000005917fffffffffffffffffffffffffffffffff8000000000000000000000000000000083121580613b7e575b15610711576137fd613802916137f86137e095600f0b9586928b61370e565b51600f0b6137ee898c61370e565b51600f0b90613433565b613bf6565b613c36565b9280600f0b905f82136139ee575b50509061381c91613bf6565b80600f0b68200000000000000000811361396a577fffffffffffffffffffffffffffffffff800000000000000000000000000000001461071157613864905f03600f0b613c36565b600f0b6801000000000000000003907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082121580613950575b15610711576138af91600f0b90613bf6565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613936575b1561071157600f0b925f84131561392257505061390661390c92613c93565b90613bf6565b905f82600f0b131561391a57565b5f9250829150565b90915061392f925061370e565b51600f0b90565b506f7fffffffffffffffffffffffffffffff8113156138e7565b506f7fffffffffffffffffffffffffffffff82131561389d565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4c4d53523a20612f6220746f6f206c617267652028776f756c64206f7665726660448201527f6c6f7720657870290000000000000000000000000000000000000000000000006064820152fd5b84600f9a939a0b80921315613afa5781156107115760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613ae0575b1561071157600f0b5f811315613a8257613a50613a5691613c93565b86613bf6565b9780600f0b89600f0b125f14613a7657505061381c90875b90915f613810565b61381c92919850613a6e565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4d53523a20726174696f3c3d300000000000000000000000000000000000006044820152fd5b506f7fffffffffffffffffffffffffffffff811315613a34565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4c4d53523a206c696d69745072696365203c3d2063757272656e74207072696360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152fd5b506f7fffffffffffffffffffffffffffffff8313156137c1565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613419571561071157600f0b90565b600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000811261325057700171547652b82fe1777d0ffda0d23a7d12613278910260801d600f0b613dc0565b600f0b5f811315610711575f908068010000000000000000821215613db3575b806401000000006002921215613da7575b62010000811215613d9b575b610100811215613d8f575b6010811215613d83575b6004811215613d78575b1215613d6e575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f8313613d5257506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d90565b8002908160ff1c9182607f011c918302019160011d9190613d2d565b9060010190613cf6565b92810192811d613cef565b6004938401931d613ce5565b6008938401931d613cdb565b6010938401931d613cd0565b6020938401931d613cc4565b506040915080821d613cb3565b80600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000081126133b2576f80000000000000000000000000000000915f6780000000000000008216600f0b136149bc575b5f6740000000000000008216600f0b1361499f575b5f6720000000000000008216600f0b13614982575b5f6710000000000000008216600f0b13614965575b5f6708000000000000008216600f0b13614948575b5f6704000000000000008216600f0b1361492b575b5f6702000000000000008216600f0b1361490e575b5f6701000000000000008216600f0b136148f1575b5f66800000000000008216600f0b136148d4575b5f66400000000000008216600f0b136148b7575b5f66200000000000008216600f0b1361489a575b5f66100000000000008216600f0b1361487d575b5f66080000000000008216600f0b13614860575b5f66040000000000008216600f0b13614843575b5f66020000000000008216600f0b13614826575b5f66010000000000008216600f0b13614809575b5f658000000000008216600f0b136147ec575b5f654000000000008216600f0b136147cf575b5f652000000000008216600f0b136147b2575b5f651000000000008216600f0b13614795575b5f650800000000008216600f0b13614778575b5f650400000000008216600f0b1361475b575b5f650200000000008216600f0b1361473e575b5f650100000000008216600f0b13614721575b5f6480000000008216600f0b13614704575b5f6440000000008216600f0b136146e7575b5f6420000000008216600f0b136146ca575b5f6410000000008216600f0b136146ad575b5f6408000000008216600f0b13614690575b5f6404000000008216600f0b13614673575b5f6402000000008216600f0b13614656575b5f6401000000008216600f0b13614639575b5f63800000008216600f0b1361461c575b5f63400000008216600f0b136145ff575b5f63200000008216600f0b136145e2575b5f63100000008216600f0b136145c5575b5f63080000008216600f0b136145a8575b5f63040000008216600f0b1361458b575b5f63020000008216600f0b1361456e575b5f63010000008216600f0b13614551575b5f628000008216600f0b13614534575b5f624000008216600f0b13614517575b5f622000008216600f0b136144fa575b5f621000008216600f0b136144dd575b5f620800008216600f0b136144c0575b5f620400008216600f0b136144a3575b5f620200008216600f0b13614486575b5f620100008216600f0b13614469575b5f6180008216600f0b1361444c575b5f6140008216600f0b1361442f575b5f6120008216600f0b13614412575b5f6110008216600f0b136143f5575b5f6108008216600f0b136143d8575b5f6104008216600f0b136143bb575b5f6102008216600f0b1361439e575b5f6101008216600f0b13614381575b5f60808216600f0b13614364575b5f60408216600f0b13614347575b5f60208216600f0b1361432a575b5f60108216600f0b1361430d575b5f60088216600f0b136142f0575b5f60048216600f0b136142d3575b5f60028216600f0b136142b5575b60015f9116600f0b13614298575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161071157600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c9061426e565b7001000000000000000162e42fefa39ef35890920260801c91614260565b9170010000000000000002c5c85fdf473de6b20260801c91614252565b91700100000000000000058b90bfbe8e7bcd6d0260801c91614244565b917001000000000000000b17217f7d1cf79afa0260801c91614236565b91700100000000000000162e42fefa39ef366f0260801c91614228565b917001000000000000002c5c85fdf473de6eca0260801c9161421a565b9170010000000000000058b90bfbe8e7bce5440260801c9161420c565b91700100000000000000b17217f7d1cf79e9490260801c916141fe565b9170010000000000000162e42fefa39ef44d910260801c916141ef565b91700100000000000002c5c85fdf473dea871f0260801c916141e0565b917001000000000000058b90bfbe8e7bdcbe2e0260801c916141d1565b9170010000000000000b17217f7d1cf7d83c1a0260801c916141c2565b917001000000000000162e42fefa39f02b772c0260801c916141b3565b9170010000000000002c5c85fdf473e242ea380260801c916141a4565b91700100000000000058b90bfbe8e7cc35c3f00260801c91614195565b917001000000000000b17217f7d1cfb72b45e10260801c91614186565b91700100000000000162e42fefa39fe95583c20260801c91614176565b917001000000000002c5c85fdf4741bea6e77e0260801c91614166565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c91614156565b91700100000000000b17217f7d1d351a389d400260801c91614146565b9170010000000000162e42fefa3ae53369388c0260801c91614136565b91700100000000002c5c85fdf477b662b269450260801c91614126565b917001000000000058b90bfbe8f71cb4e4b33d0260801c91614116565b9170010000000000b17217f7d20cf927c8e94c0260801c91614106565b917001000000000162e42fefa494f1478fde050260801c916140f5565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c916140e4565b91700100000000058b90bfbe9ddbac5e109cce0260801c916140d3565b917001000000000b17217f7d5a7716bba4a9ae0260801c916140c2565b91700100000000162e42fefb2fed257559bdaa0260801c916140b1565b917001000000002c5c85fdf84bd62ae30a74cc0260801c916140a0565b9170010000000058b90bfbf8479bd5a81b51ad0260801c9161408f565b91700100000000b17217f80f4ef5aadda455540260801c9161407e565b9170010000000162e42ff0999ce3541b9fffcf0260801c9161406c565b91700100000002c5c85fe31f35a6a30da1be500260801c9161405a565b917001000000058b90bfcdee5acd3c1cedc8230260801c91614048565b9170010000000b17217fba9c739aa5819f44f90260801c91614036565b917001000000162e42fff037df38aa2b219f060260801c91614024565b9170010000002c5c8601cc6b9e94213c72737a0260801c91614012565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91614000565b917001000000b1721835514b86e6d96efd1bfe0260801c91613fee565b91700100000162e430e5a18f6119e3c02282a50260801c91613fdb565b917001000002c5c863b73f016468f6bac5ca2b0260801c91613fc8565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91613fb5565b91700100000b1721bcfc99d9f890ea069117630260801c91613fa2565b9170010000162e43f4f831060e02d839a9d16d0260801c91613f8f565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c91613f7c565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c91613f69565b9170010000b17255775c040618bf4a4ade83fc0260801c91613f56565b917001000162e525ee054754457d59952920260260801c91613f42565b9170010002c5cc37da9491d0985c348c68e7b30260801c91613f2e565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91613f1a565b917001000b175effdc76ba38e31671ca9397250260801c91613f06565b91700100162f3904051fa128bca9c55c31e5df0260801c91613ef2565b917001002c605e2e8cec506d21bfc89a23a00f0260801c91613ede565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c91613eca565b91700100b1afa5abcbed6129ab13ec11dc95430260801c91613eb6565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c91613ea1565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c91613e8c565b917001059b0d31585743ae7c548eb68ca417fd0260801c91613e77565b9170010b5586cf9890f6298b92b71842a983630260801c91613e62565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c91613e4d565b917001306fe0a31b7152de8d5a46305c85edec0260801c91613e38565b6fb504f333f9de6484597d89b3754abe9f9250613e2356fea2646970667358221220eb055801e8ab9805a5a63034ae9b30d67850f64e3702721cdac9d52abc57ce0e64736f6c634300081e0033a26469706673582212206dc297f42e3884778d7b51bde94442ad2fcc13a1f26383968fa598a51672449264736f6c634300081e003360808060405234601557615fbf908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c636ae73ce314610024575f80fd5b34610373576101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103735760043573ffffffffffffffffffffffffffffffffffffffff81168091036103735760243567ffffffffffffffff8111610373576100959036906004016103f8565b9060443567ffffffffffffffff8111610373576100b69036906004016103f8565b6064359067ffffffffffffffff82116103735736602383011215610373578160040135916100eb6100e684610468565b6103b4565b9060208285815201906024829560051b8201019036821161037357602401915b8183106103875750505060843580600f0b8091036103735760a43567ffffffffffffffff81116103735736602382011215610373578060040135946101526100e687610468565b91602083888152016024819860051b8301019136831161037357602401905b82821061037757505050610104359173ffffffffffffffffffffffffffffffffffffffff831680930361037357610124359373ffffffffffffffffffffffffffffffffffffffff851680950361037357610144359573ffffffffffffffffffffffffffffffffffffffff871680970361037357610164359773ffffffffffffffffffffffffffffffffffffffff8916809903610373576040519b8c9b8c92615ac68094019e8f9081109067ffffffffffffffff1017610346576102528f92938f94602096610260966104c49039845261018086850152610180840190610480565b916040818403910152610480565b8c810360608e01529151808352910193905f5b81811061031a575050509060209160808b015289830360a08b015251918281520195905f5b81811061030457505050918596916101609360c43560c085015260e43560e0850152610100840152610120830152610140820152015203905ff080156102f95760209073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b6040513d5f823e3d90fd5b8251885260209788019790920191600101610298565b825173ffffffffffffffffffffffffffffffffffffffff16865260209586019590920191600101610273565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f80fd5b8135815260209182019101610171565b823573ffffffffffffffffffffffffffffffffffffffff811681036103735781526020928301920161010b565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff82111761034657604052565b81601f820112156103735780359067ffffffffffffffff82116103465761044660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116016103b4565b928284526020838301011161037357815f926020809301838601378301015290565b67ffffffffffffffff81116103465760051b60200190565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f858286010152011601019056fe610140604052346106ee57615ac68038038061001a81610a6a565b9283398101610180828203126106ee5761003382610a8f565b60208301516001600160401b0381116106ee5782610052918501610aa3565b60408401519091906001600160401b0381116106ee5783610074918601610aa3565b60608501519094906001600160401b0381116106ee5781019284601f850112156106ee578351956100ac6100a788610af4565b610a6a565b9460208689815201906020829960051b820101908882116106ee57602001915b818310610a4a57505050608083015180600f0b81036106ee5760a08401516001600160401b0381116106ee5784019680601f890112156106ee5787516101146100a782610af4565b986020808b848152019260051b8201019283116106ee57602001905b828210610a3a5750505060c08401519760e0850151926101536101008701610a8f565b610120870151979095906001600160a01b03891689036106ee57610140880151976001600160a01b03891689036106ee576101600151986001600160a01b038a168a036106ee5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00556080526001600160a01b03168015610a27575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a38051906001600160401b0382116106335760045490600182811c92168015610a1d575b60208310146109405781601f8493116109cf575b50602090601f8311600114610969575f9261095e575b50508160011b915f199060031b1c1916176004555b8051906001600160401b0382116106335760055490600182811c92168015610954575b60208310146109405781601f849311610904575b50602090601f831160011461089e575f92610893575b50508160011b915f199060031b1c1916176005555b60018751111561084e578651906001600160401b0382116106335768010000000000000000821161063357600b5482600b55808310610814575b50600b5f5260205f205f5b8381106107f7575050505060a05285518551036107be5761033a8651610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600654836006558084106107a2575b500160065f5260205f205f5b83811061078e57505050505f5b86518110156104185761271061039c8289610b49565b5110156103e1576103ad8188610b49565b51906006548110156103cd5760019160065f528160205f20015501610386565b634e487b7160e01b5f52603260045260245ffd5b60405162461bcd60e51b815260206004820152600f60248201526e506f6f6c3a20666565203e3d20312560881b6044820152606490fd5b50866127108110156107495760c05262061a8081101561070457801580156106f2575b156106ee5760e052601080546001600160a01b0319166001600160a01b039290921691909117905561012052610100528051905f5b8281106106a7578261048181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600d5483600d5580841061068b575b5001600d5f5260205f205f5b83811061067757846104d181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600f5483600f5580841061065b575b5001600f5f5260205f205f5b8381106106475761052085610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600c5483600c55808410610617575b500190600c5f5260205f20915f5b82811061060357604051614f689081610b5e8239608051818181611b5001528181611da1015281816120f40152612817015260a051818181610f130152610f7f015260c0518181816113480152611733015260e0518181816105ac01528181610c550152818161105d0152818161136e015281816114be0152611c2a01526101005181818161031701526105f70152610120518181816108050152610a720152f35b600190602083519301928186015501610561565b61062d90600c5f5284845f209182019101610b0b565b83610553565b634e487b7160e01b5f52604160045260245ffd5b600190602084519401938184015501610510565b61067190600f5f5284845f209182019101610b0b565b84610504565b6001906020845194019381840155016104c0565b6106a190600d5f5284845f209182019101610b0b565b846104b4565b60018101908181116106da576001600160a01b03906106c69084610b49565b51165f52600e6020528060405f2055610470565b634e487b7160e01b5f52601160045260245ffd5b5f80fd5b506001600160a01b038216151561043b565b60405162461bcd60e51b815260206004820152601960248201527f506f6f6c3a2070726f746f636f6c20666565203e3d20343025000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601560248201527f506f6f6c3a20666c61736820666565203e3d20312500000000000000000000006044820152606490fd5b600190602084519401938184015501610379565b6107b89060065f5284845f209182019101610b0b565b5f61036d565b60405162461bcd60e51b81526020600482015260116024820152700a0deded87440cccacae640d8cadccee8d607b1b6044820152606490fd5b82516001600160a01b031681830155602090920191600101610319565b600b5f52610848907f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9908101908401610b0b565b5f61030e565b60405162461bcd60e51b815260206004820152601360248201527f506f6f6c3a206e656564203e31206173736574000000000000000000000000006044820152606490fd5b015190505f806102bf565b60055f9081528281209350601f198516905b8181106108ec57509084600195949392106108d4575b505050811b016005556102d4565b01515f1960f88460031b161c191690555f80806108c6565b929360206001819287860151815501950193016108b0565b6109309060055f5260205f20601f850160051c81019160208610610936575b601f0160051c0190610b0b565b5f6102a9565b9091508190610923565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610295565b015190505f8061025d565b60045f9081528281209350601f198516905b8181106109b7575090846001959493921061099f575b505050811b01600455610272565b01515f1960f88460031b161c191690555f8080610991565b9293602060018192878601518155019501930161097b565b60045f52610a17907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f850160051c8101916020861061093657601f0160051c0190610b0b565b5f610247565b91607f1691610233565b631e4fbdf760e01b5f525f60045260245ffd5b8151815260209182019101610130565b82516001600160a01b03811681036106ee578152602092830192016100cc565b6040519190601f01601f191682016001600160401b0381118382101761063357604052565b51906001600160a01b03821682036106ee57565b81601f820112156106ee578051906001600160401b03821161063357610ad2601f8301601f1916602001610a6a565b92828452602083830101116106ee57815f9260208093018386015e8301015290565b6001600160401b0381116106335760051b60200190565b818110610b16575050565b5f8155600101610b0b565b90610b2e6100a783610af4565b8281528092610b3f601f1991610af4565b0190602036910137565b80518210156103cd5760209160051b01019056fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c908163017504b614612b1b57508063017cf66114612a8957806306fdde0314612940578063095ea7b31461283b5780630d246214146127cd5780630eeee627146119a457806318160ddd146119685780631f3a0e411461192757806323b872dd14611790578063313ce5671461175657806331596a6a146116fd57806341c0e1b514611667578063476e44b614611519578063491e7998146113f15780635cffe9de146112115780636863f5bc146110805780636b4082d1146110275780636b7b911214610fa55780636bba3f2f14610f495780636d8d0ff314610e8e5780636ff97f1d14610d8e57806370a0823114610d2b578063715018a614610c8f57806379a68d5314610b6b5780638da5cb5b14610b1a5780638e499bcf14610ade578063939f5ea414610a965780639517606614610a2757806395d89b41146108cd5780639af1d35a1461082e578063a1af5b9a14610765578063a9059cbb14610715578063b3f1c93d14610648578063cb717f3a146104f3578063cce516b7146104a1578063d516b8c614610416578063dd62ed3e1461039d578063e4b50cb81461033b578063f0d1ae4f146102cc5763f2fde38b0361000f57346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610228612c2a565b610230613288565b16801561029d5773ffffffffffffffffffffffffffffffffffffffff8254827fffffffffffffffffffffffff00000000000000000000000000000000000000008216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b6024827f1e4fbdf700000000000000000000000000000000000000000000000000000000815280600452fd5b80fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff61038d600435612cfa565b90549060031b1c16604051908152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff60406103ec612c2a565b92826103f6612c4d565b9416815260026020522091165f52602052602060405f2054604051908152f35b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043590602435916064359182600f0b83036102c95761049d61047985858561046f83826133ad565b9260443591612f95565b92505050604093919351938493846040919493926060820195825260208201520152565b0390f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff60105416604051908152f35b5060a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761049d61062b61061c61052f612c2a565b610537612c4d565b60443573ffffffffffffffffffffffffffffffffffffffff610558826132d4565b9281604051957f3dd3c8050000000000000000000000000000000000000000000000000000000060208801521660248601521660448401526064830152606435608483015260843560a483015260c48201527f000000000000000000000000000000000000000000000000000000000000000060e482015260e481526105e061010482612cb9565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166132f4565b60208082518301019101612f29565b604080519384526020840192909252908201529081906060820190565b5060807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f161067e612c2a565b73ffffffffffffffffffffffffffffffffffffffff61069b612c4d565b81604051937fb3f1c93d00000000000000000000000000000000000000000000000000000000602086015216602484015216604482015260443560648201526064356084820152608481526105e060a482612cb9565b602081519181808201938492010103126107115760209051604051908152f35b5f80fd5b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761075a610750612c2a565b6024359033613163565b602060405160018152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761082a73ffffffffffffffffffffffffffffffffffffffff60105416604051907f2a54db010000000000000000000000000000000000000000000000000000000060208301526024820152602481526107ee604482612cb9565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166132f4565b5080f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760405180916020600654928381520191600682527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f915b8181106108b75761049d856108ab81870382612cb9565b60405191829182612ba9565b8254845260209093019260019283019201610894565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576040519080600554908160011c91600181168015610a1d575b6020841081146109f0578386529081156109ab575060011461094e575b61049d8461094281860382612cb9565b60405191829182612be2565b600581527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0939250905b8082106109915750909150810160200161094282610932565b919260018160209254838588010152019101909291610978565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208087019190915292151560051b850190920192506109429150839050610932565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b92607f1692610915565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020610ad66024356004356133ad565b604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600b54604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b5060e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610b9e612c2a565b90610ba7612c4d565b906044356064356084359182600f0b809303610c8b5760c435938415158095036102c95761049d61062b61061c89898989898973ffffffffffffffffffffffffffffffffffffffff610bf98383612f44565b9581604051987f8a3d858d0000000000000000000000000000000000000000000000000000000060208b01521660248901521660448701526064860152608485015260a484015260a43560c484015260e48301526101048201527f000000000000000000000000000000000000000000000000000000000000000061012482015261012481526107ee61014482612cb9565b8380fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610cc6613288565b8073ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604060209173ffffffffffffffffffffffffffffffffffffffff610d7d612c2a565b168152600183522054604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604051806020600b5491828152018091600b85527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db990855b818110610e625750505082610e0b910383612cb9565b604051928392602084019060208552518091526040840192915b818110610e33575050500390f35b825173ffffffffffffffffffffffffffffffffffffffff16845285945060209384019390920191600101610e25565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610df5565b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f1610ec4612c2a565b73ffffffffffffffffffffffffffffffffffffffff604051917fc5eabfb900000000000000000000000000000000000000000000000000000000602084015216602482015260243560448201527f0000000000000000000000000000000000000000000000000000000000000000600f0b6064820152606481526105e0608482612cb9565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f0000000000000000000000000000000000000000000000000000000000000000600f0b8152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610ff2612c2a565b610ffa613288565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000601054161760105580f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c95760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576110b8612c2a565b6110c0612c4d565b90608435801515809103610c8b5773ffffffffffffffffffffffffffffffffffffffff6111429381604051947f6863f5bc0000000000000000000000000000000000000000000000000000000060208701521660248501521660448301526044356064830152606435608483015260a482015260a481526105e060c482612cb9565b805181019060208181840193031261120d5760208101519067ffffffffffffffff8211610c8b57019181603f840112156102c95760208301519267ffffffffffffffff84116111e0578360051b91604051946111a16020850187612cb9565b855260208080870194840101019384116102c95750604001905b8282106111d0576040518061049d8682612ba9565b81518152602091820191016111bb565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8280fd5b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043573ffffffffffffffffffffffffffffffffffffffff81168091036113e95761126a612c4d565b60643567ffffffffffffffff8111610c8b5736602382011215610c8b5780600401359067ffffffffffffffff82116113ed5736602483830101116113ed576113c3937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f846107ee9560246101049673ffffffffffffffffffffffffffffffffffffffff6040519a8b987fe49cd4750000000000000000000000000000000000000000000000000000000060208b0152848a0152166044880152604435606488015260c060848801528260e48801520186860137888582860101527f000000000000000000000000000000000000000000000000000000000000000060a48501527f000000000000000000000000000000000000000000000000000000000000000060c48501520116810103017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612cb9565b6020818051810103126113e957602001518015158091036113e957602090604051908152f35b5080fd5b8480fd5b50346102c95760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957611429612c2a565b611431612c4d565b906064359160a4358015158091036113ed578373ffffffffffffffffffffffffffffffffffffffff6114656114f4966132d4565b9381604051967f8d01fa440000000000000000000000000000000000000000000000000000000060208901521660248701521660448501526044356064850152608484015260843560a484015260c483015260e48201527f000000000000000000000000000000000000000000000000000000000000000061010482015261010481526105e061012482612cb9565b6040818051810103126113e95780604060208193015191015182519182526020820152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576060602060405161155881612c70565b83815201526040519061156a82612c70565b600954600f0b825260405191600a548084528360208101600a8552602085209285905b80600183011061163b576115b6945491818110611627575b10611616575b509493940383612cb9565b6020810191825260405192839260208452606084019251600f0b6020850152519160408085015282518091526020608085019301915b8181106115fa575050500390f35b8251600f0b8452859450602093840193909201916001016115ec565b60801d600f0b81526020015f6115ab565b92602060019184600f0b81520193016115a5565b9160029193506040600191865480600f0b825260801d600f0b602082015201940192018692939161158d565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761169e613288565b60085460ff8116156116ae575080f35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001176008557f0f8eeedbc400fd6686703559f58d1e6143fdaed533f19a86c93d67a2fe4fb3318180a180f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405160128152f35b50346102c95760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576117c8612c2a565b6117d0612c4d565b6044359173ffffffffffffffffffffffffffffffffffffffff811680855260026020526040852073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f2054907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821061184d575b505061075a9350613163565b8482106118f35780156118c757331561189b578560409161075a975260026020522073ffffffffffffffffffffffffffffffffffffffff33165f526020528360405f20910390555f80611841565b6024867f94280d6200000000000000000000000000000000000000000000000000000000815280600452fd5b6024867fe602df0500000000000000000000000000000000000000000000000000000000815280600452fd5b60648686847ffb8f41b200000000000000000000000000000000000000000000000000000000835233600452602452604452fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060ff600854166040519015158152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600354604051908152f35b506101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576119d8612c2a565b602435917fffffffff00000000000000000000000000000000000000000000000000000000831690818403610711576044359173ffffffffffffffffffffffffffffffffffffffff83169485840361071157606435956084359560c4359687600f0b9687890361071157610104359860e4358a15158b036107115760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146127a55760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005560ff6008541661274757801590811561273c575b50156126de57611ad390611ac8848d612f44565b9060a435858e612f95565b9c859e95979392949f915073ffffffffffffffffffffffffffffffffffffffff611afc83612cfa565b90549060031b1c169a73ffffffffffffffffffffffffffffffffffffffff611b2386612cfa565b90549060031b1c169c80155f1461236c57505050878a73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169889821480612362575b1561228b57505050863b15610711575f8e976004604051809a81937fd0e30db00000000000000000000000000000000000000000000000000000000083525af1968715612280578f908f908f99612269575b50611c03611c25915b611bfe611be186612d3f565b90549060031b1c611bf187612d57565b90549060031b1c90612dd9565b612dd9565b91611c20611c1087612d3f565b90549060031b1c611bf188612d57565b612d9f565b908d987f00000000000000000000000000000000000000000000000000000000000000009081151580612260575b6121d7575b5050611cf691611cd8611c99611ced93611c83611c7488612d57565b90549060031b1c821015612e30565b611c8c87612d57565b90549060031b1c90612d9f565b611ca286612d3f565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b611ce4611c7487612d57565b611c8c86612d57565b611ca285612d3f565b8b82600f0b1315612179578b84600f0b131561211b57611d7f93611d6782611d3f611d39611d3f96611d2a611d3997613102565b90549060031b1c600f0b6134d7565b91613102565b9091906fffffffffffffffffffffffffffffffff83549160031b928116831b921b1916179055565b611d7084613102565b90549060031b1c600f0b613514565b806120dc575b156120165773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b156120125787809160248d60405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af18015612007579188918c93611fe9575b5081809381925af13d15611fe4573d67ffffffffffffffff8111611fb75760405190611e6460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160183612cb9565b81528760203d92013e5b15611f59577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a0915b611ea3818a612d9f565b73ffffffffffffffffffffffffffffffffffffffff604051931683528a60208401528b604084015260608301526080820152a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015611f28575b50505061049d90604051938493846040919493926060820195825260208201520152565b8280809381938290611f50575b3390f115611f44578080611f04565b604051903d90823e3d90fd5b506108fc611f35565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b611e6e565b611ff69193508290612cb9565b61200357868a915f611e10565b8680fd5b6040513d8a823e3d90fd5b8780fd5b506040517fa9059cbb0000000000000000000000000000000000000000000000000000000087528360045289602452602087604481808a5af19060018851148216156120bb575b6040521561208f577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a091611e99565b602486867f5274afe7000000000000000000000000000000000000000000000000000000008252600452fd5b9060018115166120d357863b15153d1516169061205d565b503d87823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168614611d85565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a20616d6f756e744f7574203c3d20300000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4d53523a20616d6f756e74496e203c3d2030000000000000000000000000006044820152fd5b611ced929a50611c99620f42406121f5611cf69694611cd894612de6565b049b8c612208575b93505050918f611c58565b61225b8d6122276122188a612d57565b91909283548360031b1c612dd9565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b6121fd565b50801515611c53565b612276919e505f90612cb9565b5f9c611c03611bcc565b6040513d5f823e3d90fd5b60209293949596979899505f80809360649373ffffffffffffffffffffffffffffffffffffffff604051987f23b872dd00000000000000000000000000000000000000000000000000000000855216600452306024526044525af19060015f5114821615612341575b6040525f6060521561231557908b95949392918e611c258f611c0390611bd5565b887f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b906001811516612359578a3b15153d151616906122f4565b503d5f823e3d90fd5b5080341015611b7a565b92985090917c01000000000000000000000000000000000000000000000000000000000361253257506124ae576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526020816024818d5afa8015612280578e915f91612477575b50612404906123fe6123ee8a612d3f565b90549060031b1c611bf18b612d57565b90612d9f565b03612419578b958e611c258f611c0390611bd5565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496e636f72726563742070726566756e64696e6720616d6f756e7400000000006044820152fd5b9150506020813d6020116124a6575b8161249360209383612cb9565b8101031261071157518d906124046123dd565b3d9150612486565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f50726566756e64696e672063616e6e6f7420626520757365642077697468206160448201527f206c696d697420707269636500000000000000000000000000000000000000006064820152fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015291506020826024818e5afa918215612280578f905f936126a6575b50602492916125aa916040519160208301528d858301526044820152604481526125a4606482612cb9565b8a613457565b5060208b604051938480927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa8015612280578f925f9161266d575b50906125fa91612d9f565b0361260f578b958e611c258f611c0390611bd5565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e742066756e647300000000000000000000000000006044820152fd5b919250506020813d60201161269e575b8161268a60209383612cb9565b8101031261071157518e91906125fa6125ef565b3d915061267d565b9250506020823d6020116126d6575b816126c260209383612cb9565b81010312610711579051908e6125aa612579565b3d91506126b5565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f737761703a20646561646c696e652065786365656465640000000000000000006044820152fd5b90504211155f611ab4565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346107115760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157612872612c2a565b6024359033156129145773ffffffffffffffffffffffffffffffffffffffff169081156128e857335f52600260205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576040515f6004548060011c90600181168015612a7f575b602083108114612a5257828552908115612a1057506001146129b2575b61049d8361094281850382612cb9565b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b8082106129f6575090915081016020016109426129a2565b9192600181602092548385880101520191019092916129de565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b8401909101915061094290506129a2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691612985565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157604051806020600d54918281520190600d5f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5905f5b818110612b055761049d856108ab81870382612cb9565b8254845260209093019260019283019201612aee565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157600c548082526020820190600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7905f5b818110612b935761049d856108ab81870382612cb9565b8254845260209093019260019283019201612b7c565b60206040818301928281528451809452019201905f5b818110612bcc5750505090565b8251845260209384019390920191600101612bbf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6040810190811067ffffffffffffffff821117612c8c57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612c8c57604052565b600b54811015612d1257600b5f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600f54811015612d1257600f5f5260205f2001905f90565b600c54811015612d1257600c5f5260205f2001905f90565b600d54811015612d1257600d5f5260205f2001905f90565b600654811015612d125760065f5260205f2001905f90565b91908203918211612dac57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b91908201809211612dac57565b81810292918115918404141715612dac57565b8115612e03570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b15612e3757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f62616c616e6365203c2070726f746f636f6c206f7765640000000000000000006044820152fd5b90604051918281549182825260208201905f5260205f20925f905b806001830110612efd57612ed6945491818110612ee9575b10612ed8575b500383612cb9565b565b60801d600f0b81526020015f612ece565b92602060019184600f0b8152019301612ec8565b9160029193506040600191865480600f0b825260801d600f0b6020820152019401920185929391612eb0565b90816060910312610711578051916040602083015192015190565b9190826103e8026103e881048403612dac5781612f6091612dd9565b90815f52600760205260405f2054938415612f7a57505050565b612f859294506133ad565b915f5260076020528160405f2055565b92949394919091612fc1612fa987846133ca565b9050612fb486612d6f565b90549060031b1c9061356a565b905f82600f0b13156130a457612fd8918486613794565b919092612ff78394612fea8197612d6f565b90549060031b1c906133ec565b925f92849880613083575b5088116130255761301561302292612d6f565b90549060031b1c90613c6b565b94565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f737761703a207472616e736665722065786365656473206d61780000000000006044820152fd5b9098506130929193508461341e565b9161309d8385612dd9565b975f613002565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761703a20696e70757420746f6f20736d616c6c20616674657220666565006044820152fd5b90600a54821015612d1257600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b9190918054831015612d12575f52601060205f208360011c019260041b1690565b73ffffffffffffffffffffffffffffffffffffffff1690811561325c5773ffffffffffffffffffffffffffffffffffffffff1691821561323057815f52600160205260405f20548181106131fe57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f52600184520360405f2055845f526001825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff5f541633036132a857565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b600654156132ef576132e590612d87565b90549060031b1c90565b505f90565b905f8091602081519101845af4808061339a575b1561331a575050613317613551565b90565b156133615773ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b3d15613372576040513d5f823e3d90fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b503d1515806133085750813b1515613308565b90611bf16133bd61331793612d87565b90549060031b1c91612d87565b919080156133e6576133df613317918461341e565b8093612d9f565b505f9190565b6134006133f98383613c6b565b928361356a565b90600f0b90600f0b126134105790565b60018101809111612dac5790565b9080156134515761342e91612de6565b620f4240810190818111612dac57620f423f01908111612dac57620f4240900490565b50505f90565b905f809160208151910182855af1808061339a571561331a575050613317613551565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd575b1561071157600f0b90565b506f7fffffffffffffffffffffffffffffff8113156134b2565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b604051903d82523d5f602084013e60203d830101604052565b81156107115777ffffffffffffffffffffffffffffffffffffffffffffffff81116135e2579061359c9160401b612df9565b6fffffffffffffffffffffffffffffffff8111610711576fffffffffffffffffffffffffffffffff166f7fffffffffffffffffffffffffffffff811161071157600f0b90565b60c09181831c8093640100000000821015613787575b6002826201000061368594101561377b575b61010081101561376f575b6010811015613763575b6004811015613758575b1015613750575b8360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b612df9565b926fffffffffffffffffffffffffffffffff8411610711578160801c8402906fffffffffffffffffffffffffffffffff8316850290809460401b90828210613726575b5003928160801b918285106136fd575b60801c036136f2576136ea9203612df9565b905b0161359c565b5050506001906136ec565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906136d8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f6136c8565b600101613630565b91810191811c613629565b6004928301921c61361f565b6008928301921c613615565b6010928301921c61360a565b505060e082811c906135f8565b9193929093600a5480841080613c62575b15613c0457600203613bec576137c36137be600a612e95565b61415f565b946137d25f87600f0b13613cc6565b6137e2600954600f0b9687613e4d565b5f81600f0b1315613bd9576137f681613d2b565b6138328161382d61380889600a613142565b90549060031b1c600f0b61381d87600a613142565b90549060031b1c600f0b90613514565b613e4d565b9085600f0b5f81136139a3575b505f600f83900b1261399557815b67028f5c28f5c28f5c90600f0b13613980576138699085613e4d565b80600f0b915f83131561396a57678000000000000000831361396a57906138c46138e59493926138be6138b8671999999999999999946138b26138ac8280613e4d565b9461347a565b90613e4d565b91613d7b565b90613514565b916138cf8380613e4d565b91600f0b1261394157906138be6138b292613d7b565b9384600f0b965f881315613921576138fe83600a613142565b90549060031b1c600f0b881215613921575f849698126139215750505050509190565b90919293945061393d959650613937600a612e95565b90613ed3565b9091565b61396461395e836138be6139586138b29686613e4d565b94613d7b565b91613dc1565b906134d7565b5050505090919261393d9495613937600a612e95565b50505090919261393d9495613937600a612e95565b61399e82613e8d565b61384d565b6139b08380979397613e4d565b680600000000000000006139d46139c78684613e4d565b926139646138b88861347a565b9160401b60170b05907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082121580613bbf575b1561071157613a1991600f0b906134d7565b9081600f0b1215613b3a57613a4f7fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009188613e07565b600f0b017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613b20575b1561071157600f0b5f8112613b1257805b671999999999999999600f0b90600f0b13613afb578061396461395e613ab783613ac595613e4d565b926138be6139588286613e4d565b5f81600f0b1315613afb57613ada9084613e4d565b9080600f0b82600f0b125f14613af35750935b5f61383f565b949050613aed565b509495929350505061393d9495613937600a612e95565b613b1b81613e8d565b613a8e565b506f7fffffffffffffffffffffffffffffff811315613a7d565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4c4d53523a206c696d69745072696365203c3d2063757272656e74207072696360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152608490fd5b506f7fffffffffffffffffffffffffffffff821315613a07565b5090919261393d9495613937600a612e95565b90919361393d9394600954600f0b613937600a612e95565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4c4d53523a2069647800000000000000000000000000000000000000000000006044820152fd5b508086106137a5565b811561345157600f0b5f8112610711576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116107115760401b81198111610711570190565b15613ccd57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b600f0b801561071157700100000000000000000000000000000000057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b680200000000000000009060401b60170b057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b680300000000000000009060401b60170b057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b90600f0b9081156107115760401b60170b057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081600f0b14610711575f03600f0b90565b8051821015612d125760209160051b010190565b95949093613f1790939293613f34613f2f613f01839a613ef28a61415f565b9061382d5f83600f0b13613cc6565b9661382d613f0e89613d2b565b9586928b613ebf565b51600f0b613f25898c613ebf565b51600f0b90613514565b614194565b9280600f0b5f81136140a1575b505090613f4d91613e4d565b6820000000000000000081600f0b1361401d57613f2f613f6c91613e8d565b600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580614003575b1561071157613fbf91613fba91600f0b90613e4d565b61347a565b925f84600f0b1315613fef5750506138b2613fd9926141f1565b905f82600f0b1315613fe757565b5f9250829150565b909150613ffc9250613ebf565b51600f0b90565b506f7fffffffffffffffffffffffffffffff811315613fa4565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4c4d53523a20612f6220746f6f206c617267652028776f756c64206f7665726660448201527f6c6f7720657870290000000000000000000000000000000000000000000000006064820152fd5b84600f9a939a0b1215613b3a57836140b891613e07565b5f81600f0b1315614101576140cf6140d5916141f1565b86613e4d565b9780600f0b89600f0b125f146140f5575050613f4d90875b90915f613f41565b613f4d929198506140ed565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4d53523a20726174696f3c3d300000000000000000000000000000000000006044820152fd5b5f90815b815183101561418e5761418660019161417c8585613ebf565b51600f0b906134d7565b920191614163565b91505090565b600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000081126132ef57700171547652b82fe1777d0ffda0d23a7d12613317910260801d600f0b61431e565b600f0b5f811315610711575f908068010000000000000000821215614311575b806401000000006002921215614305575b620100008112156142f9575b6101008112156142ed575b60108112156142e1575b60048112156142d6575b12156142cc575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f83136142b057506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d90565b8002908160ff1c9182607f011c918302019160011d919061428b565b9060010190614254565b92810192811d61424d565b6004938401931d614243565b6008938401931d614239565b6010938401931d61422e565b6020938401931d614222565b506040915080821d614211565b80600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc000000000000000008112613451576f80000000000000000000000000000000915f6780000000000000008216600f0b13614f1a575b5f6740000000000000008216600f0b13614efd575b5f6720000000000000008216600f0b13614ee0575b5f6710000000000000008216600f0b13614ec3575b5f6708000000000000008216600f0b13614ea6575b5f6704000000000000008216600f0b13614e89575b5f6702000000000000008216600f0b13614e6c575b5f6701000000000000008216600f0b13614e4f575b5f66800000000000008216600f0b13614e32575b5f66400000000000008216600f0b13614e15575b5f66200000000000008216600f0b13614df8575b5f66100000000000008216600f0b13614ddb575b5f66080000000000008216600f0b13614dbe575b5f66040000000000008216600f0b13614da1575b5f66020000000000008216600f0b13614d84575b5f66010000000000008216600f0b13614d67575b5f658000000000008216600f0b13614d4a575b5f654000000000008216600f0b13614d2d575b5f652000000000008216600f0b13614d10575b5f651000000000008216600f0b13614cf3575b5f650800000000008216600f0b13614cd6575b5f650400000000008216600f0b13614cb9575b5f650200000000008216600f0b13614c9c575b5f650100000000008216600f0b13614c7f575b5f6480000000008216600f0b13614c62575b5f6440000000008216600f0b13614c45575b5f6420000000008216600f0b13614c28575b5f6410000000008216600f0b13614c0b575b5f6408000000008216600f0b13614bee575b5f6404000000008216600f0b13614bd1575b5f6402000000008216600f0b13614bb4575b5f6401000000008216600f0b13614b97575b5f63800000008216600f0b13614b7a575b5f63400000008216600f0b13614b5d575b5f63200000008216600f0b13614b40575b5f63100000008216600f0b13614b23575b5f63080000008216600f0b13614b06575b5f63040000008216600f0b13614ae9575b5f63020000008216600f0b13614acc575b5f63010000008216600f0b13614aaf575b5f628000008216600f0b13614a92575b5f624000008216600f0b13614a75575b5f622000008216600f0b13614a58575b5f621000008216600f0b13614a3b575b5f620800008216600f0b13614a1e575b5f620400008216600f0b13614a01575b5f620200008216600f0b136149e4575b5f620100008216600f0b136149c7575b5f6180008216600f0b136149aa575b5f6140008216600f0b1361498d575b5f6120008216600f0b13614970575b5f6110008216600f0b13614953575b5f6108008216600f0b13614936575b5f6104008216600f0b13614919575b5f6102008216600f0b136148fc575b5f6101008216600f0b136148df575b5f60808216600f0b136148c2575b5f60408216600f0b136148a5575b5f60208216600f0b13614888575b5f60108216600f0b1361486b575b5f60088216600f0b1361484e575b5f60048216600f0b13614831575b5f60028216600f0b13614813575b60015f9116600f0b136147f6575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161071157600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c906147cc565b7001000000000000000162e42fefa39ef35890920260801c916147be565b9170010000000000000002c5c85fdf473de6b20260801c916147b0565b91700100000000000000058b90bfbe8e7bcd6d0260801c916147a2565b917001000000000000000b17217f7d1cf79afa0260801c91614794565b91700100000000000000162e42fefa39ef366f0260801c91614786565b917001000000000000002c5c85fdf473de6eca0260801c91614778565b9170010000000000000058b90bfbe8e7bce5440260801c9161476a565b91700100000000000000b17217f7d1cf79e9490260801c9161475c565b9170010000000000000162e42fefa39ef44d910260801c9161474d565b91700100000000000002c5c85fdf473dea871f0260801c9161473e565b917001000000000000058b90bfbe8e7bdcbe2e0260801c9161472f565b9170010000000000000b17217f7d1cf7d83c1a0260801c91614720565b917001000000000000162e42fefa39f02b772c0260801c91614711565b9170010000000000002c5c85fdf473e242ea380260801c91614702565b91700100000000000058b90bfbe8e7cc35c3f00260801c916146f3565b917001000000000000b17217f7d1cfb72b45e10260801c916146e4565b91700100000000000162e42fefa39fe95583c20260801c916146d4565b917001000000000002c5c85fdf4741bea6e77e0260801c916146c4565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c916146b4565b91700100000000000b17217f7d1d351a389d400260801c916146a4565b9170010000000000162e42fefa3ae53369388c0260801c91614694565b91700100000000002c5c85fdf477b662b269450260801c91614684565b917001000000000058b90bfbe8f71cb4e4b33d0260801c91614674565b9170010000000000b17217f7d20cf927c8e94c0260801c91614664565b917001000000000162e42fefa494f1478fde050260801c91614653565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c91614642565b91700100000000058b90bfbe9ddbac5e109cce0260801c91614631565b917001000000000b17217f7d5a7716bba4a9ae0260801c91614620565b91700100000000162e42fefb2fed257559bdaa0260801c9161460f565b917001000000002c5c85fdf84bd62ae30a74cc0260801c916145fe565b9170010000000058b90bfbf8479bd5a81b51ad0260801c916145ed565b91700100000000b17217f80f4ef5aadda455540260801c916145dc565b9170010000000162e42ff0999ce3541b9fffcf0260801c916145ca565b91700100000002c5c85fe31f35a6a30da1be500260801c916145b8565b917001000000058b90bfcdee5acd3c1cedc8230260801c916145a6565b9170010000000b17217fba9c739aa5819f44f90260801c91614594565b917001000000162e42fff037df38aa2b219f060260801c91614582565b9170010000002c5c8601cc6b9e94213c72737a0260801c91614570565b91700100000058b90c0b48c6be5df846c5b2ef0260801c9161455e565b917001000000b1721835514b86e6d96efd1bfe0260801c9161454c565b91700100000162e430e5a18f6119e3c02282a50260801c91614539565b917001000002c5c863b73f016468f6bac5ca2b0260801c91614526565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91614513565b91700100000b1721bcfc99d9f890ea069117630260801c91614500565b9170010000162e43f4f831060e02d839a9d16d0260801c916144ed565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c916144da565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c916144c7565b9170010000b17255775c040618bf4a4ade83fc0260801c916144b4565b917001000162e525ee054754457d59952920260260801c916144a0565b9170010002c5cc37da9491d0985c348c68e7b30260801c9161448c565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91614478565b917001000b175effdc76ba38e31671ca9397250260801c91614464565b91700100162f3904051fa128bca9c55c31e5df0260801c91614450565b917001002c605e2e8cec506d21bfc89a23a00f0260801c9161443c565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c91614428565b91700100b1afa5abcbed6129ab13ec11dc95430260801c91614414565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c916143ff565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c916143ea565b917001059b0d31585743ae7c548eb68ca417fd0260801c916143d5565b9170010b5586cf9890f6298b92b71842a983630260801c916143c0565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c916143ab565b917001306fe0a31b7152de8d5a46305c85edec0260801c91614396565b6fb504f333f9de6484597d89b3754abe9f925061438156fea264697066735822122043bf74af2633e25ab2330d593dbfd1d52cff0bf909bfe29106cc479fea7a2a7864736f6c634300081e0033a2646970667358221220b239ec7074b6ad8ed4d821ee3ca0df1ddb2b42479ef3dd6fa0a5e9cd87baad7564736f6c634300081e0033610140346103f557601f6136f238819003918201601f19168301916001600160401b038311848410176103f957808492610100946040528339810103126103f5576100498161040d565b60208201519091906001600160a01b03811681036103f55760408201516001600160a01b03811691908281036103f5576060840151906001600160a01b038216908183036103f55761009d6080870161040d565b936100aa60a0880161040d565b956100bc60e060c08a0151990161040d565b986001600160a01b03169182156103e2575f80546001600160a01b031981168517825560405194916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a360e0521561038f575060a05215610339576080526001600160a01b038116156102e357610100526001600160a01b038116156102785761012052620f42408110156102335760c052600180546001600160a01b0319166001600160a01b03929092169190911790556040516132d09081610422823960805181818161052101528181610f5d015281816117490152612683015260a0518181816104f80152818161101c01528181611720015261265a015260c0518181816104a2015281816116ca015281816122fe0152612604015260e0518181816104cf0152818161108a015281816116f70152612631015261010051818181610a7b01528181611bb40152612a760152610120518181816103310152818161155901526124970152f35b60405162461bcd60e51b815260206004820152601c60248201527f506c616e6e65723a2070726f746f636f6c20666565203e3d2070706d000000006044820152606490fd5b60405162461bcd60e51b815260206004820152603660248201527f506c616e6e65723a2062616c616e6365642070616972206465706c6f7965722060448201527f616464726573732063616e6e6f74206265207a65726f000000000000000000006064820152608490fd5b60405162461bcd60e51b815260206004820152602860248201527f506c616e6e65723a206465706c6f79657220616464726573732063616e6e6f74604482015267206265207a65726f60c01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602860248201527f506c616e6e65723a206d696e74496d706c20616464726573732063616e6e6f74604482015267206265207a65726f60c01b6064820152608490fd5b62461bcd60e51b815260206004820152602860248201527f506c616e6e65723a2073776170496d706c20616464726573732063616e6e6f74604482015267206265207a65726f60c01b6064820152608490fd5b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036103f55756fe60806040526004361015610011575f80fd5b5f3560e01c806314c870c014612ab157806360cf7d4a146123215780636b4082d1146122c95780636b7b911214612247578063715018a6146121ad5780638da5cb5b1461215d5780639a043832146120ec5780639f181b5e146120b1578063a4689b24146110d4578063a7753f09146110ae578063ac210cc714611040578063c405e44214610fd2578063cce516b714610f81578063f0d1ae4f14610f13578063f2fde38b14610e27578063f317672514610dbf578063f525cb6814610d84578063f63772fc146101515763f70a3a17146100ea575f80fd5b3461014d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5773ffffffffffffffffffffffffffffffffffffffff610136612afb565b165f526006602052602060405f2054604051908152f35b5f80fd5b3461014d576101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5760043567ffffffffffffffff811161014d576101a1903690600401612bae565b60243567ffffffffffffffff811161014d576101c1903690600401612bae565b9060443567ffffffffffffffff811161014d576101e2903690600401612c3a565b906101eb612cb5565b926101f4612d22565b906101fd612d31565b93610206612d54565b956101243567ffffffffffffffff811161014d5761022b909695963690600401612cc5565b61016435966102386131d5565b83519861025d6102478b612c22565b9a6102556040519c8d612b6d565b808c52612c22565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe060208c01910136823760843560011c985f5b87518110156102af57808b6102a88f93600194612e6f565b5201610290565b50908b918b6102bc6131d5565b8015908115610d79575b5015610d1b578751865103610c975773ffffffffffffffffffffffffffffffffffffffff16928315610c135773ffffffffffffffffffffffffffffffffffffffff16958615610b8f57600f0b985f8a1315610b31578251885103610aad5780610aa2575b15610a79577f00000000000000000000000000000000000000000000000000000000000000009198905b5f5473ffffffffffffffffffffffffffffffffffffffff169160015473ffffffffffffffffffffffffffffffffffffffff16906040519b8c947f6ae73ce3000000000000000000000000000000000000000000000000000000008652600486015260248501610180905261018485016103cd9089612f54565b8581037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc016044870152610401908d612f54565b8581037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc016064870152610435908c612f97565b9160848601528482037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0160a4860152519081815260200192905f5b818110610a60575050505f73ffffffffffffffffffffffffffffffffffffffff8460209694819460a43560c48401527f000000000000000000000000000000000000000000000000000000000000000060e4840152610104830152827f000000000000000000000000000000000000000000000000000000000000000016610124830152827f000000000000000000000000000000000000000000000000000000000000000016610144830152827f0000000000000000000000000000000000000000000000000000000000000000166101648301520393165af1968715610904575f97610a0f575b5061056487612fe0565b73ffffffffffffffffffffffffffffffffffffffff871691825f52600460205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790555f5b86518110156106d05773ffffffffffffffffffffffffffffffffffffffff6105db8289612e6f565b511690815f52600560205260ff60405f20541615610611575b6001915f52600660205261060b8a60405f20613050565b016105b3565b60035491680100000000000000008310156106a3578061066661063b856001809701600355612e15565b819391549073ffffffffffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b9055805f52600560205260405f20837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905591506105f4565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b509087837ff45e30d37dc5ef98e17708308b886213b8f485ea52d495067eed8d4977423f2261071589956107316107238d604051948594606086526060860190612f54565b908482036020860152612f54565b828103604084015288612f97565b0390a25f5b835181101561095b576107498187612e6f565b51610757575b600101610736565b73ffffffffffffffffffffffffffffffffffffffff6107768286612e6f565b51166107828288612e6f565b51604051907f23b872dd000000000000000000000000000000000000000000000000000000005f52856004528760245260445260205f60648180865af19060015f511482161561093a575b6040525f6060521561090f57506024602073ffffffffffffffffffffffffffffffffffffffff6107fd8488612e6f565b5116604051928380927f70a082310000000000000000000000000000000000000000000000000000000082528a60048301525afa908115610904575f916108d3575b5061084a8288612e6f565b511461074f5760846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f6665652d6f6e2d7472616e7366657220746f6b656e73206e6f7420737570706f60448201527f72746564000000000000000000000000000000000000000000000000000000006064820152fd5b90506020813d82116108fc575b816108ed60209383612b6d565b8101031261014d57518861083f565b3d91506108e0565b6040513d5f823e3d90fd5b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b90600181151661095257823b15153d151616906107cd565b503d5f823e3d90fd5b6040517f6d8d0ff300000000000000000000000000000000000000000000000000000000815260048101889052610144356024820152826020826044815f8b5af1918215610904575f926109db575b506040805173ffffffffffffffffffffffffffffffffffffffff9092168252602082019290925290819081015b0390f35b9091506020813d602011610a07575b816109f760209383612b6d565b8101031261014d575190826109aa565b3d91506109ea565b9096506020813d602011610a58575b81610a2b60209383612b6d565b8101031261014d575173ffffffffffffffffffffffffffffffffffffffff8116810361014d57958761055a565b3d9150610a1e565b825185528d955060209485019490920191600101610471565b7f0000000000000000000000000000000000000000000000000000000000000000919890610354565b50600287511461032a565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f506c616e6e65723a206665657320616e6420746f6b656e73206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f506c616e6e65723a206b61707061206d757374206265203e20300000000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f506c616e6e65723a2072656365697665722063616e6e6f74206265207a65726f60448201527f20616464726573730000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f506c616e6e65723a2070617965722063616e6e6f74206265207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f506c616e6e65723a20746f6b656e7320616e64206465706f73697473206c656e60448201527f677468206d69736d6174636800000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f506c616e6e65723a20646561646c696e652065786365656465640000000000006044820152fd5b90504211158b6102c6565b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d576020600254604051908152f35b3461014d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5773ffffffffffffffffffffffffffffffffffffffff610e0b612afb565b165f526004602052602060ff60405f2054166040519015158152f35b3461014d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5773ffffffffffffffffffffffffffffffffffffffff610e73612afb565b610e7b6131d5565b168015610ee75773ffffffffffffffffffffffffffffffffffffffff5f54827fffffffffffffffffffffffff00000000000000000000000000000000000000008216175f55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b7f1e4fbdf7000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461014d576109d76110c86110c236612d78565b9061312b565b60405191829182612b1e565b3461014d576101a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5760043567ffffffffffffffff811161014d57611124903690600401612bae565b60243567ffffffffffffffff811161014d57611144903690600401612bae565b9060443567ffffffffffffffff811161014d57611165903690600401612c3a565b9161116e612cb5565b916084359182600f0b80930361014d5760e43594851515860361014d57611193612d54565b94610124359073ffffffffffffffffffffffffffffffffffffffff821680920361014d576101443567ffffffffffffffff811161014d576111d8903690600401612cc5565b9061018435966111e66131d5565b81600f0b906801000000000000000082121561202d5768010000000000000000811215611fa9578551916001831115611f4b575f1215611eed578068010000000000000000017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580611ed3575b1561014d57600f0b9061126883613221565b927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908111611ea65761129c90613221565b600f0b0260401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580611e8c575b1561014d57600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580611e72575b1561014d57600f90810b92900b8112611e03575f821315611da55761132e91613239565b600f0b5f81138080611d93575b15611d35571561014d575f908068010000000000000000821215611d28575b806401000000006002921215611d1c575b62010000811215611d10575b610100811215611d04575b6010811215611cf8575b6004811215611ced575b1215611ce3575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f8313611cc757506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082600f0b1461014d5761142f915f03600f0b613239565b600f0b5f811315611c6957801561014d57700100000000000000000000000000000000057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580611c4f575b1561014d57600f0b945f861315611bf1576114999796976131d5565b8351986114a86102478b612c22565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe060208c01910136823760a43560011c985f5b87518110156114fa57808b6114f38f93600194612e6f565b52016114db565b50908b918b6115076131d5565b8015908115611be6575b5015610d1b578751865103610c975773ffffffffffffffffffffffffffffffffffffffff16928315610c13578615610b8f578251885103610aad5780611bdb575b15611bb2577f00000000000000000000000000000000000000000000000000000000000000009198905b5f5473ffffffffffffffffffffffffffffffffffffffff169160015473ffffffffffffffffffffffffffffffffffffffff16906040519b8c947f6ae73ce3000000000000000000000000000000000000000000000000000000008652600486015260248501610180905261018485016115f59089612f54565b8581037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc016044870152611629908d612f54565b8581037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01606487015261165d908c612f97565b9160848601528482037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0160a4860152519081815260200192905f5b818110611b99575050505f73ffffffffffffffffffffffffffffffffffffffff8460209694819460c43560c48401527f000000000000000000000000000000000000000000000000000000000000000060e4840152610104830152827f000000000000000000000000000000000000000000000000000000000000000016610124830152827f000000000000000000000000000000000000000000000000000000000000000016610144830152827f0000000000000000000000000000000000000000000000000000000000000000166101648301520393165af1968715610904575f97611b48575b5061178c87612fe0565b73ffffffffffffffffffffffffffffffffffffffff871691825f52600460205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790555f5b86518110156118a05773ffffffffffffffffffffffffffffffffffffffff6118038289612e6f565b511690815f52600560205260ff60405f20541615611839575b6001915f5260066020526118338a60405f20613050565b016117db565b60035491680100000000000000008310156106a3578061186361063b856001809701600355612e15565b9055805f52600560205260405f20837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055915061181c565b509087837ff45e30d37dc5ef98e17708308b886213b8f485ea52d495067eed8d4977423f2261071589956118e56107238d604051948594606086526060860190612f54565b0390a25f5b8351811015611ad0576118fd8187612e6f565b5161190b575b6001016118ea565b73ffffffffffffffffffffffffffffffffffffffff61192a8286612e6f565b51166119368288612e6f565b51604051907f23b872dd000000000000000000000000000000000000000000000000000000005f52856004528760245260445260205f60648180865af19060015f5114821615611ab8575b6040525f6060521561090f57506024602073ffffffffffffffffffffffffffffffffffffffff6119b18488612e6f565b5116604051928380927f70a082310000000000000000000000000000000000000000000000000000000082528a60048301525afa908115610904575f91611a87575b506119fe8288612e6f565b51146119035760846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f6665652d6f6e2d7472616e7366657220746f6b656e73206e6f7420737570706f60448201527f72746564000000000000000000000000000000000000000000000000000000006064820152fd5b90506020813d8211611ab0575b81611aa160209383612b6d565b8101031261014d5751886119f3565b3d9150611a94565b90600181151661095257823b15153d15161690611981565b6040517f6d8d0ff300000000000000000000000000000000000000000000000000000000815260048101889052610164356024820152826020826044815f8b5af1918215610904575f926109db57506040805173ffffffffffffffffffffffffffffffffffffffff9290921682526020820192909252f35b9096506020813d602011611b91575b81611b6460209383612b6d565b8101031261014d575173ffffffffffffffffffffffffffffffffffffffff8116810361014d579587611782565b3d9150611b57565b825185528d955060209485019490920191600101611699565b7f000000000000000000000000000000000000000000000000000000000000000091989061157c565b506002875114611552565b90504211158b611511565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4d53523a206b617070613c3d300000000000000000000000000000000000006044820152fd5b506f7fffffffffffffffffffffffffffffff81131561147d565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4c4d53523a20793c3d30000000000000000000000000000000000000000000006044820152fd5b8002908160ff1c9182607f011c918302019160011d91906113d4565b906001019061139d565b92810192811d611396565b6004938401931d61138c565b6008938401931d611382565b6010938401931d611377565b6020938401931d61136b565b506040915080821d61135a565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4c4d53523a20626164204520726174696f0000000000000000000000000000006044820152fd5b5068010000000000000000821261133b565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4c4d53523a207320746f6f206c6172676520666f72206e0000000000000000006044820152fd5b5f821315611e145761132e91613239565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4c4d53523a2062616420736c697070616765206f72206e0000000000000000006044820152fd5b506f7fffffffffffffffffffffffffffffff81131561130a565b506f7fffffffffffffffffffffffffffffff8113156112cd565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b506f7fffffffffffffffffffffffffffffff811315611256565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4c4d53523a20663d3000000000000000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4c4d53523a206e3e3120726571756972656400000000000000000000000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f506c616e6e65723a20746172676574536c697070616765206d7573742062652060448201527f3c2031202836342e3634290000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f506c616e6e65723a20747261646546726163206d757374206265203c2031202860448201527f36342e36342900000000000000000000000000000000000000000000000000006064820152fd5b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d576020600354604051908152f35b3461014d576121036120fd36612d78565b9061308b565b6040518091602082016020835281518091526020604084019201905f5b81811061212e575050500390f35b825173ffffffffffffffffffffffffffffffffffffffff16845285945060209384019390920191600101612120565b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d576121e36131d5565b5f73ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461014d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5773ffffffffffffffffffffffffffffffffffffffff612293612afb565b61229b6131d5565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060015416176001555f80f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461014d576101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5760043567ffffffffffffffff811161014d57612371903690600401612bae565b60243567ffffffffffffffff811161014d57612391903690600401612bae565b60443567ffffffffffffffff811161014d576123b1903690600401612c3a565b6123b9612cb5565b60843567ffffffffffffffff811161014d576123d9903690600401612cc5565b6123e1612d22565b946123ea612d31565b916123f3612d54565b906101243567ffffffffffffffff811161014d57612415903690600401612cc5565b93610164356124226131d5565b8015908115612aa6575b5015610d1b578651855103610c975773ffffffffffffffffffffffffffffffffffffffff16918215610c135773ffffffffffffffffffffffffffffffffffffffff16948515610b8f57600f0b975f891315610b31578151875103610aad5780612a9b575b15612a74577f0000000000000000000000000000000000000000000000000000000000000000905b73ffffffffffffffffffffffffffffffffffffffff5f54169073ffffffffffffffffffffffffffffffffffffffff600154166040519a8b937f6ae73ce30000000000000000000000000000000000000000000000000000000085526004850152610180602485015261259461256461253461018487018a612f54565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8782030160448801528d612f54565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8682030160648701528b612f97565b9060848501527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8482030160a4850152602080845192838152019301905f5b818110612a5b575050505f73ffffffffffffffffffffffffffffffffffffffff8460209694819460a43560c48401527f000000000000000000000000000000000000000000000000000000000000000060e4840152610104830152827f000000000000000000000000000000000000000000000000000000000000000016610124830152827f000000000000000000000000000000000000000000000000000000000000000016610144830152827f0000000000000000000000000000000000000000000000000000000000000000166101648301520393165af1968715610904575f97612a0a575b506126c687612fe0565b73ffffffffffffffffffffffffffffffffffffffff871691825f52600460205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790555f5b86518110156127da5773ffffffffffffffffffffffffffffffffffffffff61273d8289612e6f565b511690815f52600560205260ff60405f20541615612773575b6001915f52600660205261276d8a60405f20613050565b01612715565b60035491680100000000000000008310156106a3578061279d61063b856001809701600355612e15565b9055805f52600560205260405f20837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790559150612756565b509087837ff45e30d37dc5ef98e17708308b886213b8f485ea52d495067eed8d4977423f22610715899561281f6107238d604051948594606086526060860190612f54565b0390a25f5b835181101561095b576128378187612e6f565b51612845575b600101612824565b73ffffffffffffffffffffffffffffffffffffffff6128648286612e6f565b51166128708288612e6f565b51604051907f23b872dd000000000000000000000000000000000000000000000000000000005f52856004528760245260445260205f60648180865af19060015f51148216156129f2575b6040525f6060521561090f57506024602073ffffffffffffffffffffffffffffffffffffffff6128eb8488612e6f565b5116604051928380927f70a082310000000000000000000000000000000000000000000000000000000082528a60048301525afa908115610904575f916129c1575b506129388288612e6f565b511461283d5760846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f6665652d6f6e2d7472616e7366657220746f6b656e73206e6f7420737570706f60448201527f72746564000000000000000000000000000000000000000000000000000000006064820152fd5b90506020813d82116129ea575b816129db60209383612b6d565b8101031261014d57518861292d565b3d91506129ce565b90600181151661095257823b15153d151616906128bb565b9096506020813d602011612a53575b81612a2660209383612b6d565b8101031261014d575173ffffffffffffffffffffffffffffffffffffffff8116810361014d5795876126bc565b3d9150612a19565b825185528d9550602094850194909201916001016125d3565b7f0000000000000000000000000000000000000000000000000000000000000000906124b8565b506002865114612490565b90504211158a61242c565b3461014d5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d576109d76110c8612aee612afb565b6044359060243590612e83565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361014d57565b60206040818301928281528451809452019201905f5b818110612b415750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101612b34565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176106a357604052565b81601f8201121561014d5780359067ffffffffffffffff82116106a35760405192612c0160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601160185612b6d565b8284526020838301011161014d57815f926020809301838601378301015290565b67ffffffffffffffff81116106a35760051b60200190565b9080601f8301121561014d57813590612c5282612c22565b92612c606040519485612b6d565b82845260208085019360051b82010191821161014d57602001915b818310612c885750505090565b823573ffffffffffffffffffffffffffffffffffffffff8116810361014d57815260209283019201612c7b565b6064359081600f0b820361014d57565b9080601f8301121561014d578135612cdc81612c22565b92612cea6040519485612b6d565b81845260208085019260051b82010192831161014d57602001905b828210612d125750505090565b8135815260209182019101612d05565b60c43590811515820361014d57565b60e4359073ffffffffffffffffffffffffffffffffffffffff8216820361014d57565b610104359073ffffffffffffffffffffffffffffffffffffffff8216820361014d57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc604091011261014d576004359060243590565b90612db682612c22565b612dc36040519182612b6d565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0612df18294612c22565b0190602036910137565b91908201809211611ea657565b91908203918211611ea657565b600354811015612e2d5760035f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8054821015612e2d575f5260205f2001905f90565b8051821015612e2d5760209160051b010190565b73ffffffffffffffffffffffffffffffffffffffff90929192165f52600660205260405f2090815480841015612f3857808491612ec08484612dfb565b1115612f3057612ed09250612e08565b905b612edb82612dac565b925f5b838110612eec575050505090565b8073ffffffffffffffffffffffffffffffffffffffff612f17612f1160019486612dfb565b86612e5a565b90549060031b1c16612f298288612e6f565b5201612ede565b505090612ed2565b50505050604051612f4a602082612b6d565b5f81525f36813790565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b90602080835192838152019201905f5b818110612fb45750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101612fa7565b600254680100000000000000008110156106a35773ffffffffffffffffffffffffffffffffffffffff61301e82600161304c94016002556002612e5a565b919093169083549073ffffffffffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b9055565b8054680100000000000000008110156106a35761301e8161304c93600173ffffffffffffffffffffffffffffffffffffffff94018155612e5a565b919060035480841015613119578084916130a58484612dfb565b1115613112576130b59250612e08565b6130be81612dac565b905f5b8181106130cf575090925050565b8073ffffffffffffffffffffffffffffffffffffffff6130f96130f460019489612dfb565b612e15565b90549060031b1c1661310b8286612e6f565b52016130c1565b50506130b5565b50509050604051612f4a602082612b6d565b90600254808310156131c4578083916131448484612dfb565b11156131bc576131549250612e08565b905b61315f82612dac565b915f91600254925b828110613175575050505090565b61317f8183612dfb565b9084821015612e2d5773ffffffffffffffffffffffffffffffffffffffff60019260025f5260205f200154166131b58288612e6f565b5201613167565b505090613156565b505050604051612f4a602082612b6d565b73ffffffffffffffffffffffffffffffffffffffff5f541633036131f557565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b677fffffffffffffff811161014d5760401b600f0b90565b90600f0b90811561014d5760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613280575b1561014d57600f0b90565b506f7fffffffffffffffffffffffffffffff81131561327556fea26469706673582212200f068c5d1e462e2aef9bf458cabb8f9a47c383be2b40c9c96d830b134c690f5e64736f6c634300081e003360c03461009a57601f612fd338819003918201601f19168301916001600160401b0383118484101761009e57808492604094855283398101031261009a578051906001600160a01b038216820361009a5760200151906001600160a01b038216820361009a5760805260a052604051612f2090816100b3823960805181610311015260a0518181816106c401528181610e57015261189f0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c9081630ab75fef14611968575080630db4cdda1461171c5780633a06daa2146111d357806344e48a9c14610f6157806397c6481214610cd4578063ad84489314610bf5578063b9c0d20414610888578063bfb5cdc51461058b578063c63a9743146100d95763c757221b1461008a575f80fd5b346100d55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d55760206100cb6100c6611a3b565b611e69565b6040519015158152f35b5f80fd5b346100d55760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d557610110611a3b565b6024356044356064359283600f0b8094036100d55773ffffffffffffffffffffffffffffffffffffffff16916040517f476e44b60000000000000000000000000000000000000000000000000000000081525f81600481875afa80156103a1576020915f91610569575b500180515180831080610560575b15610502575f8613156104a45715610446576040517f017cf6610000000000000000000000000000000000000000000000000000000081525f81600481885afa9081156103a1575f91610424575b50604051907f6bba3f2f000000000000000000000000000000000000000000000000000000008252602082600481895afa9182156103a1575f926103e3575b5060206044935196604051948580927f939f5ea40000000000000000000000000000000000000000000000000000000082528860048301528960248301525afa9283156103a1575f936103ac575b50906060956102ba6102f293604051998a9889987fbf05a0a6000000000000000000000000000000000000000000000000000000008a5260048a01526024890152604488015260e0606488015260e4870190611ad6565b91600f0b60848601527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8583030160a4860152611d44565b9060c4830152038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156103a1575f905f925f9161036a575b5061036690604051938493846040919493926060820195825260208201520152565b0390f35b90506103669250610393915060603d60601161039a575b61038b8183611b09565b810190611d29565b9092610344565b503d610381565b6040513d5f823e3d90fd5b919092506020823d6020116103db575b816103c960209383611b09565b810103126100d5579051916060610263565b3d91506103bc565b9291506020833d60201161041c575b816103ff60209383611b09565b810103126100d5576020610414604494611b77565b929350610215565b3d91506103f2565b61044091503d805f833e6104388183611b09565b810190611c6e565b866101d6565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f73776170546f4c696d69743a20706f6f6c20756e696e697469616c697a6564006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f73776170546f4c696d69743a206c696d6974203c3d20300000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f73776170546f4c696d69743a20696478000000000000000000000000000000006044820152fd5b50808410610188565b61058591503d805f833e61057d8183611b09565b810190611b9d565b8661017a565b346100d55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d55773ffffffffffffffffffffffffffffffffffffffff6105d7611a3b565b166040517f476e44b60000000000000000000000000000000000000000000000000000000081525f81600481855afa80156103a1576020915f9161086e575b500151519061062482611dcf565b915f5b81811061075a576040517f18160ddd0000000000000000000000000000000000000000000000000000000081528490602081600481885afa9081156103a1575f91610726575b506106ab915f9160405193849283927fcdc2468b00000000000000000000000000000000000000000000000000000000845260243560048501611e4a565b038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156103a157610366915f9161070c575b50604051918291602083526020830190611ad6565b61072091503d805f833e6104388183611b09565b826106f7565b90506020813d602011610752575b8161074160209383611b09565b810103126100d557516106ab61066d565b3d9150610734565b604051907fe4b50cb8000000000000000000000000000000000000000000000000000000008252806004830152602082602481875afa9182156103a15773ffffffffffffffffffffffffffffffffffffffff926020915f91610841575b506024604051809581937f70a08231000000000000000000000000000000000000000000000000000000008352896004840152165afa80156103a1575f9061080f575b600192506108088287611ce8565b5201610627565b506020823d8211610839575b8161082860209383611b09565b810103126100d557600191516107fa565b3d915061081b565b6108619150823d8111610867575b6108598183611b09565b810190611e1e565b876107b7565b503d61084f565b61088291503d805f833e61057d8183611b09565b83610616565b346100d55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d5576108bf611a3b565b73ffffffffffffffffffffffffffffffffffffffff6024359116906040517f476e44b60000000000000000000000000000000000000000000000000000000081525f81600481865afa80156103a1576020915f91610bdb575b50018051518015610b7d57821015610b1f576020600493604051948580927f6bba3f2f0000000000000000000000000000000000000000000000000000000082525afa9283156103a1575f93610ae3575b5051906109758261210c565b9261099084600f0b945f86139261098b84611f94565b61205e565b9061099f5f83600f0b13611ff9565b15610a85576109ad90612141565b5f928051915f935b838510610a2257868681156100d55760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580610a08575b156100d557602090600f0b604051908152f35b506f7fffffffffffffffffffffffffffffff8113156109f5565b9091929394610a7a600191610a74610a61610a5c8761098b610a448d8c611ce8565b51600f0b610a528a8d611ce8565b51600f0b90612191565b612281565b610a6b8a89611ce8565b51600f0b61205e565b90612244565b9501939291906109b5565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c4d53523a2073697a65207a65726f00000000000000000000000000000000006044820152fd5b9092506020813d602011610b17575b81610aff60209383611b09565b810103126100d557610b1090611b77565b9183610969565b3d9150610af2565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f706f6f6c50726963653a206964780000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f706f6f6c50726963653a20756e696e69740000000000000000000000000000006044820152fd5b610bef91503d805f833e61057d8183611b09565b84610918565b346100d55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d55773ffffffffffffffffffffffffffffffffffffffff6020610c43611a3b565b610c4b611a5e565b506004604051809481937f31596a6a000000000000000000000000000000000000000000000000000000008352165afa9081156103a1575f91610ca0575b6020610c97836044356120b9565b50604051908152f35b90506020813d602011610ccc575b81610cbb60209383611b09565b810103126100d55751610c97610c89565b3d9150610cae565b346100d55773ffffffffffffffffffffffffffffffffffffffff610cf736611a81565b6040517f476e44b60000000000000000000000000000000000000000000000000000000081529390921691905f84600481865afa9384156103a1575f94610f45575b506040517f9af1d35a0000000000000000000000000000000000000000000000000000000081525f81600481875afa9081156103a157610d829184915f91610f2b575b50611ce8565b5193604051937f017cf6610000000000000000000000000000000000000000000000000000000085525f85600481845afa9485156103a1575f95610f07575b50906020600492604051938480927f18160ddd0000000000000000000000000000000000000000000000000000000082525afa9182156103a1575f92610ed2575b5090604094610e3e92865197889687967ff16b7c2600000000000000000000000000000000000000000000000000000000885260048801611d7a565b038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156103a1575f905f90610e98575b6040809350519182526020820152f35b50506040813d604011610eca575b81610eb360409383611b09565b810103126100d55780602060409251910151610e88565b3d9150610ea6565b91506020823d602011610eff575b81610eed60209383611b09565b810103126100d5579051906040610e02565b3d9150610ee0565b600492919550610f226020913d805f833e6104388183611b09565b95919250610dc1565b610f3f91503d805f833e6104388183611b09565b87610d7c565b610f5a9194503d805f833e61057d8183611b09565b9284610d39565b346100d55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d55773ffffffffffffffffffffffffffffffffffffffff610fad611a3b565b166040517f476e44b60000000000000000000000000000000000000000000000000000000081525f81600481855afa80156103a1576020915f916111b9575b5001515190610ffa82611dcf565b915f5b8181106110b5576040517f18160ddd0000000000000000000000000000000000000000000000000000000081528490602081600481885afa9081156103a1575f91611081575b506106ab915f9160405193849283927f228fa85000000000000000000000000000000000000000000000000000000000845260243560048501611e4a565b90506020813d6020116110ad575b8161109c60209383611b09565b810103126100d557516106ab611043565b3d915061108f565b604051907fe4b50cb8000000000000000000000000000000000000000000000000000000008252806004830152602082602481875afa9182156103a15773ffffffffffffffffffffffffffffffffffffffff926020915f9161119c575b506024604051809581937f70a08231000000000000000000000000000000000000000000000000000000008352896004840152165afa80156103a1575f9061116a575b600192506111638287611ce8565b5201610ffd565b506020823d8211611194575b8161118360209383611b09565b810103126100d55760019151611155565b3d9150611176565b6111b39150823d8111610867576108598183611b09565b87611112565b6111cd91503d805f833e61057d8183611b09565b83610fec565b346100d55773ffffffffffffffffffffffffffffffffffffffff6111f636611a81565b92909116906040517f476e44b60000000000000000000000000000000000000000000000000000000081525f81600481865afa80156103a1576020915f91611702575b500180515180156116a457808310908161169a575b501561163c576040517f6bba3f2f000000000000000000000000000000000000000000000000000000008152602081600481875afa9081156103a1575f916115ed575b50610a5c9061098b6112d06112bd6112e99551936112ae8561210c565b9061098b5f83600f0b13611f94565b6112cb5f82600f0b13611ff9565b612141565b91610a52866112df8a84611ce8565b51600f0b92611ce8565b926040517f017cf6610000000000000000000000000000000000000000000000000000000081525f81600481875afa9081156103a1576004935f926113349284916115d35750611ce8565b5193604051938480927f017cf6610000000000000000000000000000000000000000000000000000000082525afa80156103a157611378925f916115b95750611ce8565b519081156100d55777ffffffffffffffffffffffffffffffffffffffffffffffff811161140757906113ac9160401b6121ce565b6fffffffffffffffffffffffffffffffff81116100d5576fffffffffffffffffffffffffffffffff166f7fffffffffffffffffffffffffffffff81116100d5576020916113fc91600f0b9061205e565b60405190600f0b8152f35b60c09181831c80936401000000008210156115ac575b600282620100006114aa9410156115a0575b610100811015611594575b6010811015611588575b600481101561157d575b1015611575575b8360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b6121ce565b926fffffffffffffffffffffffffffffffff84116100d5578160801c8402906fffffffffffffffffffffffffffffffff8316850290809460401b9082821061154b575b5003928160801b91828510611522575b60801c036115175761150f92036121ce565b905b016113ac565b505050600190611511565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906114fd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019450876114ed565b600101611455565b91810191811c61144e565b6004928301921c611444565b6008928301921c61143a565b6010928301921c61142f565b505060e082811c9061141d565b6115cd91503d805f833e6104388183611b09565b85610d7c565b6115e791503d8086833e6104388183611b09565b88610d7c565b90506020813d602011611634575b8161160860209383611b09565b810103126100d5576112e99161098b6112d06112bd611629610a5c95611b77565b945050505091611291565b3d91506115fb565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f70726963653a20696478000000000000000000000000000000000000000000006044820152fd5b905084108561124e565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f70726963653a20756e696e6974000000000000000000000000000000000000006044820152fd5b61171691503d805f833e61057d8183611b09565b85611239565b346100d55773ffffffffffffffffffffffffffffffffffffffff61173f36611a81565b6040517f476e44b60000000000000000000000000000000000000000000000000000000081529390921691905f84600481865afa9384156103a1575f9461194c575b506040517f9af1d35a0000000000000000000000000000000000000000000000000000000081525f81600481875afa9081156103a1576117c99183915f91610f2b5750611ce8565b5193604051937f017cf6610000000000000000000000000000000000000000000000000000000085525f85600481845afa9485156103a1575f95611928575b50906020600492604051938480927f18160ddd0000000000000000000000000000000000000000000000000000000082525afa9182156103a1575f926118f3575b50906060946118869260405197889687967fe9f317f000000000000000000000000000000000000000000000000000000000885260048801611d7a565b038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156103a1575f905f925f9161036a575061036690604051938493846040919493926060820195825260208201520152565b91506020823d602011611920575b8161190e60209383611b09565b810103126100d5579051906060611849565b3d9150611901565b6004929195506119436020913d805f833e6104388183611b09565b95919250611808565b6119619194503d805f833e61057d8183611b09565b9284611781565b346100d55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d5576020816024816119a5611a3b565b73ffffffffffffffffffffffffffffffffffffffff806119c3611a5e565b16917f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa80156103a1575f90611a08575b602090604051908152f35b506020813d602011611a33575b81611a2260209383611b09565b810103126100d557602090516119fd565b3d9150611a15565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036100d557565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036100d557565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60609101126100d55760043573ffffffffffffffffffffffffffffffffffffffff811681036100d557906024359060443590565b90602080835192838152019201905f5b818110611af35750505090565b8251845260209384019390920191600101611ae6565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611b4a57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b519081600f0b82036100d557565b67ffffffffffffffff8111611b4a5760051b60200190565b6020818303126100d55780519067ffffffffffffffff82116100d55701906040828203126100d557604051916040830183811067ffffffffffffffff821117611b4a57604052611bec81611b77565b835260208101519067ffffffffffffffff82116100d557019080601f830112156100d5578151611c1b81611b85565b92611c296040519485611b09565b81845260208085019260051b8201019283116100d557602001905b828210611c5657505050602082015290565b60208091611c6384611b77565b815201910190611c44565b6020818303126100d55780519067ffffffffffffffff82116100d557019080601f830112156100d5578151611ca281611b85565b92611cb06040519485611b09565b81845260208085019260051b8201019283116100d557602001905b828210611cd85750505090565b8151815260209182019101611ccb565b8051821015611cfc5760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b908160609103126100d5578051916040602083015192015190565b90602080835192838152019201905f5b818110611d615750505090565b8251600f0b845260209384019390920191600101611d54565b9695949160a094611dca94602092611dbc948b52838b015260408a015260c060608a01528051600f0b60c08a01520151604060e0890152610100880190611d44565b908682036080880152611ad6565b930152565b90611dd982611b85565b611de66040519182611b09565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611e148294611b85565b0190602036910137565b908160209103126100d5575173ffffffffffffffffffffffffffffffffffffffff811681036100d55790565b611e669392606092825260208201528160408201520190611ad6565b90565b73ffffffffffffffffffffffffffffffffffffffff166040517f1f3a0e41000000000000000000000000000000000000000000000000000000008152602081600481855afa9081156103a1575f91611f59575b50611f54575f600491604051928380927f476e44b60000000000000000000000000000000000000000000000000000000082525afa9081156103a1575f91611f3a575b505f5b60208201518051821015611f3357611f1b825f92611ce8565b51600f0b13611f2c57600101611f02565b5050600190565b5050505f90565b611f4e91503d805f833e61057d8183611b09565b5f611eff565b505f90565b90506020813d602011611f8c575b81611f7460209383611b09565b810103126100d5575180151581036100d5575f611ebc565b3d9150611f67565b15611f9b57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b1561200057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4c4d53523a20623c3d30000000000000000000000000000000000000000000006044820152fd5b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061209f575b156100d557600f0b90565b506f7fffffffffffffffffffffffffffffff811315612094565b91908015612106576120cb9083612205565b918281039081116120d95790565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b505f9190565b5f90815b815183101561213b576121336001916121298585611ce8565b51600f0b90612244565b920191612110565b91505090565b600f0b80156100d557700100000000000000000000000000000000057fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061209f57156100d557600f0b90565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061209f57156100d557600f0b90565b81156121d8570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b811561223e578181029181830414901517156120d957620f42408101908181116120d957620f423f019081116120d957620f4240900490565b50505f90565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061209f57156100d557600f0b90565b600f0b684000000000000000008112156100d5577fffffffffffffffffffffffffffffffffffffffffffffffc000000000000000008112611f5457611e6690700171547652b82fe1777d0ffda0d23a7d120260801d600f0b80684000000000000000008112156100d5577fffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000811261223e576f80000000000000000000000000000000915f6780000000000000008216600f0b13612ed2575b5f6740000000000000008216600f0b13612eb5575b5f6720000000000000008216600f0b13612e98575b5f6710000000000000008216600f0b13612e7b575b5f6708000000000000008216600f0b13612e5e575b5f6704000000000000008216600f0b13612e41575b5f6702000000000000008216600f0b13612e24575b5f6701000000000000008216600f0b13612e07575b5f66800000000000008216600f0b13612dea575b5f66400000000000008216600f0b13612dcd575b5f66200000000000008216600f0b13612db0575b5f66100000000000008216600f0b13612d93575b5f66080000000000008216600f0b13612d76575b5f66040000000000008216600f0b13612d59575b5f66020000000000008216600f0b13612d3c575b5f66010000000000008216600f0b13612d1f575b5f658000000000008216600f0b13612d02575b5f654000000000008216600f0b13612ce5575b5f652000000000008216600f0b13612cc8575b5f651000000000008216600f0b13612cab575b5f650800000000008216600f0b13612c8e575b5f650400000000008216600f0b13612c71575b5f650200000000008216600f0b13612c54575b5f650100000000008216600f0b13612c37575b5f6480000000008216600f0b13612c1a575b5f6440000000008216600f0b13612bfd575b5f6420000000008216600f0b13612be0575b5f6410000000008216600f0b13612bc3575b5f6408000000008216600f0b13612ba6575b5f6404000000008216600f0b13612b89575b5f6402000000008216600f0b13612b6c575b5f6401000000008216600f0b13612b4f575b5f63800000008216600f0b13612b32575b5f63400000008216600f0b13612b15575b5f63200000008216600f0b13612af8575b5f63100000008216600f0b13612adb575b5f63080000008216600f0b13612abe575b5f63040000008216600f0b13612aa1575b5f63020000008216600f0b13612a84575b5f63010000008216600f0b13612a67575b5f628000008216600f0b13612a4a575b5f624000008216600f0b13612a2d575b5f622000008216600f0b13612a10575b5f621000008216600f0b136129f3575b5f620800008216600f0b136129d6575b5f620400008216600f0b136129b9575b5f620200008216600f0b1361299c575b5f620100008216600f0b1361297f575b5f6180008216600f0b13612962575b5f6140008216600f0b13612945575b5f6120008216600f0b13612928575b5f6110008216600f0b1361290b575b5f6108008216600f0b136128ee575b5f6104008216600f0b136128d1575b5f6102008216600f0b136128b4575b5f6101008216600f0b13612897575b5f60808216600f0b1361287a575b5f60408216600f0b1361285d575b5f60208216600f0b13612840575b5f60108216600f0b13612823575b5f60088216600f0b13612806575b5f60048216600f0b136127e9575b5f60028216600f0b136127cb575b60015f9116600f0b136127ae575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff81116100d557600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c90612784565b7001000000000000000162e42fefa39ef35890920260801c91612776565b9170010000000000000002c5c85fdf473de6b20260801c91612768565b91700100000000000000058b90bfbe8e7bcd6d0260801c9161275a565b917001000000000000000b17217f7d1cf79afa0260801c9161274c565b91700100000000000000162e42fefa39ef366f0260801c9161273e565b917001000000000000002c5c85fdf473de6eca0260801c91612730565b9170010000000000000058b90bfbe8e7bce5440260801c91612722565b91700100000000000000b17217f7d1cf79e9490260801c91612714565b9170010000000000000162e42fefa39ef44d910260801c91612705565b91700100000000000002c5c85fdf473dea871f0260801c916126f6565b917001000000000000058b90bfbe8e7bdcbe2e0260801c916126e7565b9170010000000000000b17217f7d1cf7d83c1a0260801c916126d8565b917001000000000000162e42fefa39f02b772c0260801c916126c9565b9170010000000000002c5c85fdf473e242ea380260801c916126ba565b91700100000000000058b90bfbe8e7cc35c3f00260801c916126ab565b917001000000000000b17217f7d1cfb72b45e10260801c9161269c565b91700100000000000162e42fefa39fe95583c20260801c9161268c565b917001000000000002c5c85fdf4741bea6e77e0260801c9161267c565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c9161266c565b91700100000000000b17217f7d1d351a389d400260801c9161265c565b9170010000000000162e42fefa3ae53369388c0260801c9161264c565b91700100000000002c5c85fdf477b662b269450260801c9161263c565b917001000000000058b90bfbe8f71cb4e4b33d0260801c9161262c565b9170010000000000b17217f7d20cf927c8e94c0260801c9161261c565b917001000000000162e42fefa494f1478fde050260801c9161260b565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c916125fa565b91700100000000058b90bfbe9ddbac5e109cce0260801c916125e9565b917001000000000b17217f7d5a7716bba4a9ae0260801c916125d8565b91700100000000162e42fefb2fed257559bdaa0260801c916125c7565b917001000000002c5c85fdf84bd62ae30a74cc0260801c916125b6565b9170010000000058b90bfbf8479bd5a81b51ad0260801c916125a5565b91700100000000b17217f80f4ef5aadda455540260801c91612594565b9170010000000162e42ff0999ce3541b9fffcf0260801c91612582565b91700100000002c5c85fe31f35a6a30da1be500260801c91612570565b917001000000058b90bfcdee5acd3c1cedc8230260801c9161255e565b9170010000000b17217fba9c739aa5819f44f90260801c9161254c565b917001000000162e42fff037df38aa2b219f060260801c9161253a565b9170010000002c5c8601cc6b9e94213c72737a0260801c91612528565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91612516565b917001000000b1721835514b86e6d96efd1bfe0260801c91612504565b91700100000162e430e5a18f6119e3c02282a50260801c916124f1565b917001000002c5c863b73f016468f6bac5ca2b0260801c916124de565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c916124cb565b91700100000b1721bcfc99d9f890ea069117630260801c916124b8565b9170010000162e43f4f831060e02d839a9d16d0260801c916124a5565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c91612492565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c9161247f565b9170010000b17255775c040618bf4a4ade83fc0260801c9161246c565b917001000162e525ee054754457d59952920260260801c91612458565b9170010002c5cc37da9491d0985c348c68e7b30260801c91612444565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91612430565b917001000b175effdc76ba38e31671ca9397250260801c9161241c565b91700100162f3904051fa128bca9c55c31e5df0260801c91612408565b917001002c605e2e8cec506d21bfc89a23a00f0260801c916123f4565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c916123e0565b91700100b1afa5abcbed6129ab13ec11dc95430260801c916123cc565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c916123b7565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c916123a2565b917001059b0d31585743ae7c548eb68ca417fd0260801c9161238d565b9170010b5586cf9890f6298b92b71842a983630260801c91612378565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c91612363565b917001306fe0a31b7152de8d5a46305c85edec0260801c9161234e565b6fb504f333f9de6484597d89b3754abe9f925061233956fea26469706673582212205351ab298f7c07f41f00d9aca21964ab7c4b46e9a4db6af3c13a4f9780acee0e64736f6c634300081e003360808060405234601557610291908161001a8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c6323e30c8b14610025575f80fd5b346101c85760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101c85761005c610238565b5060243573ffffffffffffffffffffffffffffffffffffffff81168091036101c8576044359060843567ffffffffffffffff81116101c857366023820112156101c857806004013567ffffffffffffffff81116101c85781013660248201116101c857602090829003126101c857602401359073ffffffffffffffffffffffffffffffffffffffff82168092036101c857606435830180931161020b57835f60449260209583957f095ea7b3000000000000000000000000000000000000000000000000000000008552600485015260248401525af1801561020057610167575b60206040517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b60203d6020116101f9575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f820116820182811067ffffffffffffffff8211176101cc576020918391604052810103126101c85751801515811461013d575b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b503d610172565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101c85756fea2646970667358221220608a068f4b69c3529bce103fd01ee3145166316c5be04613db70ee2b847f122f64736f6c634300081e0033a2646970667358221220517020816ca77da4502d01cb3d6e7127527d8285460bf80643c0509c289e9fb864736f6c634300081e0033","sourceMap":"1337:10439:32:-:0;;;;;;;;;;3200:4:3;1337:10439:32;;;3200:4:3;1337:10439:32;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f905f3560e01c90816341a20a931461330d5750806350615d53146132c1578063ad5c464814613275578063c04062261461009b5763f8ccbf4714610055575f80fd5b3461009857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009857602060ff600c5460101c166040519015158152f35b80fd5b5034612992575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126129925762aa36a7460361321757737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15612992576040517f7fb5297f0000000000000000000000000000000000000000000000000000000081525f8160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015612b3557613204575b5080768e4d16886b8946dfe463fa172129eabf4825fb090000007fffffffffffffffffff0000000000000000000000000000000000000000ffffff600c54161780600c5573dc225280216822ca956738390f589c794129bd537fffffffffffffffffffffffff0000000000000000000000000000000000000000600d541617600d55737ba123e4e7395a361284d069bd0d545f3f8206417fffffffffffffffffffffffff0000000000000000000000000000000000000000600e541617600e557388125947bbf1a6dd0fed4b257bb3f9e1fbdcb3cc7fffffffffffffffffffffffff0000000000000000000000000000000000000000600f541617600f5573c8db65c0b9f4cf59097d4c5bcb9e8e92b9e4e15f7fffffffffffffffffffffffff00000000000000000000000000000000000000006010541617601055737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156131445773ffffffffffffffffffffffffffffffffffffffff604051917fc657c71800000000000000000000000000000000000000000000000000000000835260181c1660048201526040602482015281818061031b60448201604090600481527f555358440000000000000000000000000000000000000000000000000000000060208201520190565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156130bd576131ef575b5073ffffffffffffffffffffffffffffffffffffffff600d5416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561314457604051907fc657c7180000000000000000000000000000000000000000000000000000000082526004820152604060248201528181806103e360448201604090600481527f465553440000000000000000000000000000000000000000000000000000000060208201520190565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156130bd576131da575b5073ffffffffffffffffffffffffffffffffffffffff600e5416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561314457604051907fc657c7180000000000000000000000000000000000000000000000000000000082526004820152604060248201528181806104ab60448201604090600481527f444956450000000000000000000000000000000000000000000000000000000060208201520190565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156130bd576131c5575b5073ffffffffffffffffffffffffffffffffffffffff600f5416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561314457604051907fc657c71800000000000000000000000000000000000000000000000000000000825260048201526040602482015281818061057360448201604090600481527f425554430000000000000000000000000000000000000000000000000000000060208201520190565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156130bd576131b0575b5073ffffffffffffffffffffffffffffffffffffffff60105416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561314457604051907fc657c71800000000000000000000000000000000000000000000000000000000825260048201526040602482015281818061063b60448201604090600581527f575445544800000000000000000000000000000000000000000000000000000060208201520190565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156130bd5761319b575b5073ffffffffffffffffffffffffffffffffffffffff600c5460181c16803b15613144576040517f40c10f1900000000000000000000000000000000000000000000000000000000815233600482015264e8d4a5100060248201529082908290604490829084905af180156130bd57613186575b5073ffffffffffffffffffffffffffffffffffffffff600d5416803b15613144576040517f40c10f1900000000000000000000000000000000000000000000000000000000815233600482015264e8d4a5100060248201529082908290604490829084905af180156130bd57613171575b5073ffffffffffffffffffffffffffffffffffffffff600e5416803b15613144576040517f40c10f1900000000000000000000000000000000000000000000000000000000815233600482015269d3c21bcecceda100000060248201529082908290604490829084905af180156130bd5761315c575b5073ffffffffffffffffffffffffffffffffffffffff600f5416803b15613144578180916044604051809481937f40c10f19000000000000000000000000000000000000000000000000000000008352336004840152655af3107a400060248401525af180156130bd57613147575b5073ffffffffffffffffffffffffffffffffffffffff60105416803b15613144576040517f40c10f1900000000000000000000000000000000000000000000000000000000815233600482015269d3c21bcecceda100000060248201529082908290604490829084905af180156130bd5761312f575b50506040516138d68082019082821067ffffffffffffffff83111761310257602091839162003acf833973fff9976782d46cc05630d1f6ebab18b2324d6b14815203019082f080156130f5576040516155388082019082821067ffffffffffffffff8311176130c8576020918391620073a5833973fff9976782d46cc05630d1f6ebab18b2324d6b14815203019083f080156130bd57604051615a7b8082019082821067ffffffffffffffff831117613090579082916200c8dd8339039084f091821561308557604051615fd98082019082821067ffffffffffffffff83111761305857908291620123588339039085f0801561304d576040516136f2928382019382851067ffffffffffffffff8611176130205773ffffffffffffffffffffffffffffffffffffffff808080610100958795620183318739338a5273fff9976782d46cc05630d1f6ebab18b2324d6b1460208b015216988960408a01521698896060890152169485608088015216948560a0820152620186a060c0820152730e280f5eda58872d7cdaa8ac0a57a55fd6133aed60e082015203019086f080156130155773ffffffffffffffffffffffffffffffffffffffff1692610a64846135cc565b604051608096610a748883613346565b600382527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08801908136602085013773ffffffffffffffffffffffffffffffffffffffff600c5460181c16610ac88461339f565b5273ffffffffffffffffffffffffffffffffffffffff600f5416610aeb846133d9565b5273ffffffffffffffffffffffffffffffffffffffff60105416610b0e846133e9565b5260405192610b1d8a85613346565b6003845282366020860137620f4240610b358561339f565b526305f5e100610b44856133d9565b52670de0b6b3a7640000610b57856133e9565b5260405193610b668b86613346565b60038552833660208701376032610b7c8661339f565b5260fa610b88866133d9565b5261015e610b95866133e9565b52604051610ba38c82613346565b60038152843660208301376001610bb98261339f565b52620186a0610bc7826133d9565b52610fa0610bd4826133e9565b5260405191610be38d84613346565b6003835285366020850137610bf78161339f565b51806127100290612710820403612fe857610c1c90610c158461339f565b51906133f9565b610c258461339f565b52610c2f816133d9565b51806127100290612710820403612fe85790610c51610c6092610c15856133d9565b610c5a856133d9565b526133e9565b5190816127100291612710830403612fbb5790610c15610c7f926133e9565b610c88826133e9565b526719999999999999999280612f8e575082600f0b925f841315612f305768010000000000000000841215612ed2576f028f5c28f5c28f5c000000000000000060401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612eb8575b1561299257600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612e9e575b1561299257600f0b5f811315612e405768010147ae147ae147ae610d55916139f3565b600f0b5f81138080612e2e575b15612dd05715612992575f908068010000000000000000821215612dc3575b806401000000006002921215612db7575b62010000811215612dab575b610100811215612d9f575b6010811215612d93575b6004811215612d88575b1215612d7e575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f8313612d6257506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b028c1d907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082600f0b1461299257610e55915f03600f0b6139f3565b600f0b5f811315612d0457801561299257700100000000000000000000000000000000057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612cea575b1561299257600f0b915f831315612c8c57610fed610f6c92610fa16040958651998a9687967f60cf7d4a0000000000000000000000000000000000000000000000000000000088526101806004890152600a6101848901527f546f6b656e20506f6f6c000000000000000000000000000000000000000000006101a48901526101c0602489015260026101c48901527f54500000000000000000000000000000000000000000000000000000000000006101e48901526102006044890152610204880190613464565b9160648701527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8683030160848701526134ad565b906109c460a48501525f60c48501523360e4850152336101048501527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc848303016101248501526134ad565b69021e19e0c9bab24000006101448301525f61016483015203815f8b5af1928315612b35575f93612c6a575b50604051906110288a83613346565b600382528236602084013773ffffffffffffffffffffffffffffffffffffffff600c5460181c166110588361339f565b5273ffffffffffffffffffffffffffffffffffffffff600d541661107b836133d9565b5273ffffffffffffffffffffffffffffffffffffffff600e541661109e836133e9565b526040516110ac8b82613346565b6003815283366020830137620f42406110c48261339f565b52620f42406110d2826133d9565b52670de0b6b3a76400006110e5826133e9565b52604051936110f48c86613346565b600385523660208601376111078161339f565b516127108102908082046127101490151715612c1f576111268561339f565b52611130816133d9565b51906127108202918083046127101490151715612c1f5761115491610c5a866133d9565b51916127108302928084046127101490151715612c1f576112906112339260409461117e876133e9565b5266068db8bac710cb95855196879586957fa4689b240000000000000000000000000000000000000000000000000000000087526101a06004880152600f6101a48801527f537461626c65636f696e20506f6f6c00000000000000000000000000000000006101c48801526101e0602488015260046101e48801527f53544150000000000000000000000000000000000000000000000000000000006102048801526102206044880152610224870190613464565b9260648601526084850152606460a4850152606460c48501525f60e485015233610104850152336101248501527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc848303016101448501526134ad565b69021e19e0c9bab24000006101648301525f61018483015203815f8a5af18015612b3557612c4c575b50606094604051976112cb878a613346565b600289527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08701803660208c013773ffffffffffffffffffffffffffffffffffffffff600c5460181c1661131e8b61339f565b5273ffffffffffffffffffffffffffffffffffffffff600e54166113418b6133d9565b5260405161134f8982613346565b6002815281366020830137620f42406113678261339f565b52670de0b6b3a764000061137a826133d9565b52604051916113898a84613346565b6002835236602084013761139c8161339f565b51906127108202918083046127101490151715612c1f576113c6916113c08461339f565b526133d9565b516127108102908082046127101490151715612c1f576113e5826133d9565b5260406114a45f9b6114fc67cccccccccccccccc845195869485947ff63772fc0000000000000000000000000000000000000000000000000000000086526101806004870152600b6101848701527f537461626c6520506169720000000000000000000000000000000000000000006101a48701526101c0602487015260056101c48701527f53504149520000000000000000000000000000000000000000000000000000006101e48701526102006044870152610204860190613464565b91606485015260076084850152600760a4850152600160c48501523360e4850152336101048501527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc848303016101248501526134ad565b69021e19e0c9bab24000006101448301525f61016483015203815f875af18015612b3557612bf1575b50604051612fd38082019082821067ffffffffffffffff8311176129d45760409183916201ba2383398781528b60208201520301905ff08015612b355773ffffffffffffffffffffffffffffffffffffffff8091169316604051977f6ff97f1d0000000000000000000000000000000000000000000000000000000089525f89600481855afa988915612b35575f99612b40575b508851906115c6836135cc565b604051997f18160ddd000000000000000000000000000000000000000000000000000000008b5260208b600481875afa9a8b15612b35575f9b612b01575b5061164760409b8c61161881519182613346565b601481527f706f73742d6372656174696f6e20737570706c790000000000000000000000006020820152613a54565b8a517fb3f1c93d0000000000000000000000000000000000000000000000000000000081523360048201523360248201526104d260448201525f60648201526020816084815f895af18015612a8f575f90612acd575b8c516116dd92506116ae8e82613346565b600681527f6d696e74656400000000000000000000000000000000000000000000000000006020820152613a54565b8a517f18160ddd000000000000000000000000000000000000000000000000000000008152602081600481885afa8015612a8f575f90612a99575b8c5161175892506117298e82613346565b601081527f706f73742d6d696e7420737570706c79000000000000000000000000000000006020820152613a54565b8a517f6863f5bc000000000000000000000000000000000000000000000000000000008152336004820152336024820152600760448201525f60648201525f60848201525f8160a48183895af18015612a8f57612a01575b508a516102ab80820182811067ffffffffffffffff8211176129d45782916201e9f6833903905ff080156129ca5773ffffffffffffffffffffffffffffffffffffffff6117fc8361339f565b5116908c51917fad8448930000000000000000000000000000000000000000000000000000000083528660048401526024830152630328b74060448301526020826064818c5afa918215612988575f92612996575b5073ffffffffffffffffffffffffffffffffffffffff806118718561339f565b5116911691813b15612992575f9160448f9284935194859384927f40c10f1900000000000000000000000000000000000000000000000000000000845288600485015260248401525af1801561298857612972575b50611954918e8d60209373ffffffffffffffffffffffffffffffffffffffff6119028351958b888801528787526118fd8588613346565b61339f565b51169151958694859384937f5cffe9de00000000000000000000000000000000000000000000000000000000855260048501526024840152630328b74060448401528b60648401526084830190613571565b0391885af1801561293b57612945575b5060a4818d8c51928380927fcb717f3a00000000000000000000000000000000000000000000000000000000825233600483015233602483015280604483015263132212406064830152806084830152885af1801561293b5761291e575b5060018211918c831561291257507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81019081116128e557908c949392915b8b51907f0eeee627000000000000000000000000000000000000000000000000000000008252336004830152866024830152336044830152866064830152608482015263054e084060a48201528560c48201528560e48201528561010482015281816101248189885af180156128db576128af575b5050813b156128015789517fa1af5b9a000000000000000000000000000000000000000000000000000000008152848160048183875af180156128a557908591612890575b505015612885578860ff60c460015b86845195869485937f491e79980000000000000000000000000000000000000000000000000000000085523360048601523360248601526729a2241af62c000060448601521660648401528160848401528160a48401525af1801561283d5790899161285c575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156126e75787517f76eadd36000000000000000000000000000000000000000000000000000000008152828160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561283d57908391612847575b50508751907f56ca623e0000000000000000000000000000000000000000000000000000000082528360048301528282602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa91821561283d578392612821575b508851917f56ca623e0000000000000000000000000000000000000000000000000000000083528560048401528383602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9283156127f7578493612805575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156128015783611cdb918b805193849283927f3d5923ee0000000000000000000000000000000000000000000000000000000084526004840152600760448401527f504c414e4e45520000000000000000000000000000000000000000000000000060648401528660248401526084830190613571565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156127f7579084916127e2575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156127de57611d929183918a5193849283927f3d5923ee0000000000000000000000000000000000000000000000000000000084528d6004850152600460448501527f494e464f00000000000000000000000000000000000000000000000000000000606485015260248401526084830190613571565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156126dd576127c9575b5073ffffffffffffffffffffffffffffffffffffffff600c5460181c168751907f56ca623e00000000000000000000000000000000000000000000000000000000825260048201528181602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9081156126dd5782916127af575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156126e75781611ee1918951809381927f3d5923ee0000000000000000000000000000000000000000000000000000000083528c6004840152611eb160448401604090600481527f555358440000000000000000000000000000000000000000000000000000000060208201520190565b907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc848303016024850152613571565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156126dd5761279a575b5073ffffffffffffffffffffffffffffffffffffffff600d54168751907f56ca623e00000000000000000000000000000000000000000000000000000000825260048201528181602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9081156126dd578291612780575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156126e75781611ffd918951809381927f3d5923ee0000000000000000000000000000000000000000000000000000000083528c6004840152611eb160448401604090600481527f465553440000000000000000000000000000000000000000000000000000000060208201520190565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156126dd5761276b575b5073ffffffffffffffffffffffffffffffffffffffff600e54168751907f56ca623e00000000000000000000000000000000000000000000000000000000825260048201528181602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9081156126dd578291612751575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156126e75781612119918951809381927f3d5923ee0000000000000000000000000000000000000000000000000000000083528c6004840152611eb160448401604090600481527f444956450000000000000000000000000000000000000000000000000000000060208201520190565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156126dd5761273c575b5073ffffffffffffffffffffffffffffffffffffffff600f54168751907f56ca623e00000000000000000000000000000000000000000000000000000000825260048201528181602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9081156126dd578291612722575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156126e75781612235918951809381927f3d5923ee0000000000000000000000000000000000000000000000000000000083528c6004840152611eb160448401604090600481527f425554430000000000000000000000000000000000000000000000000000000060208201520190565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156126dd5761270d575b5073ffffffffffffffffffffffffffffffffffffffff601054168751907f56ca623e00000000000000000000000000000000000000000000000000000000825260048201528181602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9081156126dd5782916126eb575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156126e75781612351918951809381927f3d5923ee0000000000000000000000000000000000000000000000000000000083528c6004840152611eb160448401604090600581527f575445544800000000000000000000000000000000000000000000000000000060208201520190565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156126dd576126bc575b50506126b99661244c6124c2946124116124fd9897956123d66124879661239b613912565b8c516123a78e82613346565b600e81527f20205061727479506c616e6e65720000000000000000000000000000000000006020820152613963565b8a516123e28c82613346565b600e81527f20202020205061727479496e666f0000000000000000000000000000000000006020820152613963565b885161241d8a82613346565b600e81527f20202020202053776170496d706c0000000000000000000000000000000000006020820152613963565b86516124588882613346565b600e81527f2020202020204d696e74496d706c0000000000000000000000000000000000006020820152613963565b84516124938682613346565b600e81527f2020202020204465706c6f7965720000000000000000000000000000000000006020820152613963565b82516124ce8482613346565b600e81527f4250616972204465706c6f7965720000000000000000000000000000000000006020820152613963565b612505613912565b61255f73ffffffffffffffffffffffffffffffffffffffff600c5460181c1682516125308482613346565b600e81527f20202020202020202020555358440000000000000000000000000000000000006020820152613963565b6125b673ffffffffffffffffffffffffffffffffffffffff600d541682516125878482613346565b600e81527f20202020202020202020465553440000000000000000000000000000000000006020820152613963565b61260d73ffffffffffffffffffffffffffffffffffffffff600e541682516125de8482613346565b600e81527f20202020202020202020444956450000000000000000000000000000000000006020820152613963565b61266473ffffffffffffffffffffffffffffffffffffffff600f541682516126358482613346565b600e81527f20202020202020202020425554430000000000000000000000000000000000006020820152613963565b73ffffffffffffffffffffffffffffffffffffffff601054169061268a81519182613346565b600e81527f20202020202020202057544554480000000000000000000000000000000000006020820152613963565b80f35b816126ca9197969497613346565b6126d957875f95929495612376565b8780fd5b88513d84823e3d90fd5b5080fd5b61270791503d8084833e6126ff8183613346565b8101906134e0565b5f6122c9565b8161271791613346565b6126d957875f61225a565b61273691503d8084833e6126ff8183613346565b5f6121ad565b8161274691613346565b6126d957875f61213e565b61276591503d8084833e6126ff8183613346565b5f612091565b8161277591613346565b6126d957875f612022565b61279491503d8084833e6126ff8183613346565b5f611f75565b816127a491613346565b6126d957875f611f06565b6127c391503d8084833e6126ff8183613346565b5f611e29565b816127d391613346565b6126d957875f611db7565b8280fd5b816127ec91613346565b6127de57825f611d03565b8a513d86823e3d90fd5b8380fd5b61281a9193503d8086833e6126ff8183613346565b915f611c4d565b6128369192503d8085833e6126ff8183613346565b905f611bf6565b89513d85823e3d90fd5b8161285191613346565b6126e757815f611b9e565b813d831161287e575b61286f8183613346565b810103126126e757875f611b31565b503d612865565b8860ff60c485611aca565b8161289a91613346565b61280157835f611abb565b8b513d87823e3d90fd5b816128ce92903d106128d4575b6128c68183613346565b8101906138f7565b50611a76565b503d6128bc565b8c513d88823e3d90fd5b60248d7f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b80959493929150611a01565b61293490823d84116128d4576128c68183613346565b50506119c2565b8b513d8f823e3d90fd5b6129669060203d60201161296b575b61295e8183613346565b8101906135b4565b611964565b503d612954565b8c929e505f61298091613346565b5f9d916118c6565b8d513d5f823e3d90fd5b5f80fd5b9091506020813d6020116129c2575b816129b260209383613346565b810103126129925751905f611851565b3d91506129a5565b8b513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b3d805f833e612a108183613346565b8101906020818303126129925780519067ffffffffffffffff821161299257019080601f830112156129925781518d92612a55612a4c83613387565b94519485613346565b81845260208085019260051b82010192831161299257602001905b828210612a7f575050506117b0565b8151815260209182019101612a70565b8c513d5f823e3d90fd5b506020813d602011612ac5575b81612ab360209383613346565b81010312612992576117589051611718565b3d9150612aa6565b506020813d602011612af9575b81612ae760209383613346565b81010312612992576116dd905161169d565b3d9150612ada565b909a506020813d602011612b2d575b81612b1d60209383613346565b810103126129925751995f611604565b3d9150612b10565b6040513d5f823e3d90fd5b9098503d805f833e612b528183613346565b8101906020818303126129925780519067ffffffffffffffff821161299257019080601f8301121561299257815190612b8a82613387565b92612b986040519485613346565b82845260208085019360051b82010191821161299257602001915b818310612bc457505050975f6115b9565b825173ffffffffffffffffffffffffffffffffffffffff8116810361299257815260209283019201612bb3565b612c129060403d604011612c18575b612c0a8183613346565b810190613430565b50611525565b503d612c00565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b612c649060403d604011612c1857612c0a8183613346565b506112b9565b612c8491935060403d604011612c1857612c0a8183613346565b50915f611019565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4d53523a206b617070613c3d300000000000000000000000000000000000006044820152fd5b506f7fffffffffffffffffffffffffffffff811315610ea3565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4c4d53523a20793c3d30000000000000000000000000000000000000000000006044820152fd5b8002908160ff1c9182607f011c918302019160011d9190610dfb565b9060010190610dc4565b92810192811d610dbd565b6004938401931d610db3565b6008938401931d610da9565b6010938401931d610d9e565b6020938401931d610d92565b506040915080821d610d81565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4c4d53523a20626164204520726174696f0000000000000000000000000000006044820152fd5b50680100000000000000008212610d62565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4c4d53523a2062616420736c697070616765206f72206e0000000000000000006044820152fd5b506f7fffffffffffffffffffffffffffffff811315610d32565b506f7fffffffffffffffffffffffffffffff811315610cf5565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4c4d53523a20663e3d31000000000000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4c4d53523a20663d3000000000000000000000000000000000000000000000006044820152fd5b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526012600452fd5b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b6040513d87823e3d90fd5b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b6040513d86823e3d90fd5b6024877f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b6040513d85823e3d90fd5b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b6040513d84823e3d90fd5b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b50604051903d90823e3d90fd5b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8161313991613346565b61009857805f6108a0565b50fd5b8161315191613346565b61009857805f61082a565b8161316691613346565b61009857805f6107bb565b8161317b91613346565b61009857805f610745565b8161319091613346565b61009857805f6106d4565b816131a591613346565b61009857805f610660565b816131ba91613346565b61009857805f610598565b816131cf91613346565b61009857805f6104d0565b816131e491613346565b61009857805f610408565b816131f991613346565b61009857805f610340565b61321091505f90613346565b5f5f61013d565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e6f74205365706f6c69610000000000000000000000000000000000000000006044820152fd5b34612992575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261299257602060405173fff9976782d46cc05630d1f6ebab18b2324d6b148152f35b34612992575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112612992576020604051730e280f5eda58872d7cdaa8ac0a57a55fd6133aed8152f35b34612992575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126129925780620186a060209252f35b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176129d457604052565b67ffffffffffffffff81116129d45760051b60200190565b8051156133ac5760200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8051600110156133ac5760400190565b8051600210156133ac5760600190565b8115613403570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b919082604091031261299257815173ffffffffffffffffffffffffffffffffffffffff811681036129925760209092015190565b90602080835192838152019201905f5b8181106134815750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101613474565b90602080835192838152019201905f5b8181106134ca5750505090565b82518452602093840193909201916001016134bd565b6020818303126129925780519067ffffffffffffffff8211612992570181601f820112156129925780519067ffffffffffffffff82116129d45760405192613550601f84017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200185613346565b8284526020838301011161299257815f9260208093018386015e8301015290565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b90816020910312612992575180151581036129925790565b5f90602073ffffffffffffffffffffffffffffffffffffffff604481600c5460181c169360405195869384927f095ea7b300000000000000000000000000000000000000000000000000000000845216958660048401527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248401525af1918215612b35575f926138da575b50602073ffffffffffffffffffffffffffffffffffffffff600d54166044604051809581937f095ea7b30000000000000000000000000000000000000000000000000000000083528660048401527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248401525af1918215612b35575f926138bd575b50602073ffffffffffffffffffffffffffffffffffffffff600e54166044604051809581937f095ea7b30000000000000000000000000000000000000000000000000000000083528660048401527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248401525af1918215612b35575f926138a0575b50602073ffffffffffffffffffffffffffffffffffffffff600f54166044604051809581937f095ea7b30000000000000000000000000000000000000000000000000000000083528660048401527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248401525af1908115612b35575f92602092613885575b50604473ffffffffffffffffffffffffffffffffffffffff601054169160405194859384927f095ea7b300000000000000000000000000000000000000000000000000000000845260048401527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248401525af18015612b355761386a5750565b6138829060203d60201161296b5761295e8183613346565b50565b61389b90833d851161296b5761295e8183613346565b6137e8565b6138b89060203d60201161296b5761295e8183613346565b613761565b6138d59060203d60201161296b5761295e8183613346565b6136dd565b6138f29060203d60201161296b5761295e8183613346565b613659565b90816060910312612992578051916040602083015192015190565b5f806040517f51973ec90000000000000000000000000000000000000000000000000000000060208201526004815261394c602482613346565b6020815191016a636f6e736f6c652e6c6f675afa50565b6139c061394c5f9392849373ffffffffffffffffffffffffffffffffffffffff6040519485937f319af333000000000000000000000000000000000000000000000000000000006020860152604060248601526064850190613571565b91166044830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282613346565b90600f0b9081156129925760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613a3a575b1561299257600f0b90565b506f7fffffffffffffffffffffffffffffff811315613a2f565b613a9c61394c5f939284936040519384927fb60e72cc000000000000000000000000000000000000000000000000000000006020850152604060248501526064840190613571565b906044830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810183528261334656fe60a03461009c57601f6138d638819003918201601f19168301916001600160401b038311848410176100a05780849260209460405283398101031261009c57516001600160a01b038116810361009c5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005560805260405161382190816100b58239608051818181610cfc015281816113670152611dfa0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f5f3560e01c80632a54db01146116555780638a3d858d146109d8578063bf05a0a6146107db5763e49cd47514610046575f80fd5b346107d85760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107d85760043573ffffffffffffffffffffffffffffffffffffffff811681036107d65761009d61192b565b60443567ffffffffffffffff606435116107d2573660236064350112156107d25767ffffffffffffffff60643560040135116107d257366024606435600401356064350101116107d25760a435916100f3611caa565b61010260ff6008541615611aab565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff86165afa9081156107c7578691610795575b5082116107375773ffffffffffffffffffffffffffffffffffffffff81168552600e602052604085205480156106d957807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101116106ac576101c0608435846129da565b50908694801515806106a3575b61060d575b5061020a8473ffffffffffffffffffffffffffffffffffffffff881673ffffffffffffffffffffffffffffffffffffffff8616611d21565b6040517f23e30c8b00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015284604482015282606482015260a060848201526064356004013560a48201526064356004013560246064350160c48301378760c4606435600401358301015260208160c4817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60643560040135011681010301818b73ffffffffffffffffffffffffffffffffffffffff8c165af1801561054e5788906105b7575b7f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd9915003610559576103576103248386611b10565b73ffffffffffffffffffffffffffffffffffffffff851673ffffffffffffffffffffffffffffffffffffffff8916611de2565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff88165afa90811561054e57869798969596916104ef575b507f249e0bf62ff982342c6a63926041694a221796af4b9ebacefc45823da42348139473ffffffffffffffffffffffffffffffffffffffff94936104938461045d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6104566104989761043e61042f846104bd9c016119e4565b90549060031b1c821015611b67565b6104498386016119e4565b90549060031b1c90611a71565b9201611a41565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b611a71565b9583604051948594169816963396846040919493926060820195825260208201520152565b0390a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055602060405160018152f35b94505091906020843d602011610546575b8161050d6020938361195e565b8101031261054257925185939192907f249e0bf62ff982342c6a63926041694a221796af4b9ebacefc45823da42348136103b5565b5f80fd5b3d9150610500565b6040513d8a823e3d90fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f666c6173683a2063616c6c6261636b00000000000000000000000000000000006044820152fd5b506020813d602011610605575b816105d16020938361195e565b81010312610601577f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd990516102ef565b8780fd5b3d91506105c4565b620f424091955061061e9083611b1d565b04938461062c575b5f6101d2565b61069e61065a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83016119e4565b61066a8883548360031b1c611b10565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b610626565b508215156101cd565b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f666c6173683a20746f6b656e206e6f7420696e20706f6f6c00000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f666c6173683a20616d6f756e74203e2062616c616e63650000000000000000006044820152fd5b90506020813d6020116107bf575b816107b06020938361195e565b8101031261054257515f61015b565b3d91506107a3565b6040513d88823e3d90fd5b8380fd5b505b80fd5b50346107d85760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107d8576004356024356044359182600f0b83036107d2576064359067ffffffffffffffff82116109d457366023830112156109d45781600401359161084c836119cc565b9261085a604051948561195e565b8084526024602085019160051b8301019136831161060157602401905b8282106109c45750505061088961194e565b9360a43567ffffffffffffffff81116109c057366023820112156109c05780600401356108b5816119cc565b916108c3604051938461195e565b8183526024602084019260051b820101903682116109bc57602401915b81831061099e575050509161090361091392868361090c98979660c4359a611f9d565b95909184611bcc565b5190612757565b9461091f861515611be0565b9480948061096f575b50509161093b6109429261096b94611bcc565b5190612b1a565b9261094e841515611c45565b604051938493846040919493926060820195825260208201520152565b0390f35b81965061096b949295509261099461098d6109429561093b946129a1565b8098611b10565b9592945092610928565b823580600f0b81036109b8578152602092830192016108e0565b8a80fd5b8980fd5b8680fd5b8135815260209182019101610877565b8480fd5b506101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261054257610a0c611908565b90610a1561192b565b610a1d61194e565b9160c43560a43581151582036105425760e43590610a4060ff6008541615611aab565b610a48611caa565b600b5480604435109081611649575b50156115eb575f86600f0b131561158d578015908115611582575b501561152457602495602073ffffffffffffffffffffffffffffffffffffffff610a9d604435611a29565b90549060031b1c16604051988980927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa958615611294575f966114ef575b60249750602073ffffffffffffffffffffffffffffffffffffffff610b0b606435611a29565b90549060031b1c16604051998a80927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa978815611294575f986114bb575b50600954604051600a80548083525f918252602083019493600f0b91907fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a85b8160018401106114905795610bbf928592610bcc98549181811061147c575b1061146b575b50038361195e565b6064359160443591611f9d565b610bea610bdd604499939935611a59565b90549060031b1c89612757565b97610bf6891515611be0565b5f9789958061144a575b50610c1c610c0f606435611a59565b90549060031b1c84612b1a565b9a610c288c1515611c45565b73ffffffffffffffffffffffffffffffffffffffff610c48604435611a29565b90549060031b1c1696610c5c818989611de2565b604051957f70a082310000000000000000000000000000000000000000000000000000000087523060048801526020876024818c5afa968715611294575f97611412575b5090610cab91611b10565b850361138e5773ffffffffffffffffffffffffffffffffffffffff610cd1606435611a29565b90549060031b1c16978061134f575b1561129f5773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b15610542575f809160248f60405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af1908115611294578d9161127f575b508980808093865af13d1561127a573d67ffffffffffffffff811161124d5760405190610dbe60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116018361195e565b81528a60203d92013e5b156111ef575b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526020816024818c5afa9081156111e4578d908b926111ae575b50610e1e9192611a71565b810361112a5788948a61010435151580611121575b6110c8575b50610e8f91610e6b610e60610e8493610e5561042f6044356119e4565b6104496044356119e4565b61045d604435611a41565b610e7961042f6064356119e4565b6104496064356119e4565b61045d606435611a41565b8782600f0b131561106a578783600f0b131561100c577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c93610f5e610f5360a095610f39610f0673ffffffffffffffffffffffffffffffffffffffff97610ef7604435611f5d565b90549060031b1c600f0b6129ff565b610f11604435611f5d565b9091906fffffffffffffffffffffffffffffffff83549160031b928116831b921b1916179055565b610f44606435611f5d565b90549060031b1c600f0b612a57565b610f11606435611f5d565b610f68818b611a71565b83604051971687528b60208801528c6040880152606087015260808601521692a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015610fdb575b50505061096b90604051938493846040919493926060820195825260208201520152565b8280809381938290611003575b3390f115610ff7578080610fb7565b604051903d90823e3d90fd5b506108fc610fe8565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a20616d6f756e744f7574203c3d20300000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4d53523a20616d6f756e74496e203c3d2030000000000000000000000000006044820152fd5b610e8491965091610e6b610e60620f42406110ea610e8f966101043590611b1d565b0498896110fe575b9350505091508a610e38565b61111c61110c6044356119e4565b61066a8d83548360031b1c611b10565b6110f2565b50801515610e33565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f73776170546f4c696d69743a206e6f6e2d7374616e6461726420746f6b656e4f60448201527f75740000000000000000000000000000000000000000000000000000000000006064820152fd5b9150506020813d6020116111dc575b816111ca6020938361195e565b8101031261054257518c610e1e610e13565b3d91506111bd565b6040513d8c823e3d90fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b60248b7f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b610dc8565b61128c919a505f9061195e565b5f985f610d69565b6040513d5f823e3d90fd5b6040517fa9059cbb000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff83166004528c60245260205f604481808d5af19060015f511482161561132e575b604052610dce57877f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b90600181151661134657893b15153d151616906112fb565b503d5f823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168814610ce0565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f73776170546f4c696d69743a206e6f6e2d7374616e6461726420746f6b656e4960448201527f6e000000000000000000000000000000000000000000000000000000000000006064820152fd5b919096506020823d602011611442575b8161142f6020938361195e565b8101031261054257905195610cab610ca0565b3d9150611422565b909550611459919850896129a1565b96611464888a611b10565b945f610c00565b60801d600f0b81526020015f610bb7565b92602060019184600f0b8152019301610bb1565b8054600f81810b895260809190911d900b602088015260409096019560029290920191600101610b92565b9097506020813d6020116114e7575b816114d76020938361195e565b810103126105425751965f610b53565b3d91506114ca565b95506020873d60201161151c575b8161150a6020938361195e565b81010312610542576024965195610ae5565b3d91506114fd565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f73776170546f4c696d69743a20646561646c696e6520657863656564656400006044820152fd5b90504211155f610a72565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f73776170546f4c696d69743a206c696d6974203c3d20300000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f73776170546f4c696d69743a20696478000000000000000000000000000000006044820152fd5b9050606435105f610a57565b346105425760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105425761168c611908565b611694611caa565b73ffffffffffffffffffffffffffffffffffffffff8116156118aa57600b545f5b818110611706577fd508feb4afc81230b8e5dcca865a405a72db1f928a5064f893ab22ab56ec25215f80a160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055005b61170f816119e4565b90549060031b1c9081156118a1576024602073ffffffffffffffffffffffffffffffffffffffff61173f84611a29565b90549060031b1c16604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa908115611294575f91611870575b5082811061181257826117e06117d760019561180c946117a6876119e4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82549160031b1b19169055611a71565b61045d85611a41565b8573ffffffffffffffffffffffffffffffffffffffff6117ff85611a29565b90549060031b1c16611d21565b016116b5565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f636f6c6c6563743a20666565203e2062616c00000000000000000000000000006044820152fd5b90506020813d8211611899575b8161188a6020938361195e565b81010312610542575185611787565b3d915061187d565b6001915061180c565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f636f6c6c6563743a207a65726f206164647200000000000000000000000000006044820152fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361054257565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361054257565b6084359081600f0b820361054257565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761199f57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b67ffffffffffffffff811161199f5760051b60200190565b600c548110156119fc57600c5f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600b548110156119fc57600b5f5260205f2001905f90565b600f548110156119fc57600f5f5260205f2001905f90565b600d548110156119fc57600d5f5260205f2001905f90565b91908203918211611a7e57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b15611ab257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b91908201809211611a7e57565b81810292918115918404141715611a7e57565b8115611b3a570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b15611b6e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f62616c616e6365203c2070726f746f636f6c206f7765640000000000000000006044820152fd5b80518210156119fc5760209160051b010190565b15611be757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f73776170546f4c696d69743a20696e707574207a65726f0000000000000000006044820152fd5b15611c4c57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f73776170546f4c696d69743a206f7574707574207a65726f00000000000000006044820152fd5b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005414611cf95760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b9173ffffffffffffffffffffffffffffffffffffffff604051927fa9059cbb000000000000000000000000000000000000000000000000000000005f521660045260245260205f60448180865af19060015f5114821615611dca575b60405215611d885750565b73ffffffffffffffffffffffffffffffffffffffff907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b90600181151661134657823b15153d15161690611d7d565b9073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169173ffffffffffffffffffffffffffffffffffffffff82169183831480611f53575b15611e9457505050803b15610542575f906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af1801561129457611e885750565b5f611e929161195e565b565b919390925073ffffffffffffffffffffffffffffffffffffffff604051937f23b872dd000000000000000000000000000000000000000000000000000000005f52166004523060245260445260205f60648180855af19060015f5114821615611f34575b50906040525f60605215611f095750565b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6001821516611f4a573b15153d1516165f611ef8565b823d5f823e3d90fd5b5084341015611e3c565b90600a548210156119fc57600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b93929491909483600f0b905f8213156126f9575f94855b8851871015611fdf57611fd7600191611fcd898c611bcc565b51600f0b906129ff565b960195611fb4565b90929496919395505f81600f0b131561269b57611ffb91612a94565b9081600f0b80156105425770010000000000000000000000000000000005947fffffffffffffffffffffffffffffffff8000000000000000000000000000000086121580612681575b15610542576120806120859161207b61206398600f0b9889928c611bcc565b51600f0b612071888d611bcc565b51600f0b90612a57565b612a94565b612b75565b9081600f0b948512156125fd578161209c91612ad4565b600f0b5f811315610542575f9080680100000000000000008212156125f0575b8064010000000060029212156125e4575b620100008112156125d8575b6101008112156125cc575b60108112156125c0575b60048112156125b5575b12156125ab575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f831361258f57506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d926121638484612a94565b937fffffffffffffffffffffffffffffffff8000000000000000000000000000000081600f0b146105425761219c905f03600f0b612b75565b600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612575575b15610542576121e690600f0b83612a94565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061255b575b1561054257600f0b5f811315610542575f90806801000000000000000082121561254e575b806401000000006002921215612542575b62010000811215612536575b61010081121561252a575b601081121561251e575b6004811215612513575b1215612509575b607f8290031b91907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160401b6780000000000000005b5f81136124e957506122f292506fb17217f7d1cf79abc9e3b39803f2f6af6122ec91600f0b0260801d85612a94565b98611bcc565b51600f0b9383958589600f0b1361230e575b5050505050509190565b85985068010000000000000000929496506120809061232f92949699612a94565b9101907fffffffffffffffffffffffffffffffff80000000000000000000000000000000821215806124cf575b156105425761236d91600f0b612a57565b905f600f83900b13612388575050505b5f8080808080612304565b612393929350612ad4565b600f0b5f811315610542575f9080680100000000000000008212156124c2575b8064010000000060029212156124b6575b620100008112156124aa575b61010081121561249e575b6010811215612492575b6004811215612487575b121561247d575b607f8290031b91907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160401b6780000000000000005b5f811361245d57506124589250600f0b6fb17217f7d1cf79abc9e3b39803f2f6af0260801d90612a94565b61237d565b91928002908160ff1c9182607f011c918302019160011d9291909261242d565b90600101906123f6565b92810192811d6123ef565b6004938401931d6123e5565b6008938401931d6123db565b6010938401931d6123d0565b6020938401931d6123c4565b506040915080821d6123b3565b506f7fffffffffffffffffffffffffffffff82131561235c565b91928002908160ff1c9182607f011c918302019160011d929190926122bd565b9060010190612286565b92810192811d61227f565b6004938401931d612275565b6008938401931d61226b565b6010938401931d612260565b6020938401931d612254565b506040915080821d612243565b506f7fffffffffffffffffffffffffffffff81131561221e565b506f7fffffffffffffffffffffffffffffff8113156121d4565b8002908160ff1c9182607f011c918302019160011d9190612136565b90600101906120ff565b92810192811d6120f8565b6004938401931d6120ee565b6008938401931d6120e4565b6010938401931d6120d9565b6020938401931d6120cd565b506040915080821d6120bc565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4c4d53523a206c696d69745072696365203c3d2063757272656e74207072696360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152fd5b506f7fffffffffffffffffffffffffffffff861315612044565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4c4d53523a206c696d69745072696365203c3d203000000000000000000000006044820152fd5b6127618282612b1a565b9180156105425777ffffffffffffffffffffffffffffffffffffffffffffffff83116127f257612794908360401b611b30565b6fffffffffffffffffffffffffffffffff8111610542576fffffffffffffffffffffffffffffffff16906f7fffffffffffffffffffffffffffffff821161054257600f0b90600f0b126127e45790565b60018101809111611a7e5790565b60c083811c8091640100000000821015612994575b60028262010000612894941015612988575b61010081101561297c575b6010811015612970575b6004811015612965575b101561295d575b8560017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b611b30565b916fffffffffffffffffffffffffffffffff8311610542578060801c83026fffffffffffffffffffffffffffffffff82168402838760401b90828210612933575b5003928160801b9182851061290a575b60801c036128ff576128f79203611b30565b905b01612794565b5050506001906128f9565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906128e5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f6128d5565b60010161283f565b91810191811c612838565b6004928301921c61282e565b6008928301921c612824565b6010928301921c612819565b505060e084811c90612807565b9080156129d4576129b191611b1d565b620f4240810190818111611a7e57620f423f01908111611a7e57620f4240900490565b50505f90565b919080156129f9576129ef6129f691846129a1565b8093611a71565b90565b505f9190565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612a3d575b1561054257600f0b90565b506f7fffffffffffffffffffffffffffffff811315612a32565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612a3d571561054257600f0b90565b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612a3d571561054257600f0b90565b90600f0b9081156105425760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612a3d571561054257600f0b90565b81156129d457600f0b5f8112610542576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116105425760401b81198111610542570190565b600f0b68400000000000000000811215610542577fffffffffffffffffffffffffffffffffffffffffffffffc000000000000000008112612bd257700171547652b82fe1777d0ffda0d23a7d126129f6910260801d600f0b612bd7565b505f90565b80600f0b68400000000000000000811215610542577fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000081126129d4576f80000000000000000000000000000000915f6780000000000000008216600f0b136137d3575b5f6740000000000000008216600f0b136137b6575b5f6720000000000000008216600f0b13613799575b5f6710000000000000008216600f0b1361377c575b5f6708000000000000008216600f0b1361375f575b5f6704000000000000008216600f0b13613742575b5f6702000000000000008216600f0b13613725575b5f6701000000000000008216600f0b13613708575b5f66800000000000008216600f0b136136eb575b5f66400000000000008216600f0b136136ce575b5f66200000000000008216600f0b136136b1575b5f66100000000000008216600f0b13613694575b5f66080000000000008216600f0b13613677575b5f66040000000000008216600f0b1361365a575b5f66020000000000008216600f0b1361363d575b5f66010000000000008216600f0b13613620575b5f658000000000008216600f0b13613603575b5f654000000000008216600f0b136135e6575b5f652000000000008216600f0b136135c9575b5f651000000000008216600f0b136135ac575b5f650800000000008216600f0b1361358f575b5f650400000000008216600f0b13613572575b5f650200000000008216600f0b13613555575b5f650100000000008216600f0b13613538575b5f6480000000008216600f0b1361351b575b5f6440000000008216600f0b136134fe575b5f6420000000008216600f0b136134e1575b5f6410000000008216600f0b136134c4575b5f6408000000008216600f0b136134a7575b5f6404000000008216600f0b1361348a575b5f6402000000008216600f0b1361346d575b5f6401000000008216600f0b13613450575b5f63800000008216600f0b13613433575b5f63400000008216600f0b13613416575b5f63200000008216600f0b136133f9575b5f63100000008216600f0b136133dc575b5f63080000008216600f0b136133bf575b5f63040000008216600f0b136133a2575b5f63020000008216600f0b13613385575b5f63010000008216600f0b13613368575b5f628000008216600f0b1361334b575b5f624000008216600f0b1361332e575b5f622000008216600f0b13613311575b5f621000008216600f0b136132f4575b5f620800008216600f0b136132d7575b5f620400008216600f0b136132ba575b5f620200008216600f0b1361329d575b5f620100008216600f0b13613280575b5f6180008216600f0b13613263575b5f6140008216600f0b13613246575b5f6120008216600f0b13613229575b5f6110008216600f0b1361320c575b5f6108008216600f0b136131ef575b5f6104008216600f0b136131d2575b5f6102008216600f0b136131b5575b5f6101008216600f0b13613198575b5f60808216600f0b1361317b575b5f60408216600f0b1361315e575b5f60208216600f0b13613141575b5f60108216600f0b13613124575b5f60088216600f0b13613107575b5f60048216600f0b136130ea575b5f60028216600f0b136130cc575b60015f9116600f0b136130af575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161054257600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c90613085565b7001000000000000000162e42fefa39ef35890920260801c91613077565b9170010000000000000002c5c85fdf473de6b20260801c91613069565b91700100000000000000058b90bfbe8e7bcd6d0260801c9161305b565b917001000000000000000b17217f7d1cf79afa0260801c9161304d565b91700100000000000000162e42fefa39ef366f0260801c9161303f565b917001000000000000002c5c85fdf473de6eca0260801c91613031565b9170010000000000000058b90bfbe8e7bce5440260801c91613023565b91700100000000000000b17217f7d1cf79e9490260801c91613015565b9170010000000000000162e42fefa39ef44d910260801c91613006565b91700100000000000002c5c85fdf473dea871f0260801c91612ff7565b917001000000000000058b90bfbe8e7bdcbe2e0260801c91612fe8565b9170010000000000000b17217f7d1cf7d83c1a0260801c91612fd9565b917001000000000000162e42fefa39f02b772c0260801c91612fca565b9170010000000000002c5c85fdf473e242ea380260801c91612fbb565b91700100000000000058b90bfbe8e7cc35c3f00260801c91612fac565b917001000000000000b17217f7d1cfb72b45e10260801c91612f9d565b91700100000000000162e42fefa39fe95583c20260801c91612f8d565b917001000000000002c5c85fdf4741bea6e77e0260801c91612f7d565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c91612f6d565b91700100000000000b17217f7d1d351a389d400260801c91612f5d565b9170010000000000162e42fefa3ae53369388c0260801c91612f4d565b91700100000000002c5c85fdf477b662b269450260801c91612f3d565b917001000000000058b90bfbe8f71cb4e4b33d0260801c91612f2d565b9170010000000000b17217f7d20cf927c8e94c0260801c91612f1d565b917001000000000162e42fefa494f1478fde050260801c91612f0c565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c91612efb565b91700100000000058b90bfbe9ddbac5e109cce0260801c91612eea565b917001000000000b17217f7d5a7716bba4a9ae0260801c91612ed9565b91700100000000162e42fefb2fed257559bdaa0260801c91612ec8565b917001000000002c5c85fdf84bd62ae30a74cc0260801c91612eb7565b9170010000000058b90bfbf8479bd5a81b51ad0260801c91612ea6565b91700100000000b17217f80f4ef5aadda455540260801c91612e95565b9170010000000162e42ff0999ce3541b9fffcf0260801c91612e83565b91700100000002c5c85fe31f35a6a30da1be500260801c91612e71565b917001000000058b90bfcdee5acd3c1cedc8230260801c91612e5f565b9170010000000b17217fba9c739aa5819f44f90260801c91612e4d565b917001000000162e42fff037df38aa2b219f060260801c91612e3b565b9170010000002c5c8601cc6b9e94213c72737a0260801c91612e29565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91612e17565b917001000000b1721835514b86e6d96efd1bfe0260801c91612e05565b91700100000162e430e5a18f6119e3c02282a50260801c91612df2565b917001000002c5c863b73f016468f6bac5ca2b0260801c91612ddf565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91612dcc565b91700100000b1721bcfc99d9f890ea069117630260801c91612db9565b9170010000162e43f4f831060e02d839a9d16d0260801c91612da6565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c91612d93565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c91612d80565b9170010000b17255775c040618bf4a4ade83fc0260801c91612d6d565b917001000162e525ee054754457d59952920260260801c91612d59565b9170010002c5cc37da9491d0985c348c68e7b30260801c91612d45565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91612d31565b917001000b175effdc76ba38e31671ca9397250260801c91612d1d565b91700100162f3904051fa128bca9c55c31e5df0260801c91612d09565b917001002c605e2e8cec506d21bfc89a23a00f0260801c91612cf5565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c91612ce1565b91700100b1afa5abcbed6129ab13ec11dc95430260801c91612ccd565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c91612cb8565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c91612ca3565b917001059b0d31585743ae7c548eb68ca417fd0260801c91612c8e565b9170010b5586cf9890f6298b92b71842a983630260801c91612c79565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c91612c64565b917001306fe0a31b7152de8d5a46305c85edec0260801c91612c4f565b6fb504f333f9de6484597d89b3754abe9f9250612c3a56fea2646970667358221220e1cf16dbf2fb3dde0a41d9bda8bbba591e29d69326ff632243d789c4d486fbe164736f6c634300081e003360a03461009c57601f61553838819003918201601f19168301916001600160401b038311848410176100a05780849260209460405283398101031261009c57516001600160a01b038116810361009c5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005560805260405161548390816100b58239608051818181612cd6015281816131e7015261343f0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c8063228fa850146124535780633dd3c80514611d5c5780636863f5bc146119a55780638d01fa4414611483578063b3f1c93d14611009578063c5eabfb914610831578063cdc2468b14610803578063e9f317f0146102285763f16b7c261461007c575f80fd5b346102245761008a366125fe565b94919080949394518410156101c657821561016857851561010a576100dc846100d46100e3946100fd976100c360409b6100ea99613689565b9160208151600f0b910151906141fe565b939050612798565b5190612e7c565b9283612c31565b50826100f882809511612abd565b61295c565b9082519182526020820152f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6275726e53776170416d6f756e74733a20656d70747920737570706c790000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6275726e53776170416d6f756e74733a207a65726f206c7000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6275726e53776170416d6f756e74733a206964780000000000000000000000006044820152fd5b5f80fd5b3461022457610236366125fe565b925f9594959291925082518510156107a5578515610747576020820191825151156106e9578115159387856106b8575b61027b906102748984612798565b5190613689565b5f81600f0b13156106345761029e6102a691896102ad9551600f0b88519061397d565b989092612798565b51906141c9565b9081156105b0575f9361055b575b50826102c69161294f565b948515159081610550575b50156104cc5751935f92835b8651851015610308576103006001916102f6878a612798565b51600f0b90612f34565b9401936102dd565b90855f83600f0b131561046e5761032b6103309161032585612e62565b94612f34565b612e62565b91816103c3575050915b82156103655761036190604051938493846040919493926060820195825260208201520152565b0390f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761704d696e74416d6f756e74733a207a65726f204c50206d696e746564006044820152fd5b90918115610410578180821115610407576103dd9161295c565b915b82156103fd576103f7926103f2916127d9565b6127ec565b9161033a565b5050505f9161033a565b50505f916103df565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761704d696e74416d6f756e74733a206f6c645363616c6564207a65726f006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f737761704d696e74416d6f756e74733a207a65726f20746f74616c00000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f737761704d696e74416d6f756e74733a207472616e736665722065786365656460448201527f73206d61780000000000000000000000000000000000000000000000000000006064820152fd5b9050851115866102d1565b816105679294506127d9565b620f423f810180911161058357620f42409004916102c66102bb565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f737761704d696e74416d6f756e74733a20696e707574207a65726f206166746560448201527f7220696e7465726e616c20636f6e76657273696f6e00000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f737761704d696e74416d6f756e74733a20696e70757420746f6f20736d616c6c60448201527f20616674657220666565000000000000000000000000000000000000000000006064820152fd5b506106c383896127d9565b620f423f8101809111610583576106e2620f424061027b92048a61295c565b9050610266565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f737761704d696e74416d6f756e74733a20756e696e697420706f6f6c000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f737761704d696e74416d6f756e74733a20696e707574207a65726f00000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f737761704d696e74416d6f756e74733a206964780000000000000000000000006044820152fd5b346102245761036161081d61081736612523565b91612b22565b604051918291602083526020830190612577565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610224576108636125aa565b602435906044359081600f0b82036102245761088460ff600854161561288a565b61088c612bba565b600b5490600354158015610fff575b15610f7b576108a982612749565b936108b383612749565b925f5b818110610d54575050600a548551809103610b5e575b505f5b855181101561092457806108e560019288612798565b51600f0b61091c6108f5836129fd565b81939154906fffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b9055016108cf565b50835f610937610932612969565b612e37565b600f0b1315610b00577fffffffffffffffffffffffffffffffff0000000000000000000000000000000060095416906fffffffffffffffffffffffffffffffff16176009555f600954600f0b1315610aa25780610a7757507f6bc0553967b8bb727947c938555c0e061c3f96b629935c8f82a43b558dfb1c576109f3670de0b6b3a7640000935b84610a68575b73ffffffffffffffffffffffffffffffffffffffff6040519283925f8452606060208501526060840190612577565b9486604084015216930390a260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015610a38575b602083604051908152f35b5f80809381938290610a5f575b3390f115610a54578180610a2d565b6040513d5f823e3d90fd5b506108fc610a45565b610a72858561312a565b6109c4565b6109f37f6bc0553967b8bb727947c938555c0e061c3f96b629935c8f82a43b558dfb1c5791936109be565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4c4d53523a206b617070613e30000000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4c4d53523a20746f74616c207a65726f000000000000000000000000000000006044820152fd5b610b6790612749565b80519067ffffffffffffffff8211610d2757680100000000000000008211610d2757600a5482600a55808310610c90575b5060200190600a5f5260205f208160011c915f5b838110610c4257507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8116900380610be7575b5050506108cc565b925f935f5b818110610c0157505050015585808080610bdf565b9091946020610c386001928851600f0b908560041b6fffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b9601929101610bec565b5f5f5b60028110610c5a575083820155600101610bac565b86519096916001916020916fffffffffffffffffffffffffffffffff60078b901b81811b199092169216901b1792019601610c45565b600a5f5260205f206001808501811c8201920160011c019060108460041b1680610ccf575b505b818110610cc45750610b98565b5f8155600101610cb7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82549160200360031b1c16905589610cb5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6024602073ffffffffffffffffffffffffffffffffffffffff610d7684612907565b90549060031b1c16604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa908115610a54575f91610f4a575b508015610ec65780610e3b91610dd48489612798565b52610e1881610de285612937565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b610e2581610de2856128ef565b610e2e836128ef565b90549060031b1c90613689565b610e458289612798565b90600f0b90525f610e568289612798565b51600f0b1315610e68576001016108b6565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f696e697469616c4d696e743a207a65726f20696e7465726e616c2071000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f696e697469616c4d696e743a207a65726f20696e697469616c2062616c616e6360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152fd5b90506020813d8211610f73575b81610f646020938361246d565b81010312610224575188610dbe565b3d9150610f57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f696e697469616c4d696e743a20706f6f6c20616c726561647920696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152fd5b50600a541561089b565b60807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102245761103b6125aa565b6110436125cd565b906044359160643561105a60ff600854161561288a565b611062612bba565b8015908115611478575b501561141a57600b5460035480158015611410575b61138c57841561132e576110ac61109c61032b610932612969565b916110a5612a3d565b9087612b22565b915f5b8181106112d557506110c081612749565b905f5b81811061128857505061032b816109326110dc93613047565b818082111561127f576110ee9161295c565b905b8115611276576103f2611105926003546127d9565b935b8415611218576201869f81029081046201869f0361058357620186a0900484106111ba578161117f8573ffffffffffffffffffffffffffffffffffffffff93611171827f6bc0553967b8bb727947c938555c0e061c3f96b629935c8f82a43b558dfb1c579761312a565b604051948594169684612a85565b0390a260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015610a3857602083604051908152f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6d696e743a20696e73756666696369656e74204c50206d696e746564000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6d696e743a207a65726f204c50206d696e7465640000000000000000000000006044820152fd5b50505f93611107565b50505f906110f0565b806112bf6112b261129a600194612937565b90549060031b1c6112ab848a612798565b519061294f565b610e2581610de285612937565b6112c98286612798565b90600f0b9052016110c3565b806112e260019286612798565b516112ee575b016110af565b61132973ffffffffffffffffffffffffffffffffffffffff61130f83612907565b90549060031b1c166113218388612798565b519089612cbe565b6112e8565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6d696e743a207a65726f204c5020616d6f756e740000000000000000000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f6d696e743a2075736520696e697469616c4d696e7420666f7220706f6f6c206960448201527f6e697469616c697a6174696f6e000000000000000000000000000000000000006064820152fd5b50600a5415611081565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f6d696e743a20646561646c696e652065786365656465640000000000000000006044820152fd5b90504211158461106c565b34610224576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610224576114bb6125aa565b6114c36125cd565b9060443591606435916084359360a4359182151583036102245760e435936114e9612bba565b6114f860ff600854161561288a565b600b5496878710156119475783156118e95780159081156118de575b5015611880576003548015611822576115486115336115609286613689565b88600954600f0b611542612969565b906141fe565b9050611553886128ef565b90549060031b1c90612e7c565b9461157e61157060c43588612c31565b50876100f882809a11612abd565b965f9180151580611819575b6117a5575b506115b88573ffffffffffffffffffffffffffffffffffffffff861695863303611760576135b1565b6115ea73ffffffffffffffffffffffffffffffffffffffff6115d983612907565b90549060031b1c16968985896131c1565b6115f389612749565b905f5b8a81106117075750506001985f5b8181106116ca575b50509161168973ffffffffffffffffffffffffffffffffffffffff927f8c012c6148e8ecc34b864721470dcc1e938d162c498b7d28961a8a78238cfe139460409b5f146116bc575061165c61347c565b611666818a61295c565b8b51978852602088018b9052604088015260608701529116939081906080820190565b0390a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005582519182526020820152f35b6116c590613047565b61165c565b6116d48184612798565b51600f0b6116e457600101611604565b505f9950611689905073ffffffffffffffffffffffffffffffffffffffff61160c565b80611736611716600193612937565b90549060031b1c868d86851461174c575b5050610e2581610de285612937565b6117408286612798565b90600f0b9052016115f6565b6100f8906117599361295c565b868d611727565b865f52600260205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f526020526117a06117998360405f205461295c565b33836134dc565b6135b1565b620f42409192506117b690886127d9565b0490816117c4575b8961158f565b6118146117d08261291f565b6117e08583548360031b1c61294f565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b6117be565b5087151561158a565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6275726e537761703a20656d70747920737570706c79000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6275726e537761703a20646561646c696e6500000000000000000000000000006044820152fd5b905042111588611514565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6275726e537761703a207a65726f206c700000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6275726e537761703a20696478000000000000000000000000000000000000006044820152fd5b346102245760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610224576119dc6125aa565b6119e46125cd565b6084359160443591606435841515850361022457611a00612bba565b8015908115611d51575b5015611cf357600b54928015611c95576003548015611c3757611a3990611a32969596612a3d565b9083612823565b935f5b868110611bd8575050611a4e85612749565b5f5b868110611b9257506001955f5b818110611b55575b505091611adb73ffffffffffffffffffffffffffffffffffffffff927f3f84ed8aa11ed632de380466083280b4c5da668f12695b08636d7848eaf896b494610361985f14611b475750611ab661347c565b838616803303611b16575b50611acc81876135b1565b86604051948594169684612a85565b0390a260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055604051918291602083526020830190612577565b5f52600260205260405f208433165f52602052611b41611b3a8260405f205461295c565b33886134dc565b88611ac1565b611b5090613047565b611ab6565b611b5f8184612798565b51600f0b611b6f57600101611a5d565b505f9650611adb905073ffffffffffffffffffffffffffffffffffffffff611a65565b80611bbf6112b2611ba76001949a999a612937565b90549060031b1c611bb8848c612798565b519061295c565b611bc98285612798565b90600f0b905201959495611a50565b80611be7600192889998612798565b51611bf6575b01959495611a3c565b611c328373ffffffffffffffffffffffffffffffffffffffff611c1884612907565b90549060031b1c1687611c2b858d612798565b51916131c1565b611bed565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6275726e3a20656d70747920737570706c7900000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6275726e3a207a65726f206c70000000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f6275726e3a20646561646c696e652065786365656465640000000000000000006044820152fd5b905042111585611a0a565b60e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022457611d8e6125aa565b611d966125cd565b604435606435916084359360a4359360c43592611db860ff600854161561288a565b611dc0612bba565b600b5496878610156123f557821561239757801590811561238c575b501561232e57600a54156122d057611e02611df78784612c31565b9050610e2e876128ef565b945f86600f0b131561224c57611e2a611e429682600954600f0b611e24612969565b9061397d565b9690611e35836128ef565b90549060031b1c90612c53565b9687156121c857611e539088612c85565b95611e5e878961294f565b9384151590816121bd575b501561215f57611e9f8473ffffffffffffffffffffffffffffffffffffffff611e9185612907565b90549060031b1c1687612cbe565b5f9580151580612156575b612116575b50611ed8611ebd878661295c565b6117e0611ec985612937565b91909283548360031b1c61294f565b611ee3610932612969565b98611ef7611ef08b612e62565b928b612f34565b91611f0183612e62565b6003549091816120d4575050995b8a1561207657611f1e82612749565b925f5b838110612038575050505091611fbf73ffffffffffffffffffffffffffffffffffffffff611f838194611f747fcbf41a060d7827197acec8e5ef3abf36d633e77060f7aec03943608d1cd84ebe97613047565b611f7e8d8661312a565b612907565b90549060031b1c1696611f96818a61295c565b8b8560405196879616991697859094939260609260808301968352602083015260408201520152565b0390a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015612013575b505061036190604051938493846040919493926060820195825260208201520152565b5f8080938193829061202f575b3390f115610a54578380611ff0565b506108fc612020565b806120608461205b8561204c6001966129fd565b90549060031b1c600f0b612f71565b613001565b61206a8288612798565b90600f0b905201611f21565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f737761704d696e743a207a65726f204c50206d696e74656400000000000000006044820152fd5b9091818082111561210d576120e89161295c565b915b8215612103576120fd926103f2916127d9565b99611f0f565b5050505f99611f0f565b50505f916120ea565b620f424091965061212790886127d9565b049485612135575b89611eaf565b6121516121418361291f565b6117e08983548360031b1c61294f565b61212f565b50871515611eaa565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f737761704d696e743a207472616e736665722065786365656473206d617800006044820152fd5b90508411158a611e69565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f737761704d696e743a20696e707574207a65726f20616674657220696e74657260448201527f6e616c20636f6e76657273696f6e0000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f737761704d696e743a20696e70757420746f6f20736d616c6c2061667465722060448201527f66656500000000000000000000000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f737761704d696e743a20756e696e697420706f6f6c00000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f737761704d696e743a20646561646c696e6500000000000000000000000000006044820152fd5b905042111588611ddc565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f737761704d696e743a20696e707574207a65726f0000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f737761704d696e743a20696478000000000000000000000000000000000000006044820152fd5b346102245761036161081d61246736612523565b91612823565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610d2757604052565b67ffffffffffffffff8111610d275760051b60200190565b9080601f830112156102245781356124dd816124ae565b926124eb604051948561246d565b81845260208085019260051b82010192831161022457602001905b8282106125135750505090565b8135815260209182019101612506565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102245760043591602435916044359067ffffffffffffffff821161022457612574916004016124c6565b90565b90602080835192838152019201905f5b8181106125945750505090565b8251845260209384019390920191600101612587565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361022457565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361022457565b359081600f0b820361022457565b60c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102245760043591602435916044359160643567ffffffffffffffff81116102245760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc828503011261022457604051906040820182811067ffffffffffffffff821117610d275760405261269c816004016125f0565b825260248101359067ffffffffffffffff8211610224570183602382011215610224576004810135906126ce826124ae565b916126dc604051938461246d565b808352602060048185019260051b840101019186831161022457602401905b828210612731575050506020820152916084359067ffffffffffffffff82116102245761272a916004016124c6565b9060a43590565b6020809161273e846125f0565b8152019101906126fb565b90612753826124ae565b612760604051918261246d565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061278e82946124ae565b0190602036910137565b80518210156127ac5760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8181029291811591840414171561058357565b81156127f6570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b9082519161283083612749565b9382158015612882575b61287b575f5b84811061284f57505050505090565b8061286a856103f261286360019587612798565b51876127d9565b6128748289612798565b5201612840565b5050505090565b50831561283a565b1561289157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b600d548110156127ac57600d5f5260205f2001905f90565b600b548110156127ac57600b5f5260205f2001905f90565b600c548110156127ac57600c5f5260205f2001905f90565b600f548110156127ac57600f5f5260205f2001905f90565b9190820180921161058357565b9190820391821161058357565b60405190600a548083528260208101600a5f5260205f20925f905b8060018301106129d1576129aa9454918181106129bd575b106129ac575b50038361246d565b565b60801d600f0b81526020015f6129a2565b92602060019184600f0b815201930161299c565b9160029193506040600191865480600f0b825260801d600f0b6020820152019401920185929391612984565b90600a548210156127ac57600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b60405190600f548083528260208101600f5f5260205f20925f5b818110612a6c5750506129aa9250038361246d565b8454835260019485019487945060209093019201612a57565b939291612ab89073ffffffffffffffffffffffffffffffffffffffff604093168652606060208701526060860190612577565b930152565b15612ac457565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6275726e53776170416d6f756e74733a206f7574707574207a65726f000000006044820152fd5b825190612b2e82612749565b9383158015612bb2575b61287b575f5b838110612b4d57505050505090565b612b6a85612b65612b5e8486612798565b51866127d9565b61294f565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820191821161058357612ba1866001936127ec565b612bab8289612798565b5201612b3e565b508215612b38565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005414612c095760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b91908015612c4d57612c466125749184612c85565b809361295c565b505f9190565b612c67612c608383612e7c565b9283613689565b90600f0b90600f0b12612c775790565b600181018091116105835790565b908015612cb857612c95916127d9565b620f424081019081811161058357620f423f0190811161058357620f4240900490565b50505f90565b9073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169173ffffffffffffffffffffffffffffffffffffffff82169183831480612e2d575b15612d6e57505050803b15610224575f906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af18015610a5457612d645750565b5f6129aa9161246d565b919390925073ffffffffffffffffffffffffffffffffffffffff604051937f23b872dd000000000000000000000000000000000000000000000000000000005f52166004523060245260445260205f60648180855af19060015f5114821615612e0e575b50906040525f60605215612de35750565b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6001821516612e24573b15153d1516165f612dd2565b823d5f823e3d90fd5b5084341015612d18565b5f90815b8151831015612e5c57612e546001916102f68585612798565b920191612e3b565b91505090565b600f0b5f811261022457670de0b6b3a76400000260401c90565b8115612cb857600f0b5f8112610224576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116102245760401b81198111610224570190565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a575b1561022457600f0b90565b506f7fffffffffffffffffffffffffffffff811315612f0f565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b600f0b801561022457700100000000000000000000000000000000057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b90600f0b9081156102245760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b5f61305182612e37565b600f0b13156130cc578051600a915f5b82811061306e5750505050565b6130788183612798565b51600f0b9084548110156127ac57600191855f526130c460205f2083851c019160108460041b168354906fffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b905501613061565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a206e657720746f74616c207a65726f0000000000000000000000006044820152fd5b73ffffffffffffffffffffffffffffffffffffffff16908115613195577fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6020826131785f9460035461294f565b6003558484526001825260408420818154019055604051908152a3565b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b90919280613427575b1561335d575073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b15610224576040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081525f816024818380978960048401525af18015610a5457613348575b508180809481935af1903d15613342573d9067ffffffffffffffff821161331557604051916132a760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116018461246d565b825260203d92013e5b156132b757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526041600452fd5b506132b0565b6133559192505f9061246d565b5f905f613250565b9173ffffffffffffffffffffffffffffffffffffffff604051927fa9059cbb000000000000000000000000000000000000000000000000000000005f521660045260245260205f60448180865af19060015f5114821615613406575b604052156133c45750565b73ffffffffffffffffffffffffffffffffffffffff907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b90600181151661341e57823b15153d151616906133b9565b503d5f823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8216146131ca565b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000060095416600955600a545f600a55806134b35750565b600a5f52600160205f20910160011c8101905b8181106134d1575050565b5f81556001016134c6565b73ffffffffffffffffffffffffffffffffffffffff169081156135855773ffffffffffffffffffffffffffffffffffffffff169182156135595760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591835f526002825260405f20855f5282528060405f2055604051908152a3565b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b90919073ffffffffffffffffffffffffffffffffffffffff16801561365d57805f52600160205260405f205483811061362a576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef93858752600184520360408620558060035403600355604051908152a3565b91507fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b81156102245777ffffffffffffffffffffffffffffffffffffffffffffffff811161370157906136bb9160401b6127ec565b6fffffffffffffffffffffffffffffffff8111610224576fffffffffffffffffffffffffffffffff166f7fffffffffffffffffffffffffffffff811161022457600f0b90565b60c09181831c80936401000000008210156138a6575b600282620100006137a494101561389a575b61010081101561388e575b6010811015613882575b6004811015613877575b101561386f575b8360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b6127ec565b926fffffffffffffffffffffffffffffffff8411610224578160801c8402906fffffffffffffffffffffffffffffffff8316850290809460401b90828210613845575b5003928160801b9182851061381c575b60801c036138115761380992036127ec565b905b016136bb565b50505060019061380b565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906137f7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f6137e7565b60010161374f565b91810191811c613748565b6004928301921c61373e565b6008928301921c613734565b6010928301921c613729565b505060e082811c90613717565b156138ba57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b1561391f57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4c4d53523a20623c3d30000000000000000000000000000000000000000000006044820152fd5b90919392938251928382101561416b575f86600f0b131561410d576139a181612e37565b936139bb855f81600f0b13956139b6876138b3565b612f71565b906139ca5f83600f0b13613918565b6139d382612fb1565b916139dd82612749565b955f5b8381106140c357506510c6f7a0b5ed905f901561406557613a01898c613001565b916801000000000000000083600f0b12614054575b5f5b60408110613e39575b505f9b5f935b60408510613c09575b50505050505f955f935f5b848110613b05575b5050505050613af95791613a6b613a61613a7093613a769695612798565b51600f0b87612f71565b612f34565b93612f71565b915f83600f0b13801590613aec575b613a8d579190565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4c4d53523a207a65726f206f75747075740000000000000000000000000000006044820152606490fd5b505f81600f0b1315613a85565b5050505090505f905f90565b878103613b15575b600101613a3b565b613b2c613b228289612798565b51600f0b8d612f71565b5f81600f0b13613b3d575b50613b0d565b82613b4a919a929a612f71565b6820000000000000000081600f0b13613bf557613b69613b84916146aa565b613b7f613b768c87612798565b51600f0b612ed7565b614655565b5f81600f0b1315613bf557613ba690613b9d8b86612798565b51600f0b613001565b5f81600f0b1315613bf557613bbd613bc39161470c565b85612f71565b905f82600f0b12613be157600191613bda91612f34565b9890613b37565b985050505050505060015f80808080613a43565b509750505050505060015f80808080613a43565b68020000000000000000613c1d8286612f34565b60401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613e1f575b1561022457600f0b90898c8c5f915f905f905b8d8210613d01575b505015613ce2575050506f7fffffffffffffffffffffffffffffff5b83600f0b90600f0b135f14613cd95750935b82613ca28587614655565b600f0b1315613cc757603f8114613cbd575b60010193613a27565b929c508c92613cb4565b50505091995050975f80808080613a30565b94935092613c97565b613cf2613a6b91613cfc94612798565b51600f0b85612f71565b613c85565b9092839592949503613d1f575b50506001018c92918f918f92613c61565b8d613d37613d2d8585612798565b51600f0b89612f71565b5f81600f0b13613d49575b5050613d0e565b90613d5691969496612f71565b6820000000000000000081600f0b13613e0f57613d75613d82916146aa565b613b7f613b768885612798565b915f83600f0b1315613dff575090613b9d85613d9d93612798565b8d5f82600f0b1315613df05750613db6613dbc9161470c565b8b612f71565b908d5f83600f0b12613de15750600191613dd591612f34565b9290508c8f8d5f613d42565b93509150508c60018f80613c69565b93505090508c60018f80613c69565b9450505090508c60018f80613c69565b5050925090508c60018f80613c69565b506f7fffffffffffffffffffffffffffffff811315613c4e565b925f5f5f5b888110613f36575b5015613f1657506f7fffffffffffffffffffffffffffffff5b8d600f0b90600f0b12801590613efe575b613ef857600f0b60411b60401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613ede575b1561022457600f0b926a10000000000000000000008413613ecb575b600101613a18565b6a10000000000000000000009350613ec3565b506f7fffffffffffffffffffffffffffffff811315613ea7565b92613a21565b506a100000000000000000000081600f0b1215613e70565b613f3190613a6b613f278c8c612798565b51600f0b84612f71565b613e5f565b839e9c9a98969f9d9b9980989695948b8303613f65575b50506001019e9597999b9d92939496989a9c9e613e3e565b613f7d90613f73848d612798565b51600f0b90612f71565b5f81600f0b13613f8f575b508f613f4d565b90613f9c91949294612f71565b6820000000000000000081600f0b1361403a578b613b7f613b7686613fc3613fc9956146aa565b93612798565b5f81600f0b131561403a57613fe290613b9d858e612798565b5f81600f0b131561403a57613ff9613fff9161470c565b87612f71565b905f82600f0b126140205760019161401691612f34565b929050875f613f88565b9250505060019d9496989a9c9192939597999b9d5f613e46565b5091505060019d9496989a9c9192939597999b9d5f613e46565b680100000000000000009250613a16565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4c4d53523a20737761704d696e7420646567656e6572617465000000000000006044820152fd5b6001906140f76140f2876139b66140da8c8c612798565b51600f0b6140e8868d612798565b51600f0b90614655565b6146aa565b614101828b612798565b90600f0b9052016139e0565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4c4d53523a20616d6f756e74203c3d20300000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4c4d53523a2069647800000000000000000000000000000000000000000000006044820152fd5b6141ee6141df6141d98484612e7c565b93614692565b6141e884614692565b92612f71565b90600f0b90600f0b13612c775790565b93919383600f0b5f8113156145b55768010000000000000000126145575761423861422883612e37565b80926139b65f83600f0b136138b3565b906142475f83600f0b13613918565b61425082612fb1565b61425c84519287612f71565b9661426683612749565b935f5b84811061451e575061427e613d2d8388612798565b975f89600f0b13965f5b8681106142b25750505050505050501580156142a5575b613a8d57565b505f82600f0b131561429f565b8481036142c5575b600101955b95614288565b6142d2613f278284612798565b5f81600f0b136142e3575b506142ba565b6142f387829d949d9b939b612f71565b9182600f0b926820000000000000000084136144f2577fffffffffffffffffffffffffffffffff8000000000000000000000000000000061434e6140f28b8f8f6140e88e6143446139b69484612798565b51600f0b92612798565b94146102245761436d614368614373925f03600f0b6146aa565b614613565b84612f71565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580614504575b1561022457600f0b5f8113156144f257613ff96143c79161470c565b9288888c6143d58282612798565b51600f0b87600f0b1361444a576144049450614440979593506143fb92508e9150612798565b51600f0b612f34565b61440e8b8b612798565b90600f0b905261442b82614422888c612798565b51600f0b614655565b614435878b612798565b90600f0b9052612f34565b98600197886142dd565b61447694965061446d9395506140f2929161446491612798565b51600f0b612f71565b613b7f83612ed7565b915f83600f0b13156144e157506144a561449f61449a6144c995946144af94613001565b61470c565b86612f71565b6143fb8b8b612798565b6144b98a8a612798565b90600f0b90526102f68589612798565b985f6144d58589612798565b526001809801956142bf565b999050600191509a919a01956142bf565b50999050600191509a919a01956142bf565b506f7fffffffffffffffffffffffffffffff8113156143ab565b8061454161452e6001938a612798565b51600f0b61453b8c614613565b90612f71565b61454b8289612798565b90600f0b905201614269565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4275726e20746f6f206c617267650000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4275726e20746f6f20736d616c6c0000000000000000000000000000000000006044820152fd5b600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b677fffffffffffffff81116102245760401b600f0b90565b600f0b68400000000000000000811215610224577fffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000811261470757700171547652b82fe1777d0ffda0d23a7d12612574910260801d600f0b614839565b505f90565b600f0b5f811315610224575f90806801000000000000000082121561482c575b806401000000006002921215614820575b62010000811215614814575b610100811215614808575b60108112156147fc575b60048112156147f1575b12156147e7575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f83136147cb57506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d90565b8002908160ff1c9182607f011c918302019160011d91906147a6565b906001019061476f565b92810192811d614768565b6004938401931d61475e565b6008938401931d614754565b6010938401931d614749565b6020938401931d61473d565b506040915080821d61472c565b80600f0b68400000000000000000811215610224577fffffffffffffffffffffffffffffffffffffffffffffffc000000000000000008112612cb8576f80000000000000000000000000000000915f6780000000000000008216600f0b13615435575b5f6740000000000000008216600f0b13615418575b5f6720000000000000008216600f0b136153fb575b5f6710000000000000008216600f0b136153de575b5f6708000000000000008216600f0b136153c1575b5f6704000000000000008216600f0b136153a4575b5f6702000000000000008216600f0b13615387575b5f6701000000000000008216600f0b1361536a575b5f66800000000000008216600f0b1361534d575b5f66400000000000008216600f0b13615330575b5f66200000000000008216600f0b13615313575b5f66100000000000008216600f0b136152f6575b5f66080000000000008216600f0b136152d9575b5f66040000000000008216600f0b136152bc575b5f66020000000000008216600f0b1361529f575b5f66010000000000008216600f0b13615282575b5f658000000000008216600f0b13615265575b5f654000000000008216600f0b13615248575b5f652000000000008216600f0b1361522b575b5f651000000000008216600f0b1361520e575b5f650800000000008216600f0b136151f1575b5f650400000000008216600f0b136151d4575b5f650200000000008216600f0b136151b7575b5f650100000000008216600f0b1361519a575b5f6480000000008216600f0b1361517d575b5f6440000000008216600f0b13615160575b5f6420000000008216600f0b13615143575b5f6410000000008216600f0b13615126575b5f6408000000008216600f0b13615109575b5f6404000000008216600f0b136150ec575b5f6402000000008216600f0b136150cf575b5f6401000000008216600f0b136150b2575b5f63800000008216600f0b13615095575b5f63400000008216600f0b13615078575b5f63200000008216600f0b1361505b575b5f63100000008216600f0b1361503e575b5f63080000008216600f0b13615021575b5f63040000008216600f0b13615004575b5f63020000008216600f0b13614fe7575b5f63010000008216600f0b13614fca575b5f628000008216600f0b13614fad575b5f624000008216600f0b13614f90575b5f622000008216600f0b13614f73575b5f621000008216600f0b13614f56575b5f620800008216600f0b13614f39575b5f620400008216600f0b13614f1c575b5f620200008216600f0b13614eff575b5f620100008216600f0b13614ee2575b5f6180008216600f0b13614ec5575b5f6140008216600f0b13614ea8575b5f6120008216600f0b13614e8b575b5f6110008216600f0b13614e6e575b5f6108008216600f0b13614e51575b5f6104008216600f0b13614e34575b5f6102008216600f0b13614e17575b5f6101008216600f0b13614dfa575b5f60808216600f0b13614ddd575b5f60408216600f0b13614dc0575b5f60208216600f0b13614da3575b5f60108216600f0b13614d86575b5f60088216600f0b13614d69575b5f60048216600f0b13614d4c575b5f60028216600f0b13614d2e575b60015f9116600f0b13614d11575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161022457600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c90614ce7565b7001000000000000000162e42fefa39ef35890920260801c91614cd9565b9170010000000000000002c5c85fdf473de6b20260801c91614ccb565b91700100000000000000058b90bfbe8e7bcd6d0260801c91614cbd565b917001000000000000000b17217f7d1cf79afa0260801c91614caf565b91700100000000000000162e42fefa39ef366f0260801c91614ca1565b917001000000000000002c5c85fdf473de6eca0260801c91614c93565b9170010000000000000058b90bfbe8e7bce5440260801c91614c85565b91700100000000000000b17217f7d1cf79e9490260801c91614c77565b9170010000000000000162e42fefa39ef44d910260801c91614c68565b91700100000000000002c5c85fdf473dea871f0260801c91614c59565b917001000000000000058b90bfbe8e7bdcbe2e0260801c91614c4a565b9170010000000000000b17217f7d1cf7d83c1a0260801c91614c3b565b917001000000000000162e42fefa39f02b772c0260801c91614c2c565b9170010000000000002c5c85fdf473e242ea380260801c91614c1d565b91700100000000000058b90bfbe8e7cc35c3f00260801c91614c0e565b917001000000000000b17217f7d1cfb72b45e10260801c91614bff565b91700100000000000162e42fefa39fe95583c20260801c91614bef565b917001000000000002c5c85fdf4741bea6e77e0260801c91614bdf565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c91614bcf565b91700100000000000b17217f7d1d351a389d400260801c91614bbf565b9170010000000000162e42fefa3ae53369388c0260801c91614baf565b91700100000000002c5c85fdf477b662b269450260801c91614b9f565b917001000000000058b90bfbe8f71cb4e4b33d0260801c91614b8f565b9170010000000000b17217f7d20cf927c8e94c0260801c91614b7f565b917001000000000162e42fefa494f1478fde050260801c91614b6e565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c91614b5d565b91700100000000058b90bfbe9ddbac5e109cce0260801c91614b4c565b917001000000000b17217f7d5a7716bba4a9ae0260801c91614b3b565b91700100000000162e42fefb2fed257559bdaa0260801c91614b2a565b917001000000002c5c85fdf84bd62ae30a74cc0260801c91614b19565b9170010000000058b90bfbf8479bd5a81b51ad0260801c91614b08565b91700100000000b17217f80f4ef5aadda455540260801c91614af7565b9170010000000162e42ff0999ce3541b9fffcf0260801c91614ae5565b91700100000002c5c85fe31f35a6a30da1be500260801c91614ad3565b917001000000058b90bfcdee5acd3c1cedc8230260801c91614ac1565b9170010000000b17217fba9c739aa5819f44f90260801c91614aaf565b917001000000162e42fff037df38aa2b219f060260801c91614a9d565b9170010000002c5c8601cc6b9e94213c72737a0260801c91614a8b565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91614a79565b917001000000b1721835514b86e6d96efd1bfe0260801c91614a67565b91700100000162e430e5a18f6119e3c02282a50260801c91614a54565b917001000002c5c863b73f016468f6bac5ca2b0260801c91614a41565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91614a2e565b91700100000b1721bcfc99d9f890ea069117630260801c91614a1b565b9170010000162e43f4f831060e02d839a9d16d0260801c91614a08565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c916149f5565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c916149e2565b9170010000b17255775c040618bf4a4ade83fc0260801c916149cf565b917001000162e525ee054754457d59952920260260801c916149bb565b9170010002c5cc37da9491d0985c348c68e7b30260801c916149a7565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91614993565b917001000b175effdc76ba38e31671ca9397250260801c9161497f565b91700100162f3904051fa128bca9c55c31e5df0260801c9161496b565b917001002c605e2e8cec506d21bfc89a23a00f0260801c91614957565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c91614943565b91700100b1afa5abcbed6129ab13ec11dc95430260801c9161492f565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c9161491a565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c91614905565b917001059b0d31585743ae7c548eb68ca417fd0260801c916148f0565b9170010b5586cf9890f6298b92b71842a983630260801c916148db565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c916148c6565b917001306fe0a31b7152de8d5a46305c85edec0260801c916148b1565b6fb504f333f9de6484597d89b3754abe9f925061489c56fea2646970667358221220ea887eebf5245bf1d7b422a689af5404eabe088a83509f6cc5cc6c3f614d2d7e64736f6c634300081e003360808060405234601557615a61908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c636ae73ce314610024575f80fd5b34610373576101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103735760043573ffffffffffffffffffffffffffffffffffffffff81168091036103735760243567ffffffffffffffff8111610373576100959036906004016103f8565b9060443567ffffffffffffffff8111610373576100b69036906004016103f8565b6064359067ffffffffffffffff82116103735736602383011215610373578160040135916100eb6100e684610468565b6103b4565b9060208285815201906024829560051b8201019036821161037357602401915b8183106103875750505060843580600f0b8091036103735760a43567ffffffffffffffff81116103735736602382011215610373578060040135946101526100e687610468565b91602083888152016024819860051b8301019136831161037357602401905b82821061037757505050610104359173ffffffffffffffffffffffffffffffffffffffff831680930361037357610124359373ffffffffffffffffffffffffffffffffffffffff851680950361037357610144359573ffffffffffffffffffffffffffffffffffffffff871680970361037357610164359773ffffffffffffffffffffffffffffffffffffffff8916809903610373576040519b8c9b8c926155688094019e8f9081109067ffffffffffffffff1017610346576102528f92938f94602096610260966104c49039845261018086850152610180840190610480565b916040818403910152610480565b8c810360608e01529151808352910193905f5b81811061031a575050509060209160808b015289830360a08b015251918281520195905f5b81811061030457505050918596916101609360c43560c085015260e43560e0850152610100840152610120830152610140820152015203905ff080156102f95760209073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b6040513d5f823e3d90fd5b8251885260209788019790920191600101610298565b825173ffffffffffffffffffffffffffffffffffffffff16865260209586019590920191600101610273565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f80fd5b8135815260209182019101610171565b823573ffffffffffffffffffffffffffffffffffffffff811681036103735781526020928301920161010b565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff82111761034657604052565b81601f820112156103735780359067ffffffffffffffff82116103465761044660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116016103b4565b928284526020838301011161037357815f926020809301838601378301015290565b67ffffffffffffffff81116103465760051b60200190565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f858286010152011601019056fe610140604052346106ee576155688038038061001a81610a6a565b9283398101610180828203126106ee5761003382610a8f565b60208301516001600160401b0381116106ee5782610052918501610aa3565b60408401519091906001600160401b0381116106ee5783610074918601610aa3565b60608501519094906001600160401b0381116106ee5781019284601f850112156106ee578351956100ac6100a788610af4565b610a6a565b9460208689815201906020829960051b820101908882116106ee57602001915b818310610a4a57505050608083015180600f0b81036106ee5760a08401516001600160401b0381116106ee5784019680601f890112156106ee5787516101146100a782610af4565b986020808b848152019260051b8201019283116106ee57602001905b828210610a3a5750505060c08401519760e0850151926101536101008701610a8f565b610120870151979095906001600160a01b03891689036106ee57610140880151976001600160a01b03891689036106ee576101600151986001600160a01b038a168a036106ee5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00556080526001600160a01b03168015610a27575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a38051906001600160401b0382116106335760045490600182811c92168015610a1d575b60208310146109405781601f8493116109cf575b50602090601f8311600114610969575f9261095e575b50508160011b915f199060031b1c1916176004555b8051906001600160401b0382116106335760055490600182811c92168015610954575b60208310146109405781601f849311610904575b50602090601f831160011461089e575f92610893575b50508160011b915f199060031b1c1916176005555b60018751111561084e578651906001600160401b0382116106335768010000000000000000821161063357600b5482600b55808310610814575b50600b5f5260205f205f5b8381106107f7575050505060a05285518551036107be5761033a8651610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600654836006558084106107a2575b500160065f5260205f205f5b83811061078e57505050505f5b86518110156104185761271061039c8289610b49565b5110156103e1576103ad8188610b49565b51906006548110156103cd5760019160065f528160205f20015501610386565b634e487b7160e01b5f52603260045260245ffd5b60405162461bcd60e51b815260206004820152600f60248201526e506f6f6c3a20666565203e3d20312560881b6044820152606490fd5b50866127108110156107495760c05262061a8081101561070457801580156106f2575b156106ee5760e052601080546001600160a01b0319166001600160a01b039290921691909117905561012052610100528051905f5b8281106106a7578261048181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600d5483600d5580841061068b575b5001600d5f5260205f205f5b83811061067757846104d181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600f5483600f5580841061065b575b5001600f5f5260205f205f5b8381106106475761052085610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600c5483600c55808410610617575b500190600c5f5260205f20915f5b82811061060357604051614a0a9081610b5e8239608051818181611ac301528181611d1401528181612067015261278a015260a051818181610f130152610f7f015260c05181818161134801526116a6015260e0518181816105ac01528181610c550152818161105d0152818161136e015281816114be0152611b9d01526101005181818161031701526105f70152610120518181816108050152610a720152f35b600190602083519301928186015501610561565b61062d90600c5f5284845f209182019101610b0b565b83610553565b634e487b7160e01b5f52604160045260245ffd5b600190602084519401938184015501610510565b61067190600f5f5284845f209182019101610b0b565b84610504565b6001906020845194019381840155016104c0565b6106a190600d5f5284845f209182019101610b0b565b846104b4565b60018101908181116106da576001600160a01b03906106c69084610b49565b51165f52600e6020528060405f2055610470565b634e487b7160e01b5f52601160045260245ffd5b5f80fd5b506001600160a01b038216151561043b565b60405162461bcd60e51b815260206004820152601960248201527f506f6f6c3a2070726f746f636f6c20666565203e3d20343025000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601560248201527f506f6f6c3a20666c61736820666565203e3d20312500000000000000000000006044820152606490fd5b600190602084519401938184015501610379565b6107b89060065f5284845f209182019101610b0b565b5f61036d565b60405162461bcd60e51b81526020600482015260116024820152700a0deded87440cccacae640d8cadccee8d607b1b6044820152606490fd5b82516001600160a01b031681830155602090920191600101610319565b600b5f52610848907f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9908101908401610b0b565b5f61030e565b60405162461bcd60e51b815260206004820152601360248201527f506f6f6c3a206e656564203e31206173736574000000000000000000000000006044820152606490fd5b015190505f806102bf565b60055f9081528281209350601f198516905b8181106108ec57509084600195949392106108d4575b505050811b016005556102d4565b01515f1960f88460031b161c191690555f80806108c6565b929360206001819287860151815501950193016108b0565b6109309060055f5260205f20601f850160051c81019160208610610936575b601f0160051c0190610b0b565b5f6102a9565b9091508190610923565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610295565b015190505f8061025d565b60045f9081528281209350601f198516905b8181106109b7575090846001959493921061099f575b505050811b01600455610272565b01515f1960f88460031b161c191690555f8080610991565b9293602060018192878601518155019501930161097b565b60045f52610a17907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f850160051c8101916020861061093657601f0160051c0190610b0b565b5f610247565b91607f1691610233565b631e4fbdf760e01b5f525f60045260245ffd5b8151815260209182019101610130565b82516001600160a01b03811681036106ee578152602092830192016100cc565b6040519190601f01601f191682016001600160401b0381118382101761063357604052565b51906001600160a01b03821682036106ee57565b81601f820112156106ee578051906001600160401b03821161063357610ad2601f8301601f1916602001610a6a565b92828452602083830101116106ee57815f9260208093018386015e8301015290565b6001600160401b0381116106335760051b60200190565b818110610b16575050565b5f8155600101610b0b565b90610b2e6100a783610af4565b8281528092610b3f601f1991610af4565b0190602036910137565b80518210156103cd5760209160051b01019056fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c908163017504b614612a8e57508063017cf661146129fc57806306fdde03146128b3578063095ea7b3146127ae5780630d246214146127405780630eeee6271461191757806318160ddd146118db5780631f3a0e411461189a57806323b872dd14611703578063313ce567146116c957806331596a6a1461167057806341c0e1b5146115da578063476e44b614611519578063491e7998146113f15780635cffe9de146112115780636863f5bc146110805780636b4082d1146110275780636b7b911214610fa55780636bba3f2f14610f495780636d8d0ff314610e8e5780636ff97f1d14610d8e57806370a0823114610d2b578063715018a614610c8f57806379a68d5314610b6b5780638da5cb5b14610b1a5780638e499bcf14610ade578063939f5ea414610a965780639517606614610a2757806395d89b41146108cd5780639af1d35a1461082e578063a1af5b9a14610765578063a9059cbb14610715578063b3f1c93d14610648578063cb717f3a146104f3578063cce516b7146104a1578063d516b8c614610416578063dd62ed3e1461039d578063e4b50cb81461033b578063f0d1ae4f146102cc5763f2fde38b0361000f57346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610228612b9d565b6102306131e9565b16801561029d5773ffffffffffffffffffffffffffffffffffffffff8254827fffffffffffffffffffffffff00000000000000000000000000000000000000008216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b6024827f1e4fbdf700000000000000000000000000000000000000000000000000000000815280600452fd5b80fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff61038d600435612c6d565b90549060031b1c16604051908152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff60406103ec612b9d565b92826103f6612bc0565b9416815260026020522091165f52602052602060405f2054604051908152f35b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043590602435916064359182600f0b83036102c95761049d61047985858561046f838261330e565b9260443591612f08565b92505050604093919351938493846040919493926060820195825260208201520152565b0390f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff60105416604051908152f35b5060a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761049d61062b61061c61052f612b9d565b610537612bc0565b60443573ffffffffffffffffffffffffffffffffffffffff61055882613235565b9281604051957f3dd3c8050000000000000000000000000000000000000000000000000000000060208801521660248601521660448401526064830152606435608483015260843560a483015260c48201527f000000000000000000000000000000000000000000000000000000000000000060e482015260e481526105e061010482612c2c565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016613255565b60208082518301019101612e9c565b604080519384526020840192909252908201529081906060820190565b5060807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f161067e612b9d565b73ffffffffffffffffffffffffffffffffffffffff61069b612bc0565b81604051937fb3f1c93d00000000000000000000000000000000000000000000000000000000602086015216602484015216604482015260443560648201526064356084820152608481526105e060a482612c2c565b602081519181808201938492010103126107115760209051604051908152f35b5f80fd5b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761075a610750612b9d565b60243590336130c4565b602060405160018152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761082a73ffffffffffffffffffffffffffffffffffffffff60105416604051907f2a54db010000000000000000000000000000000000000000000000000000000060208301526024820152602481526107ee604482612c2c565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016613255565b5080f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760405180916020600654928381520191600682527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f915b8181106108b75761049d856108ab81870382612c2c565b60405191829182612b1c565b8254845260209093019260019283019201610894565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576040519080600554908160011c91600181168015610a1d575b6020841081146109f0578386529081156109ab575060011461094e575b61049d8461094281860382612c2c565b60405191829182612b55565b600581527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0939250905b8082106109915750909150810160200161094282610932565b919260018160209254838588010152019101909291610978565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208087019190915292151560051b850190920192506109429150839050610932565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b92607f1692610915565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020610ad660243560043561330e565b604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600b54604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b5060e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610b9e612b9d565b90610ba7612bc0565b906044356064356084359182600f0b809303610c8b5760c435938415158095036102c95761049d61062b61061c89898989898973ffffffffffffffffffffffffffffffffffffffff610bf98383612eb7565b9581604051987f8a3d858d0000000000000000000000000000000000000000000000000000000060208b01521660248901521660448701526064860152608485015260a484015260a43560c484015260e48301526101048201527f000000000000000000000000000000000000000000000000000000000000000061012482015261012481526107ee61014482612c2c565b8380fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610cc66131e9565b8073ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604060209173ffffffffffffffffffffffffffffffffffffffff610d7d612b9d565b168152600183522054604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604051806020600b5491828152018091600b85527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db990855b818110610e625750505082610e0b910383612c2c565b604051928392602084019060208552518091526040840192915b818110610e33575050500390f35b825173ffffffffffffffffffffffffffffffffffffffff16845285945060209384019390920191600101610e25565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610df5565b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f1610ec4612b9d565b73ffffffffffffffffffffffffffffffffffffffff604051917fc5eabfb900000000000000000000000000000000000000000000000000000000602084015216602482015260243560448201527f0000000000000000000000000000000000000000000000000000000000000000600f0b6064820152606481526105e0608482612c2c565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f0000000000000000000000000000000000000000000000000000000000000000600f0b8152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610ff2612b9d565b610ffa6131e9565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000601054161760105580f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c95760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576110b8612b9d565b6110c0612bc0565b90608435801515809103610c8b5773ffffffffffffffffffffffffffffffffffffffff6111429381604051947f6863f5bc0000000000000000000000000000000000000000000000000000000060208701521660248501521660448301526044356064830152606435608483015260a482015260a481526105e060c482612c2c565b805181019060208181840193031261120d5760208101519067ffffffffffffffff8211610c8b57019181603f840112156102c95760208301519267ffffffffffffffff84116111e0578360051b91604051946111a16020850187612c2c565b855260208080870194840101019384116102c95750604001905b8282106111d0576040518061049d8682612b1c565b81518152602091820191016111bb565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8280fd5b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043573ffffffffffffffffffffffffffffffffffffffff81168091036113e95761126a612bc0565b60643567ffffffffffffffff8111610c8b5736602382011215610c8b5780600401359067ffffffffffffffff82116113ed5736602483830101116113ed576113c3937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f846107ee9560246101049673ffffffffffffffffffffffffffffffffffffffff6040519a8b987fe49cd4750000000000000000000000000000000000000000000000000000000060208b0152848a0152166044880152604435606488015260c060848801528260e48801520186860137888582860101527f000000000000000000000000000000000000000000000000000000000000000060a48501527f000000000000000000000000000000000000000000000000000000000000000060c48501520116810103017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612c2c565b6020818051810103126113e957602001518015158091036113e957602090604051908152f35b5080fd5b8480fd5b50346102c95760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957611429612b9d565b611431612bc0565b906064359160a4358015158091036113ed578373ffffffffffffffffffffffffffffffffffffffff6114656114f496613235565b9381604051967f8d01fa440000000000000000000000000000000000000000000000000000000060208901521660248701521660448501526044356064850152608484015260843560a484015260c483015260e48201527f000000000000000000000000000000000000000000000000000000000000000061010482015261010481526105e061012482612c2c565b6040818051810103126113e95780604060208193015191015182519182526020820152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576060602060405161155881612be3565b838152015260405161156981612be3565b600954600f0b8152611579612e08565b906020810191825260405192839260208452606084019251600f0b6020850152519160408085015282518091526020608085019301915b8181106115be575050500390f35b8251600f0b8452859450602093840193909201916001016115b0565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576116116131e9565b60085460ff811615611621575080f35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001176008557f0f8eeedbc400fd6686703559f58d1e6143fdaed533f19a86c93d67a2fe4fb3318180a180f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405160128152f35b50346102c95760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761173b612b9d565b611743612bc0565b6044359173ffffffffffffffffffffffffffffffffffffffff811680855260026020526040852073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f2054907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82106117c0575b505061075a93506130c4565b84821061186657801561183a57331561180e578560409161075a975260026020522073ffffffffffffffffffffffffffffffffffffffff33165f526020528360405f20910390555f806117b4565b6024867f94280d6200000000000000000000000000000000000000000000000000000000815280600452fd5b6024867fe602df0500000000000000000000000000000000000000000000000000000000815280600452fd5b60648686847ffb8f41b200000000000000000000000000000000000000000000000000000000835233600452602452604452fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060ff600854166040519015158152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600354604051908152f35b506101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107115761194b612b9d565b602435917fffffffff00000000000000000000000000000000000000000000000000000000831690818403610711576044359173ffffffffffffffffffffffffffffffffffffffff83169485840361071157606435956084359560c4359687600f0b9687890361071157610104359860e4358a15158b036107115760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146127185760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005560ff600854166126ba5780159081156126af575b501561265157611a4690611a3b848d612eb7565b9060a435858e612f08565b9c859e95979392949f915073ffffffffffffffffffffffffffffffffffffffff611a6f83612c6d565b90549060031b1c169a73ffffffffffffffffffffffffffffffffffffffff611a9686612c6d565b90549060031b1c169c80155f146122df57505050878a73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001698898214806122d5575b156121fe57505050863b15610711575f8e976004604051809a81937fd0e30db00000000000000000000000000000000000000000000000000000000083525af19687156121f3578f908f908f996121dc575b50611b76611b98915b611b71611b5486612cb2565b90549060031b1c611b6487612cca565b90549060031b1c90612d4c565b612d4c565b91611b93611b8387612cb2565b90549060031b1c611b6488612cca565b612d12565b908d987f000000000000000000000000000000000000000000000000000000000000000090811515806121d3575b61214a575b5050611c6991611c4b611c0c611c6093611bf6611be788612cca565b90549060031b1c821015612da3565b611bff87612cca565b90549060031b1c90612d12565b611c1586612cb2565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b611c57611be787612cca565b611bff86612cca565b611c1585612cb2565b8b82600f0b13156120ec578b84600f0b131561208e57611cf293611cda82611cb2611cac611cb296611c9d611cac97613084565b90549060031b1c600f0b6133db565b91613084565b9091906fffffffffffffffffffffffffffffffff83549160031b928116831b921b1916179055565b611ce384613084565b90549060031b1c600f0b613433565b8061204f575b15611f895773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b15611f855787809160248d60405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af18015611f7a579188918c93611f5c575b5081809381925af13d15611f57573d67ffffffffffffffff8111611f2a5760405190611dd760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160183612c2c565b81528760203d92013e5b15611ecc577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a0915b611e16818a612d12565b73ffffffffffffffffffffffffffffffffffffffff604051931683528a60208401528b604084015260608301526080820152a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015611e9b575b50505061049d90604051938493846040919493926060820195825260208201520152565b8280809381938290611ec3575b3390f115611eb7578080611e77565b604051903d90823e3d90fd5b506108fc611ea8565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b611de1565b611f699193508290612c2c565b611f7657868a915f611d83565b8680fd5b6040513d8a823e3d90fd5b8780fd5b506040517fa9059cbb0000000000000000000000000000000000000000000000000000000087528360045289602452602087604481808a5af190600188511482161561202e575b60405215612002577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a091611e0c565b602486867f5274afe7000000000000000000000000000000000000000000000000000000008252600452fd5b90600181151661204657863b15153d15161690611fd0565b503d87823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168614611cf8565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a20616d6f756e744f7574203c3d20300000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4d53523a20616d6f756e74496e203c3d2030000000000000000000000000006044820152fd5b611c60929a50611c0c620f4240612168611c699694611c4b94612d59565b049b8c61217b575b93505050918f611bcb565b6121ce8d61219a61218b8a612cca565b91909283548360031b1c612d4c565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b612170565b50801515611bc6565b6121e9919e505f90612c2c565b5f9c611b76611b3f565b6040513d5f823e3d90fd5b60209293949596979899505f80809360649373ffffffffffffffffffffffffffffffffffffffff604051987f23b872dd00000000000000000000000000000000000000000000000000000000855216600452306024526044525af19060015f51148216156122b4575b6040525f6060521561228857908b95949392918e611b988f611b7690611b48565b887f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9060018115166122cc578a3b15153d15161690612267565b503d5f823e3d90fd5b5080341015611aed565b92985090917c0100000000000000000000000000000000000000000000000000000000036124a55750612421576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526020816024818d5afa80156121f3578e915f916123ea575b50612377906123716123618a612cb2565b90549060031b1c611b648b612cca565b90612d12565b0361238c578b958e611b988f611b7690611b48565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496e636f72726563742070726566756e64696e6720616d6f756e7400000000006044820152fd5b9150506020813d602011612419575b8161240660209383612c2c565b8101031261071157518d90612377612350565b3d91506123f9565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f50726566756e64696e672063616e6e6f7420626520757365642077697468206160448201527f206c696d697420707269636500000000000000000000000000000000000000006064820152fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015291506020826024818e5afa9182156121f3578f905f93612619575b506024929161251d916040519160208301528d85830152604482015260448152612517606482612c2c565b8a6133b8565b5060208b604051938480927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa80156121f3578f925f916125e0575b509061256d91612d12565b03612582578b958e611b988f611b7690611b48565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e742066756e647300000000000000000000000000006044820152fd5b919250506020813d602011612611575b816125fd60209383612c2c565b8101031261071157518e919061256d612562565b3d91506125f0565b9250506020823d602011612649575b8161263560209383612c2c565b81010312610711579051908e61251d6124ec565b3d9150612628565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f737761703a20646561646c696e652065786365656465640000000000000000006044820152fd5b90504211155f611a27565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346107115760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576127e5612b9d565b6024359033156128875773ffffffffffffffffffffffffffffffffffffffff1690811561285b57335f52600260205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576040515f6004548060011c906001811680156129f2575b6020831081146129c5578285529081156129835750600114612925575b61049d8361094281850382612c2c565b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b80821061296957509091508101602001610942612915565b919260018160209254838588010152019101909291612951565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b840190910191506109429050612915565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916128f8565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157604051806020600d54918281520190600d5f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5905f5b818110612a785761049d856108ab81870382612c2c565b8254845260209093019260019283019201612a61565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157600c548082526020820190600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7905f5b818110612b065761049d856108ab81870382612c2c565b8254845260209093019260019283019201612aef565b60206040818301928281528451809452019201905f5b818110612b3f5750505090565b8251845260209384019390920191600101612b32565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6040810190811067ffffffffffffffff821117612bff57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612bff57604052565b600b54811015612c8557600b5f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600f54811015612c8557600f5f5260205f2001905f90565b600c54811015612c8557600c5f5260205f2001905f90565b600d54811015612c8557600d5f5260205f2001905f90565b600654811015612c855760065f5260205f2001905f90565b91908203918211612d1f57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b91908201809211612d1f57565b81810292918115918404141715612d1f57565b8115612d76570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b15612daa57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f62616c616e6365203c2070726f746f636f6c206f7765640000000000000000006044820152fd5b60405190600a548083528260208101600a5f5260205f20925f905b806001830110612e7057612e49945491818110612e5c575b10612e4b575b500383612c2c565b565b60801d600f0b81526020015f612e41565b92602060019184600f0b8152019301612e3b565b9160029193506040600191865480600f0b825260801d600f0b6020820152019401920185929391612e23565b90816060910312610711578051916040602083015192015190565b9190826103e8026103e881048403612d1f5781612ed391612d4c565b90815f52600760205260405f2054938415612eed57505050565b612ef892945061330e565b915f5260076020528160405f2055565b92949394919091612f34612f1c878461332b565b9050612f2786612ce2565b90549060031b1c90613489565b905f82600f0b131561302657612f5a918486600954600f0b612f54612e08565b90613722565b919092612f798394612f6c8197612ce2565b90549060031b1c9061334d565b925f92849880613005575b508811612fa757612f97612fa492612ce2565b90549060031b1c906136b3565b94565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f737761703a207472616e736665722065786365656473206d61780000000000006044820152fd5b9098506130149193508461337f565b9161301f8385612d4c565b975f612f84565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761703a20696e70757420746f6f20736d616c6c20616674657220666565006044820152fd5b90600a54821015612c8557600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b73ffffffffffffffffffffffffffffffffffffffff169081156131bd5773ffffffffffffffffffffffffffffffffffffffff1691821561319157815f52600160205260405f205481811061315f57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f52600184520360405f2055845f526001825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff5f5416330361320957565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b600654156132505761324690612cfa565b90549060031b1c90565b505f90565b905f8091602081519101845af480806132fb575b1561327b575050613278613470565b90565b156132c25773ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b3d156132d3576040513d5f823e3d90fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b503d1515806132695750813b1515613269565b90611b6461331e61327893612cfa565b90549060031b1c91612cfa565b9190801561334757613340613278918461337f565b8093612d12565b505f9190565b61336161335a83836136b3565b9283613489565b90600f0b90600f0b126133715790565b60018101809111612d1f5790565b9080156133b25761338f91612d59565b620f4240810190818111612d1f57620f423f01908111612d1f57620f4240900490565b50505f90565b905f809160208151910182855af180806132fb571561327b575050613278613470565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613419575b1561071157600f0b90565b506f7fffffffffffffffffffffffffffffff81131561340e565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613419571561071157600f0b90565b604051903d82523d5f602084013e60203d830101604052565b81156107115777ffffffffffffffffffffffffffffffffffffffffffffffff811161350157906134bb9160401b612d6c565b6fffffffffffffffffffffffffffffffff8111610711576fffffffffffffffffffffffffffffffff166f7fffffffffffffffffffffffffffffff811161071157600f0b90565b60c09181831c80936401000000008210156136a6575b600282620100006135a494101561369a575b61010081101561368e575b6010811015613682575b6004811015613677575b101561366f575b8360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b612d6c565b926fffffffffffffffffffffffffffffffff8411610711578160801c8402906fffffffffffffffffffffffffffffffff8316850290809460401b90828210613645575b5003928160801b9182851061361c575b60801c03613611576136099203612d6c565b905b016134bb565b50505060019061360b565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906135f7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f6135e7565b60010161354f565b91810191811c613548565b6004928301921c61353e565b6008928301921c613534565b6010928301921c613529565b505060e082811c90613517565b81156133b257600f0b5f8112610711576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116107115760401b81198111610711570190565b8051821015612c855760209160051b010190565b955f959194939092849290875b875189101561375a576137526001916137488b8b61370e565b51600f0b906133db565b98019761372f565b909294975097909294975f81600f0b1315613b985761377891613bf6565b9384600f0b80156107115770010000000000000000000000000000000005917fffffffffffffffffffffffffffffffff8000000000000000000000000000000083121580613b7e575b15610711576137fd613802916137f86137e095600f0b9586928b61370e565b51600f0b6137ee898c61370e565b51600f0b90613433565b613bf6565b613c36565b9280600f0b905f82136139ee575b50509061381c91613bf6565b80600f0b68200000000000000000811361396a577fffffffffffffffffffffffffffffffff800000000000000000000000000000001461071157613864905f03600f0b613c36565b600f0b6801000000000000000003907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082121580613950575b15610711576138af91600f0b90613bf6565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613936575b1561071157600f0b925f84131561392257505061390661390c92613c93565b90613bf6565b905f82600f0b131561391a57565b5f9250829150565b90915061392f925061370e565b51600f0b90565b506f7fffffffffffffffffffffffffffffff8113156138e7565b506f7fffffffffffffffffffffffffffffff82131561389d565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4c4d53523a20612f6220746f6f206c617267652028776f756c64206f7665726660448201527f6c6f7720657870290000000000000000000000000000000000000000000000006064820152fd5b84600f9a939a0b80921315613afa5781156107115760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613ae0575b1561071157600f0b5f811315613a8257613a50613a5691613c93565b86613bf6565b9780600f0b89600f0b125f14613a7657505061381c90875b90915f613810565b61381c92919850613a6e565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4d53523a20726174696f3c3d300000000000000000000000000000000000006044820152fd5b506f7fffffffffffffffffffffffffffffff811315613a34565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4c4d53523a206c696d69745072696365203c3d2063757272656e74207072696360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152fd5b506f7fffffffffffffffffffffffffffffff8313156137c1565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613419571561071157600f0b90565b600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000811261325057700171547652b82fe1777d0ffda0d23a7d12613278910260801d600f0b613dc0565b600f0b5f811315610711575f908068010000000000000000821215613db3575b806401000000006002921215613da7575b62010000811215613d9b575b610100811215613d8f575b6010811215613d83575b6004811215613d78575b1215613d6e575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f8313613d5257506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d90565b8002908160ff1c9182607f011c918302019160011d9190613d2d565b9060010190613cf6565b92810192811d613cef565b6004938401931d613ce5565b6008938401931d613cdb565b6010938401931d613cd0565b6020938401931d613cc4565b506040915080821d613cb3565b80600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000081126133b2576f80000000000000000000000000000000915f6780000000000000008216600f0b136149bc575b5f6740000000000000008216600f0b1361499f575b5f6720000000000000008216600f0b13614982575b5f6710000000000000008216600f0b13614965575b5f6708000000000000008216600f0b13614948575b5f6704000000000000008216600f0b1361492b575b5f6702000000000000008216600f0b1361490e575b5f6701000000000000008216600f0b136148f1575b5f66800000000000008216600f0b136148d4575b5f66400000000000008216600f0b136148b7575b5f66200000000000008216600f0b1361489a575b5f66100000000000008216600f0b1361487d575b5f66080000000000008216600f0b13614860575b5f66040000000000008216600f0b13614843575b5f66020000000000008216600f0b13614826575b5f66010000000000008216600f0b13614809575b5f658000000000008216600f0b136147ec575b5f654000000000008216600f0b136147cf575b5f652000000000008216600f0b136147b2575b5f651000000000008216600f0b13614795575b5f650800000000008216600f0b13614778575b5f650400000000008216600f0b1361475b575b5f650200000000008216600f0b1361473e575b5f650100000000008216600f0b13614721575b5f6480000000008216600f0b13614704575b5f6440000000008216600f0b136146e7575b5f6420000000008216600f0b136146ca575b5f6410000000008216600f0b136146ad575b5f6408000000008216600f0b13614690575b5f6404000000008216600f0b13614673575b5f6402000000008216600f0b13614656575b5f6401000000008216600f0b13614639575b5f63800000008216600f0b1361461c575b5f63400000008216600f0b136145ff575b5f63200000008216600f0b136145e2575b5f63100000008216600f0b136145c5575b5f63080000008216600f0b136145a8575b5f63040000008216600f0b1361458b575b5f63020000008216600f0b1361456e575b5f63010000008216600f0b13614551575b5f628000008216600f0b13614534575b5f624000008216600f0b13614517575b5f622000008216600f0b136144fa575b5f621000008216600f0b136144dd575b5f620800008216600f0b136144c0575b5f620400008216600f0b136144a3575b5f620200008216600f0b13614486575b5f620100008216600f0b13614469575b5f6180008216600f0b1361444c575b5f6140008216600f0b1361442f575b5f6120008216600f0b13614412575b5f6110008216600f0b136143f5575b5f6108008216600f0b136143d8575b5f6104008216600f0b136143bb575b5f6102008216600f0b1361439e575b5f6101008216600f0b13614381575b5f60808216600f0b13614364575b5f60408216600f0b13614347575b5f60208216600f0b1361432a575b5f60108216600f0b1361430d575b5f60088216600f0b136142f0575b5f60048216600f0b136142d3575b5f60028216600f0b136142b5575b60015f9116600f0b13614298575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161071157600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c9061426e565b7001000000000000000162e42fefa39ef35890920260801c91614260565b9170010000000000000002c5c85fdf473de6b20260801c91614252565b91700100000000000000058b90bfbe8e7bcd6d0260801c91614244565b917001000000000000000b17217f7d1cf79afa0260801c91614236565b91700100000000000000162e42fefa39ef366f0260801c91614228565b917001000000000000002c5c85fdf473de6eca0260801c9161421a565b9170010000000000000058b90bfbe8e7bce5440260801c9161420c565b91700100000000000000b17217f7d1cf79e9490260801c916141fe565b9170010000000000000162e42fefa39ef44d910260801c916141ef565b91700100000000000002c5c85fdf473dea871f0260801c916141e0565b917001000000000000058b90bfbe8e7bdcbe2e0260801c916141d1565b9170010000000000000b17217f7d1cf7d83c1a0260801c916141c2565b917001000000000000162e42fefa39f02b772c0260801c916141b3565b9170010000000000002c5c85fdf473e242ea380260801c916141a4565b91700100000000000058b90bfbe8e7cc35c3f00260801c91614195565b917001000000000000b17217f7d1cfb72b45e10260801c91614186565b91700100000000000162e42fefa39fe95583c20260801c91614176565b917001000000000002c5c85fdf4741bea6e77e0260801c91614166565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c91614156565b91700100000000000b17217f7d1d351a389d400260801c91614146565b9170010000000000162e42fefa3ae53369388c0260801c91614136565b91700100000000002c5c85fdf477b662b269450260801c91614126565b917001000000000058b90bfbe8f71cb4e4b33d0260801c91614116565b9170010000000000b17217f7d20cf927c8e94c0260801c91614106565b917001000000000162e42fefa494f1478fde050260801c916140f5565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c916140e4565b91700100000000058b90bfbe9ddbac5e109cce0260801c916140d3565b917001000000000b17217f7d5a7716bba4a9ae0260801c916140c2565b91700100000000162e42fefb2fed257559bdaa0260801c916140b1565b917001000000002c5c85fdf84bd62ae30a74cc0260801c916140a0565b9170010000000058b90bfbf8479bd5a81b51ad0260801c9161408f565b91700100000000b17217f80f4ef5aadda455540260801c9161407e565b9170010000000162e42ff0999ce3541b9fffcf0260801c9161406c565b91700100000002c5c85fe31f35a6a30da1be500260801c9161405a565b917001000000058b90bfcdee5acd3c1cedc8230260801c91614048565b9170010000000b17217fba9c739aa5819f44f90260801c91614036565b917001000000162e42fff037df38aa2b219f060260801c91614024565b9170010000002c5c8601cc6b9e94213c72737a0260801c91614012565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91614000565b917001000000b1721835514b86e6d96efd1bfe0260801c91613fee565b91700100000162e430e5a18f6119e3c02282a50260801c91613fdb565b917001000002c5c863b73f016468f6bac5ca2b0260801c91613fc8565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91613fb5565b91700100000b1721bcfc99d9f890ea069117630260801c91613fa2565b9170010000162e43f4f831060e02d839a9d16d0260801c91613f8f565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c91613f7c565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c91613f69565b9170010000b17255775c040618bf4a4ade83fc0260801c91613f56565b917001000162e525ee054754457d59952920260260801c91613f42565b9170010002c5cc37da9491d0985c348c68e7b30260801c91613f2e565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91613f1a565b917001000b175effdc76ba38e31671ca9397250260801c91613f06565b91700100162f3904051fa128bca9c55c31e5df0260801c91613ef2565b917001002c605e2e8cec506d21bfc89a23a00f0260801c91613ede565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c91613eca565b91700100b1afa5abcbed6129ab13ec11dc95430260801c91613eb6565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c91613ea1565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c91613e8c565b917001059b0d31585743ae7c548eb68ca417fd0260801c91613e77565b9170010b5586cf9890f6298b92b71842a983630260801c91613e62565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c91613e4d565b917001306fe0a31b7152de8d5a46305c85edec0260801c91613e38565b6fb504f333f9de6484597d89b3754abe9f9250613e2356fea2646970667358221220eb055801e8ab9805a5a63034ae9b30d67850f64e3702721cdac9d52abc57ce0e64736f6c634300081e0033a26469706673582212206dc297f42e3884778d7b51bde94442ad2fcc13a1f26383968fa598a51672449264736f6c634300081e003360808060405234601557615fbf908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c636ae73ce314610024575f80fd5b34610373576101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103735760043573ffffffffffffffffffffffffffffffffffffffff81168091036103735760243567ffffffffffffffff8111610373576100959036906004016103f8565b9060443567ffffffffffffffff8111610373576100b69036906004016103f8565b6064359067ffffffffffffffff82116103735736602383011215610373578160040135916100eb6100e684610468565b6103b4565b9060208285815201906024829560051b8201019036821161037357602401915b8183106103875750505060843580600f0b8091036103735760a43567ffffffffffffffff81116103735736602382011215610373578060040135946101526100e687610468565b91602083888152016024819860051b8301019136831161037357602401905b82821061037757505050610104359173ffffffffffffffffffffffffffffffffffffffff831680930361037357610124359373ffffffffffffffffffffffffffffffffffffffff851680950361037357610144359573ffffffffffffffffffffffffffffffffffffffff871680970361037357610164359773ffffffffffffffffffffffffffffffffffffffff8916809903610373576040519b8c9b8c92615ac68094019e8f9081109067ffffffffffffffff1017610346576102528f92938f94602096610260966104c49039845261018086850152610180840190610480565b916040818403910152610480565b8c810360608e01529151808352910193905f5b81811061031a575050509060209160808b015289830360a08b015251918281520195905f5b81811061030457505050918596916101609360c43560c085015260e43560e0850152610100840152610120830152610140820152015203905ff080156102f95760209073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b6040513d5f823e3d90fd5b8251885260209788019790920191600101610298565b825173ffffffffffffffffffffffffffffffffffffffff16865260209586019590920191600101610273565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f80fd5b8135815260209182019101610171565b823573ffffffffffffffffffffffffffffffffffffffff811681036103735781526020928301920161010b565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff82111761034657604052565b81601f820112156103735780359067ffffffffffffffff82116103465761044660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116016103b4565b928284526020838301011161037357815f926020809301838601378301015290565b67ffffffffffffffff81116103465760051b60200190565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f858286010152011601019056fe610140604052346106ee57615ac68038038061001a81610a6a565b9283398101610180828203126106ee5761003382610a8f565b60208301516001600160401b0381116106ee5782610052918501610aa3565b60408401519091906001600160401b0381116106ee5783610074918601610aa3565b60608501519094906001600160401b0381116106ee5781019284601f850112156106ee578351956100ac6100a788610af4565b610a6a565b9460208689815201906020829960051b820101908882116106ee57602001915b818310610a4a57505050608083015180600f0b81036106ee5760a08401516001600160401b0381116106ee5784019680601f890112156106ee5787516101146100a782610af4565b986020808b848152019260051b8201019283116106ee57602001905b828210610a3a5750505060c08401519760e0850151926101536101008701610a8f565b610120870151979095906001600160a01b03891689036106ee57610140880151976001600160a01b03891689036106ee576101600151986001600160a01b038a168a036106ee5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00556080526001600160a01b03168015610a27575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a38051906001600160401b0382116106335760045490600182811c92168015610a1d575b60208310146109405781601f8493116109cf575b50602090601f8311600114610969575f9261095e575b50508160011b915f199060031b1c1916176004555b8051906001600160401b0382116106335760055490600182811c92168015610954575b60208310146109405781601f849311610904575b50602090601f831160011461089e575f92610893575b50508160011b915f199060031b1c1916176005555b60018751111561084e578651906001600160401b0382116106335768010000000000000000821161063357600b5482600b55808310610814575b50600b5f5260205f205f5b8381106107f7575050505060a05285518551036107be5761033a8651610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600654836006558084106107a2575b500160065f5260205f205f5b83811061078e57505050505f5b86518110156104185761271061039c8289610b49565b5110156103e1576103ad8188610b49565b51906006548110156103cd5760019160065f528160205f20015501610386565b634e487b7160e01b5f52603260045260245ffd5b60405162461bcd60e51b815260206004820152600f60248201526e506f6f6c3a20666565203e3d20312560881b6044820152606490fd5b50866127108110156107495760c05262061a8081101561070457801580156106f2575b156106ee5760e052601080546001600160a01b0319166001600160a01b039290921691909117905561012052610100528051905f5b8281106106a7578261048181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600d5483600d5580841061068b575b5001600d5f5260205f205f5b83811061067757846104d181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600f5483600f5580841061065b575b5001600f5f5260205f205f5b8381106106475761052085610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600c5483600c55808410610617575b500190600c5f5260205f20915f5b82811061060357604051614f689081610b5e8239608051818181611b5001528181611da1015281816120f40152612817015260a051818181610f130152610f7f015260c0518181816113480152611733015260e0518181816105ac01528181610c550152818161105d0152818161136e015281816114be0152611c2a01526101005181818161031701526105f70152610120518181816108050152610a720152f35b600190602083519301928186015501610561565b61062d90600c5f5284845f209182019101610b0b565b83610553565b634e487b7160e01b5f52604160045260245ffd5b600190602084519401938184015501610510565b61067190600f5f5284845f209182019101610b0b565b84610504565b6001906020845194019381840155016104c0565b6106a190600d5f5284845f209182019101610b0b565b846104b4565b60018101908181116106da576001600160a01b03906106c69084610b49565b51165f52600e6020528060405f2055610470565b634e487b7160e01b5f52601160045260245ffd5b5f80fd5b506001600160a01b038216151561043b565b60405162461bcd60e51b815260206004820152601960248201527f506f6f6c3a2070726f746f636f6c20666565203e3d20343025000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601560248201527f506f6f6c3a20666c61736820666565203e3d20312500000000000000000000006044820152606490fd5b600190602084519401938184015501610379565b6107b89060065f5284845f209182019101610b0b565b5f61036d565b60405162461bcd60e51b81526020600482015260116024820152700a0deded87440cccacae640d8cadccee8d607b1b6044820152606490fd5b82516001600160a01b031681830155602090920191600101610319565b600b5f52610848907f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9908101908401610b0b565b5f61030e565b60405162461bcd60e51b815260206004820152601360248201527f506f6f6c3a206e656564203e31206173736574000000000000000000000000006044820152606490fd5b015190505f806102bf565b60055f9081528281209350601f198516905b8181106108ec57509084600195949392106108d4575b505050811b016005556102d4565b01515f1960f88460031b161c191690555f80806108c6565b929360206001819287860151815501950193016108b0565b6109309060055f5260205f20601f850160051c81019160208610610936575b601f0160051c0190610b0b565b5f6102a9565b9091508190610923565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610295565b015190505f8061025d565b60045f9081528281209350601f198516905b8181106109b7575090846001959493921061099f575b505050811b01600455610272565b01515f1960f88460031b161c191690555f8080610991565b9293602060018192878601518155019501930161097b565b60045f52610a17907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f850160051c8101916020861061093657601f0160051c0190610b0b565b5f610247565b91607f1691610233565b631e4fbdf760e01b5f525f60045260245ffd5b8151815260209182019101610130565b82516001600160a01b03811681036106ee578152602092830192016100cc565b6040519190601f01601f191682016001600160401b0381118382101761063357604052565b51906001600160a01b03821682036106ee57565b81601f820112156106ee578051906001600160401b03821161063357610ad2601f8301601f1916602001610a6a565b92828452602083830101116106ee57815f9260208093018386015e8301015290565b6001600160401b0381116106335760051b60200190565b818110610b16575050565b5f8155600101610b0b565b90610b2e6100a783610af4565b8281528092610b3f601f1991610af4565b0190602036910137565b80518210156103cd5760209160051b01019056fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c908163017504b614612b1b57508063017cf66114612a8957806306fdde0314612940578063095ea7b31461283b5780630d246214146127cd5780630eeee627146119a457806318160ddd146119685780631f3a0e411461192757806323b872dd14611790578063313ce5671461175657806331596a6a146116fd57806341c0e1b514611667578063476e44b614611519578063491e7998146113f15780635cffe9de146112115780636863f5bc146110805780636b4082d1146110275780636b7b911214610fa55780636bba3f2f14610f495780636d8d0ff314610e8e5780636ff97f1d14610d8e57806370a0823114610d2b578063715018a614610c8f57806379a68d5314610b6b5780638da5cb5b14610b1a5780638e499bcf14610ade578063939f5ea414610a965780639517606614610a2757806395d89b41146108cd5780639af1d35a1461082e578063a1af5b9a14610765578063a9059cbb14610715578063b3f1c93d14610648578063cb717f3a146104f3578063cce516b7146104a1578063d516b8c614610416578063dd62ed3e1461039d578063e4b50cb81461033b578063f0d1ae4f146102cc5763f2fde38b0361000f57346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610228612c2a565b610230613288565b16801561029d5773ffffffffffffffffffffffffffffffffffffffff8254827fffffffffffffffffffffffff00000000000000000000000000000000000000008216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b6024827f1e4fbdf700000000000000000000000000000000000000000000000000000000815280600452fd5b80fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff61038d600435612cfa565b90549060031b1c16604051908152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff60406103ec612c2a565b92826103f6612c4d565b9416815260026020522091165f52602052602060405f2054604051908152f35b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043590602435916064359182600f0b83036102c95761049d61047985858561046f83826133ad565b9260443591612f95565b92505050604093919351938493846040919493926060820195825260208201520152565b0390f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff60105416604051908152f35b5060a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761049d61062b61061c61052f612c2a565b610537612c4d565b60443573ffffffffffffffffffffffffffffffffffffffff610558826132d4565b9281604051957f3dd3c8050000000000000000000000000000000000000000000000000000000060208801521660248601521660448401526064830152606435608483015260843560a483015260c48201527f000000000000000000000000000000000000000000000000000000000000000060e482015260e481526105e061010482612cb9565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166132f4565b60208082518301019101612f29565b604080519384526020840192909252908201529081906060820190565b5060807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f161067e612c2a565b73ffffffffffffffffffffffffffffffffffffffff61069b612c4d565b81604051937fb3f1c93d00000000000000000000000000000000000000000000000000000000602086015216602484015216604482015260443560648201526064356084820152608481526105e060a482612cb9565b602081519181808201938492010103126107115760209051604051908152f35b5f80fd5b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761075a610750612c2a565b6024359033613163565b602060405160018152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761082a73ffffffffffffffffffffffffffffffffffffffff60105416604051907f2a54db010000000000000000000000000000000000000000000000000000000060208301526024820152602481526107ee604482612cb9565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166132f4565b5080f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760405180916020600654928381520191600682527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f915b8181106108b75761049d856108ab81870382612cb9565b60405191829182612ba9565b8254845260209093019260019283019201610894565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576040519080600554908160011c91600181168015610a1d575b6020841081146109f0578386529081156109ab575060011461094e575b61049d8461094281860382612cb9565b60405191829182612be2565b600581527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0939250905b8082106109915750909150810160200161094282610932565b919260018160209254838588010152019101909291610978565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208087019190915292151560051b850190920192506109429150839050610932565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b92607f1692610915565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020610ad66024356004356133ad565b604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600b54604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b5060e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610b9e612c2a565b90610ba7612c4d565b906044356064356084359182600f0b809303610c8b5760c435938415158095036102c95761049d61062b61061c89898989898973ffffffffffffffffffffffffffffffffffffffff610bf98383612f44565b9581604051987f8a3d858d0000000000000000000000000000000000000000000000000000000060208b01521660248901521660448701526064860152608485015260a484015260a43560c484015260e48301526101048201527f000000000000000000000000000000000000000000000000000000000000000061012482015261012481526107ee61014482612cb9565b8380fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610cc6613288565b8073ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604060209173ffffffffffffffffffffffffffffffffffffffff610d7d612c2a565b168152600183522054604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604051806020600b5491828152018091600b85527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db990855b818110610e625750505082610e0b910383612cb9565b604051928392602084019060208552518091526040840192915b818110610e33575050500390f35b825173ffffffffffffffffffffffffffffffffffffffff16845285945060209384019390920191600101610e25565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610df5565b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f1610ec4612c2a565b73ffffffffffffffffffffffffffffffffffffffff604051917fc5eabfb900000000000000000000000000000000000000000000000000000000602084015216602482015260243560448201527f0000000000000000000000000000000000000000000000000000000000000000600f0b6064820152606481526105e0608482612cb9565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f0000000000000000000000000000000000000000000000000000000000000000600f0b8152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610ff2612c2a565b610ffa613288565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000601054161760105580f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c95760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576110b8612c2a565b6110c0612c4d565b90608435801515809103610c8b5773ffffffffffffffffffffffffffffffffffffffff6111429381604051947f6863f5bc0000000000000000000000000000000000000000000000000000000060208701521660248501521660448301526044356064830152606435608483015260a482015260a481526105e060c482612cb9565b805181019060208181840193031261120d5760208101519067ffffffffffffffff8211610c8b57019181603f840112156102c95760208301519267ffffffffffffffff84116111e0578360051b91604051946111a16020850187612cb9565b855260208080870194840101019384116102c95750604001905b8282106111d0576040518061049d8682612ba9565b81518152602091820191016111bb565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8280fd5b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043573ffffffffffffffffffffffffffffffffffffffff81168091036113e95761126a612c4d565b60643567ffffffffffffffff8111610c8b5736602382011215610c8b5780600401359067ffffffffffffffff82116113ed5736602483830101116113ed576113c3937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f846107ee9560246101049673ffffffffffffffffffffffffffffffffffffffff6040519a8b987fe49cd4750000000000000000000000000000000000000000000000000000000060208b0152848a0152166044880152604435606488015260c060848801528260e48801520186860137888582860101527f000000000000000000000000000000000000000000000000000000000000000060a48501527f000000000000000000000000000000000000000000000000000000000000000060c48501520116810103017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612cb9565b6020818051810103126113e957602001518015158091036113e957602090604051908152f35b5080fd5b8480fd5b50346102c95760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957611429612c2a565b611431612c4d565b906064359160a4358015158091036113ed578373ffffffffffffffffffffffffffffffffffffffff6114656114f4966132d4565b9381604051967f8d01fa440000000000000000000000000000000000000000000000000000000060208901521660248701521660448501526044356064850152608484015260843560a484015260c483015260e48201527f000000000000000000000000000000000000000000000000000000000000000061010482015261010481526105e061012482612cb9565b6040818051810103126113e95780604060208193015191015182519182526020820152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576060602060405161155881612c70565b83815201526040519061156a82612c70565b600954600f0b825260405191600a548084528360208101600a8552602085209285905b80600183011061163b576115b6945491818110611627575b10611616575b509493940383612cb9565b6020810191825260405192839260208452606084019251600f0b6020850152519160408085015282518091526020608085019301915b8181106115fa575050500390f35b8251600f0b8452859450602093840193909201916001016115ec565b60801d600f0b81526020015f6115ab565b92602060019184600f0b81520193016115a5565b9160029193506040600191865480600f0b825260801d600f0b602082015201940192018692939161158d565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761169e613288565b60085460ff8116156116ae575080f35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001176008557f0f8eeedbc400fd6686703559f58d1e6143fdaed533f19a86c93d67a2fe4fb3318180a180f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405160128152f35b50346102c95760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576117c8612c2a565b6117d0612c4d565b6044359173ffffffffffffffffffffffffffffffffffffffff811680855260026020526040852073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f2054907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821061184d575b505061075a9350613163565b8482106118f35780156118c757331561189b578560409161075a975260026020522073ffffffffffffffffffffffffffffffffffffffff33165f526020528360405f20910390555f80611841565b6024867f94280d6200000000000000000000000000000000000000000000000000000000815280600452fd5b6024867fe602df0500000000000000000000000000000000000000000000000000000000815280600452fd5b60648686847ffb8f41b200000000000000000000000000000000000000000000000000000000835233600452602452604452fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060ff600854166040519015158152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600354604051908152f35b506101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576119d8612c2a565b602435917fffffffff00000000000000000000000000000000000000000000000000000000831690818403610711576044359173ffffffffffffffffffffffffffffffffffffffff83169485840361071157606435956084359560c4359687600f0b9687890361071157610104359860e4358a15158b036107115760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146127a55760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005560ff6008541661274757801590811561273c575b50156126de57611ad390611ac8848d612f44565b9060a435858e612f95565b9c859e95979392949f915073ffffffffffffffffffffffffffffffffffffffff611afc83612cfa565b90549060031b1c169a73ffffffffffffffffffffffffffffffffffffffff611b2386612cfa565b90549060031b1c169c80155f1461236c57505050878a73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169889821480612362575b1561228b57505050863b15610711575f8e976004604051809a81937fd0e30db00000000000000000000000000000000000000000000000000000000083525af1968715612280578f908f908f99612269575b50611c03611c25915b611bfe611be186612d3f565b90549060031b1c611bf187612d57565b90549060031b1c90612dd9565b612dd9565b91611c20611c1087612d3f565b90549060031b1c611bf188612d57565b612d9f565b908d987f00000000000000000000000000000000000000000000000000000000000000009081151580612260575b6121d7575b5050611cf691611cd8611c99611ced93611c83611c7488612d57565b90549060031b1c821015612e30565b611c8c87612d57565b90549060031b1c90612d9f565b611ca286612d3f565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b611ce4611c7487612d57565b611c8c86612d57565b611ca285612d3f565b8b82600f0b1315612179578b84600f0b131561211b57611d7f93611d6782611d3f611d39611d3f96611d2a611d3997613102565b90549060031b1c600f0b6134d7565b91613102565b9091906fffffffffffffffffffffffffffffffff83549160031b928116831b921b1916179055565b611d7084613102565b90549060031b1c600f0b613514565b806120dc575b156120165773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b156120125787809160248d60405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af18015612007579188918c93611fe9575b5081809381925af13d15611fe4573d67ffffffffffffffff8111611fb75760405190611e6460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160183612cb9565b81528760203d92013e5b15611f59577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a0915b611ea3818a612d9f565b73ffffffffffffffffffffffffffffffffffffffff604051931683528a60208401528b604084015260608301526080820152a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015611f28575b50505061049d90604051938493846040919493926060820195825260208201520152565b8280809381938290611f50575b3390f115611f44578080611f04565b604051903d90823e3d90fd5b506108fc611f35565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b611e6e565b611ff69193508290612cb9565b61200357868a915f611e10565b8680fd5b6040513d8a823e3d90fd5b8780fd5b506040517fa9059cbb0000000000000000000000000000000000000000000000000000000087528360045289602452602087604481808a5af19060018851148216156120bb575b6040521561208f577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a091611e99565b602486867f5274afe7000000000000000000000000000000000000000000000000000000008252600452fd5b9060018115166120d357863b15153d1516169061205d565b503d87823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168614611d85565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a20616d6f756e744f7574203c3d20300000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4d53523a20616d6f756e74496e203c3d2030000000000000000000000000006044820152fd5b611ced929a50611c99620f42406121f5611cf69694611cd894612de6565b049b8c612208575b93505050918f611c58565b61225b8d6122276122188a612d57565b91909283548360031b1c612dd9565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b6121fd565b50801515611c53565b612276919e505f90612cb9565b5f9c611c03611bcc565b6040513d5f823e3d90fd5b60209293949596979899505f80809360649373ffffffffffffffffffffffffffffffffffffffff604051987f23b872dd00000000000000000000000000000000000000000000000000000000855216600452306024526044525af19060015f5114821615612341575b6040525f6060521561231557908b95949392918e611c258f611c0390611bd5565b887f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b906001811516612359578a3b15153d151616906122f4565b503d5f823e3d90fd5b5080341015611b7a565b92985090917c01000000000000000000000000000000000000000000000000000000000361253257506124ae576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526020816024818d5afa8015612280578e915f91612477575b50612404906123fe6123ee8a612d3f565b90549060031b1c611bf18b612d57565b90612d9f565b03612419578b958e611c258f611c0390611bd5565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496e636f72726563742070726566756e64696e6720616d6f756e7400000000006044820152fd5b9150506020813d6020116124a6575b8161249360209383612cb9565b8101031261071157518d906124046123dd565b3d9150612486565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f50726566756e64696e672063616e6e6f7420626520757365642077697468206160448201527f206c696d697420707269636500000000000000000000000000000000000000006064820152fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015291506020826024818e5afa918215612280578f905f936126a6575b50602492916125aa916040519160208301528d858301526044820152604481526125a4606482612cb9565b8a613457565b5060208b604051938480927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa8015612280578f925f9161266d575b50906125fa91612d9f565b0361260f578b958e611c258f611c0390611bd5565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e742066756e647300000000000000000000000000006044820152fd5b919250506020813d60201161269e575b8161268a60209383612cb9565b8101031261071157518e91906125fa6125ef565b3d915061267d565b9250506020823d6020116126d6575b816126c260209383612cb9565b81010312610711579051908e6125aa612579565b3d91506126b5565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f737761703a20646561646c696e652065786365656465640000000000000000006044820152fd5b90504211155f611ab4565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346107115760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157612872612c2a565b6024359033156129145773ffffffffffffffffffffffffffffffffffffffff169081156128e857335f52600260205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576040515f6004548060011c90600181168015612a7f575b602083108114612a5257828552908115612a1057506001146129b2575b61049d8361094281850382612cb9565b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b8082106129f6575090915081016020016109426129a2565b9192600181602092548385880101520191019092916129de565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b8401909101915061094290506129a2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691612985565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157604051806020600d54918281520190600d5f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5905f5b818110612b055761049d856108ab81870382612cb9565b8254845260209093019260019283019201612aee565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157600c548082526020820190600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7905f5b818110612b935761049d856108ab81870382612cb9565b8254845260209093019260019283019201612b7c565b60206040818301928281528451809452019201905f5b818110612bcc5750505090565b8251845260209384019390920191600101612bbf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6040810190811067ffffffffffffffff821117612c8c57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612c8c57604052565b600b54811015612d1257600b5f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600f54811015612d1257600f5f5260205f2001905f90565b600c54811015612d1257600c5f5260205f2001905f90565b600d54811015612d1257600d5f5260205f2001905f90565b600654811015612d125760065f5260205f2001905f90565b91908203918211612dac57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b91908201809211612dac57565b81810292918115918404141715612dac57565b8115612e03570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b15612e3757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f62616c616e6365203c2070726f746f636f6c206f7765640000000000000000006044820152fd5b90604051918281549182825260208201905f5260205f20925f905b806001830110612efd57612ed6945491818110612ee9575b10612ed8575b500383612cb9565b565b60801d600f0b81526020015f612ece565b92602060019184600f0b8152019301612ec8565b9160029193506040600191865480600f0b825260801d600f0b6020820152019401920185929391612eb0565b90816060910312610711578051916040602083015192015190565b9190826103e8026103e881048403612dac5781612f6091612dd9565b90815f52600760205260405f2054938415612f7a57505050565b612f859294506133ad565b915f5260076020528160405f2055565b92949394919091612fc1612fa987846133ca565b9050612fb486612d6f565b90549060031b1c9061356a565b905f82600f0b13156130a457612fd8918486613794565b919092612ff78394612fea8197612d6f565b90549060031b1c906133ec565b925f92849880613083575b5088116130255761301561302292612d6f565b90549060031b1c90613c6b565b94565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f737761703a207472616e736665722065786365656473206d61780000000000006044820152fd5b9098506130929193508461341e565b9161309d8385612dd9565b975f613002565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761703a20696e70757420746f6f20736d616c6c20616674657220666565006044820152fd5b90600a54821015612d1257600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b9190918054831015612d12575f52601060205f208360011c019260041b1690565b73ffffffffffffffffffffffffffffffffffffffff1690811561325c5773ffffffffffffffffffffffffffffffffffffffff1691821561323057815f52600160205260405f20548181106131fe57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f52600184520360405f2055845f526001825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff5f541633036132a857565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b600654156132ef576132e590612d87565b90549060031b1c90565b505f90565b905f8091602081519101845af4808061339a575b1561331a575050613317613551565b90565b156133615773ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b3d15613372576040513d5f823e3d90fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b503d1515806133085750813b1515613308565b90611bf16133bd61331793612d87565b90549060031b1c91612d87565b919080156133e6576133df613317918461341e565b8093612d9f565b505f9190565b6134006133f98383613c6b565b928361356a565b90600f0b90600f0b126134105790565b60018101809111612dac5790565b9080156134515761342e91612de6565b620f4240810190818111612dac57620f423f01908111612dac57620f4240900490565b50505f90565b905f809160208151910182855af1808061339a571561331a575050613317613551565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd575b1561071157600f0b90565b506f7fffffffffffffffffffffffffffffff8113156134b2565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b604051903d82523d5f602084013e60203d830101604052565b81156107115777ffffffffffffffffffffffffffffffffffffffffffffffff81116135e2579061359c9160401b612df9565b6fffffffffffffffffffffffffffffffff8111610711576fffffffffffffffffffffffffffffffff166f7fffffffffffffffffffffffffffffff811161071157600f0b90565b60c09181831c8093640100000000821015613787575b6002826201000061368594101561377b575b61010081101561376f575b6010811015613763575b6004811015613758575b1015613750575b8360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b612df9565b926fffffffffffffffffffffffffffffffff8411610711578160801c8402906fffffffffffffffffffffffffffffffff8316850290809460401b90828210613726575b5003928160801b918285106136fd575b60801c036136f2576136ea9203612df9565b905b0161359c565b5050506001906136ec565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906136d8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f6136c8565b600101613630565b91810191811c613629565b6004928301921c61361f565b6008928301921c613615565b6010928301921c61360a565b505060e082811c906135f8565b9193929093600a5480841080613c62575b15613c0457600203613bec576137c36137be600a612e95565b61415f565b946137d25f87600f0b13613cc6565b6137e2600954600f0b9687613e4d565b5f81600f0b1315613bd9576137f681613d2b565b6138328161382d61380889600a613142565b90549060031b1c600f0b61381d87600a613142565b90549060031b1c600f0b90613514565b613e4d565b9085600f0b5f81136139a3575b505f600f83900b1261399557815b67028f5c28f5c28f5c90600f0b13613980576138699085613e4d565b80600f0b915f83131561396a57678000000000000000831361396a57906138c46138e59493926138be6138b8671999999999999999946138b26138ac8280613e4d565b9461347a565b90613e4d565b91613d7b565b90613514565b916138cf8380613e4d565b91600f0b1261394157906138be6138b292613d7b565b9384600f0b965f881315613921576138fe83600a613142565b90549060031b1c600f0b881215613921575f849698126139215750505050509190565b90919293945061393d959650613937600a612e95565b90613ed3565b9091565b61396461395e836138be6139586138b29686613e4d565b94613d7b565b91613dc1565b906134d7565b5050505090919261393d9495613937600a612e95565b50505090919261393d9495613937600a612e95565b61399e82613e8d565b61384d565b6139b08380979397613e4d565b680600000000000000006139d46139c78684613e4d565b926139646138b88861347a565b9160401b60170b05907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082121580613bbf575b1561071157613a1991600f0b906134d7565b9081600f0b1215613b3a57613a4f7fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009188613e07565b600f0b017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613b20575b1561071157600f0b5f8112613b1257805b671999999999999999600f0b90600f0b13613afb578061396461395e613ab783613ac595613e4d565b926138be6139588286613e4d565b5f81600f0b1315613afb57613ada9084613e4d565b9080600f0b82600f0b125f14613af35750935b5f61383f565b949050613aed565b509495929350505061393d9495613937600a612e95565b613b1b81613e8d565b613a8e565b506f7fffffffffffffffffffffffffffffff811315613a7d565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4c4d53523a206c696d69745072696365203c3d2063757272656e74207072696360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152608490fd5b506f7fffffffffffffffffffffffffffffff821315613a07565b5090919261393d9495613937600a612e95565b90919361393d9394600954600f0b613937600a612e95565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4c4d53523a2069647800000000000000000000000000000000000000000000006044820152fd5b508086106137a5565b811561345157600f0b5f8112610711576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116107115760401b81198111610711570190565b15613ccd57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b600f0b801561071157700100000000000000000000000000000000057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b680200000000000000009060401b60170b057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b680300000000000000009060401b60170b057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b90600f0b9081156107115760401b60170b057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081600f0b14610711575f03600f0b90565b8051821015612d125760209160051b010190565b95949093613f1790939293613f34613f2f613f01839a613ef28a61415f565b9061382d5f83600f0b13613cc6565b9661382d613f0e89613d2b565b9586928b613ebf565b51600f0b613f25898c613ebf565b51600f0b90613514565b614194565b9280600f0b5f81136140a1575b505090613f4d91613e4d565b6820000000000000000081600f0b1361401d57613f2f613f6c91613e8d565b600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580614003575b1561071157613fbf91613fba91600f0b90613e4d565b61347a565b925f84600f0b1315613fef5750506138b2613fd9926141f1565b905f82600f0b1315613fe757565b5f9250829150565b909150613ffc9250613ebf565b51600f0b90565b506f7fffffffffffffffffffffffffffffff811315613fa4565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4c4d53523a20612f6220746f6f206c617267652028776f756c64206f7665726660448201527f6c6f7720657870290000000000000000000000000000000000000000000000006064820152fd5b84600f9a939a0b1215613b3a57836140b891613e07565b5f81600f0b1315614101576140cf6140d5916141f1565b86613e4d565b9780600f0b89600f0b125f146140f5575050613f4d90875b90915f613f41565b613f4d929198506140ed565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4d53523a20726174696f3c3d300000000000000000000000000000000000006044820152fd5b5f90815b815183101561418e5761418660019161417c8585613ebf565b51600f0b906134d7565b920191614163565b91505090565b600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000081126132ef57700171547652b82fe1777d0ffda0d23a7d12613317910260801d600f0b61431e565b600f0b5f811315610711575f908068010000000000000000821215614311575b806401000000006002921215614305575b620100008112156142f9575b6101008112156142ed575b60108112156142e1575b60048112156142d6575b12156142cc575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f83136142b057506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d90565b8002908160ff1c9182607f011c918302019160011d919061428b565b9060010190614254565b92810192811d61424d565b6004938401931d614243565b6008938401931d614239565b6010938401931d61422e565b6020938401931d614222565b506040915080821d614211565b80600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc000000000000000008112613451576f80000000000000000000000000000000915f6780000000000000008216600f0b13614f1a575b5f6740000000000000008216600f0b13614efd575b5f6720000000000000008216600f0b13614ee0575b5f6710000000000000008216600f0b13614ec3575b5f6708000000000000008216600f0b13614ea6575b5f6704000000000000008216600f0b13614e89575b5f6702000000000000008216600f0b13614e6c575b5f6701000000000000008216600f0b13614e4f575b5f66800000000000008216600f0b13614e32575b5f66400000000000008216600f0b13614e15575b5f66200000000000008216600f0b13614df8575b5f66100000000000008216600f0b13614ddb575b5f66080000000000008216600f0b13614dbe575b5f66040000000000008216600f0b13614da1575b5f66020000000000008216600f0b13614d84575b5f66010000000000008216600f0b13614d67575b5f658000000000008216600f0b13614d4a575b5f654000000000008216600f0b13614d2d575b5f652000000000008216600f0b13614d10575b5f651000000000008216600f0b13614cf3575b5f650800000000008216600f0b13614cd6575b5f650400000000008216600f0b13614cb9575b5f650200000000008216600f0b13614c9c575b5f650100000000008216600f0b13614c7f575b5f6480000000008216600f0b13614c62575b5f6440000000008216600f0b13614c45575b5f6420000000008216600f0b13614c28575b5f6410000000008216600f0b13614c0b575b5f6408000000008216600f0b13614bee575b5f6404000000008216600f0b13614bd1575b5f6402000000008216600f0b13614bb4575b5f6401000000008216600f0b13614b97575b5f63800000008216600f0b13614b7a575b5f63400000008216600f0b13614b5d575b5f63200000008216600f0b13614b40575b5f63100000008216600f0b13614b23575b5f63080000008216600f0b13614b06575b5f63040000008216600f0b13614ae9575b5f63020000008216600f0b13614acc575b5f63010000008216600f0b13614aaf575b5f628000008216600f0b13614a92575b5f624000008216600f0b13614a75575b5f622000008216600f0b13614a58575b5f621000008216600f0b13614a3b575b5f620800008216600f0b13614a1e575b5f620400008216600f0b13614a01575b5f620200008216600f0b136149e4575b5f620100008216600f0b136149c7575b5f6180008216600f0b136149aa575b5f6140008216600f0b1361498d575b5f6120008216600f0b13614970575b5f6110008216600f0b13614953575b5f6108008216600f0b13614936575b5f6104008216600f0b13614919575b5f6102008216600f0b136148fc575b5f6101008216600f0b136148df575b5f60808216600f0b136148c2575b5f60408216600f0b136148a5575b5f60208216600f0b13614888575b5f60108216600f0b1361486b575b5f60088216600f0b1361484e575b5f60048216600f0b13614831575b5f60028216600f0b13614813575b60015f9116600f0b136147f6575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161071157600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c906147cc565b7001000000000000000162e42fefa39ef35890920260801c916147be565b9170010000000000000002c5c85fdf473de6b20260801c916147b0565b91700100000000000000058b90bfbe8e7bcd6d0260801c916147a2565b917001000000000000000b17217f7d1cf79afa0260801c91614794565b91700100000000000000162e42fefa39ef366f0260801c91614786565b917001000000000000002c5c85fdf473de6eca0260801c91614778565b9170010000000000000058b90bfbe8e7bce5440260801c9161476a565b91700100000000000000b17217f7d1cf79e9490260801c9161475c565b9170010000000000000162e42fefa39ef44d910260801c9161474d565b91700100000000000002c5c85fdf473dea871f0260801c9161473e565b917001000000000000058b90bfbe8e7bdcbe2e0260801c9161472f565b9170010000000000000b17217f7d1cf7d83c1a0260801c91614720565b917001000000000000162e42fefa39f02b772c0260801c91614711565b9170010000000000002c5c85fdf473e242ea380260801c91614702565b91700100000000000058b90bfbe8e7cc35c3f00260801c916146f3565b917001000000000000b17217f7d1cfb72b45e10260801c916146e4565b91700100000000000162e42fefa39fe95583c20260801c916146d4565b917001000000000002c5c85fdf4741bea6e77e0260801c916146c4565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c916146b4565b91700100000000000b17217f7d1d351a389d400260801c916146a4565b9170010000000000162e42fefa3ae53369388c0260801c91614694565b91700100000000002c5c85fdf477b662b269450260801c91614684565b917001000000000058b90bfbe8f71cb4e4b33d0260801c91614674565b9170010000000000b17217f7d20cf927c8e94c0260801c91614664565b917001000000000162e42fefa494f1478fde050260801c91614653565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c91614642565b91700100000000058b90bfbe9ddbac5e109cce0260801c91614631565b917001000000000b17217f7d5a7716bba4a9ae0260801c91614620565b91700100000000162e42fefb2fed257559bdaa0260801c9161460f565b917001000000002c5c85fdf84bd62ae30a74cc0260801c916145fe565b9170010000000058b90bfbf8479bd5a81b51ad0260801c916145ed565b91700100000000b17217f80f4ef5aadda455540260801c916145dc565b9170010000000162e42ff0999ce3541b9fffcf0260801c916145ca565b91700100000002c5c85fe31f35a6a30da1be500260801c916145b8565b917001000000058b90bfcdee5acd3c1cedc8230260801c916145a6565b9170010000000b17217fba9c739aa5819f44f90260801c91614594565b917001000000162e42fff037df38aa2b219f060260801c91614582565b9170010000002c5c8601cc6b9e94213c72737a0260801c91614570565b91700100000058b90c0b48c6be5df846c5b2ef0260801c9161455e565b917001000000b1721835514b86e6d96efd1bfe0260801c9161454c565b91700100000162e430e5a18f6119e3c02282a50260801c91614539565b917001000002c5c863b73f016468f6bac5ca2b0260801c91614526565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91614513565b91700100000b1721bcfc99d9f890ea069117630260801c91614500565b9170010000162e43f4f831060e02d839a9d16d0260801c916144ed565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c916144da565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c916144c7565b9170010000b17255775c040618bf4a4ade83fc0260801c916144b4565b917001000162e525ee054754457d59952920260260801c916144a0565b9170010002c5cc37da9491d0985c348c68e7b30260801c9161448c565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91614478565b917001000b175effdc76ba38e31671ca9397250260801c91614464565b91700100162f3904051fa128bca9c55c31e5df0260801c91614450565b917001002c605e2e8cec506d21bfc89a23a00f0260801c9161443c565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c91614428565b91700100b1afa5abcbed6129ab13ec11dc95430260801c91614414565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c916143ff565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c916143ea565b917001059b0d31585743ae7c548eb68ca417fd0260801c916143d5565b9170010b5586cf9890f6298b92b71842a983630260801c916143c0565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c916143ab565b917001306fe0a31b7152de8d5a46305c85edec0260801c91614396565b6fb504f333f9de6484597d89b3754abe9f925061438156fea264697066735822122043bf74af2633e25ab2330d593dbfd1d52cff0bf909bfe29106cc479fea7a2a7864736f6c634300081e0033a2646970667358221220b239ec7074b6ad8ed4d821ee3ca0df1ddb2b42479ef3dd6fa0a5e9cd87baad7564736f6c634300081e0033610140346103f557601f6136f238819003918201601f19168301916001600160401b038311848410176103f957808492610100946040528339810103126103f5576100498161040d565b60208201519091906001600160a01b03811681036103f55760408201516001600160a01b03811691908281036103f5576060840151906001600160a01b038216908183036103f55761009d6080870161040d565b936100aa60a0880161040d565b956100bc60e060c08a0151990161040d565b986001600160a01b03169182156103e2575f80546001600160a01b031981168517825560405194916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a360e0521561038f575060a05215610339576080526001600160a01b038116156102e357610100526001600160a01b038116156102785761012052620f42408110156102335760c052600180546001600160a01b0319166001600160a01b03929092169190911790556040516132d09081610422823960805181818161052101528181610f5d015281816117490152612683015260a0518181816104f80152818161101c01528181611720015261265a015260c0518181816104a2015281816116ca015281816122fe0152612604015260e0518181816104cf0152818161108a015281816116f70152612631015261010051818181610a7b01528181611bb40152612a760152610120518181816103310152818161155901526124970152f35b60405162461bcd60e51b815260206004820152601c60248201527f506c616e6e65723a2070726f746f636f6c20666565203e3d2070706d000000006044820152606490fd5b60405162461bcd60e51b815260206004820152603660248201527f506c616e6e65723a2062616c616e6365642070616972206465706c6f7965722060448201527f616464726573732063616e6e6f74206265207a65726f000000000000000000006064820152608490fd5b60405162461bcd60e51b815260206004820152602860248201527f506c616e6e65723a206465706c6f79657220616464726573732063616e6e6f74604482015267206265207a65726f60c01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602860248201527f506c616e6e65723a206d696e74496d706c20616464726573732063616e6e6f74604482015267206265207a65726f60c01b6064820152608490fd5b62461bcd60e51b815260206004820152602860248201527f506c616e6e65723a2073776170496d706c20616464726573732063616e6e6f74604482015267206265207a65726f60c01b6064820152608490fd5b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036103f55756fe60806040526004361015610011575f80fd5b5f3560e01c806314c870c014612ab157806360cf7d4a146123215780636b4082d1146122c95780636b7b911214612247578063715018a6146121ad5780638da5cb5b1461215d5780639a043832146120ec5780639f181b5e146120b1578063a4689b24146110d4578063a7753f09146110ae578063ac210cc714611040578063c405e44214610fd2578063cce516b714610f81578063f0d1ae4f14610f13578063f2fde38b14610e27578063f317672514610dbf578063f525cb6814610d84578063f63772fc146101515763f70a3a17146100ea575f80fd5b3461014d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5773ffffffffffffffffffffffffffffffffffffffff610136612afb565b165f526006602052602060405f2054604051908152f35b5f80fd5b3461014d576101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5760043567ffffffffffffffff811161014d576101a1903690600401612bae565b60243567ffffffffffffffff811161014d576101c1903690600401612bae565b9060443567ffffffffffffffff811161014d576101e2903690600401612c3a565b906101eb612cb5565b926101f4612d22565b906101fd612d31565b93610206612d54565b956101243567ffffffffffffffff811161014d5761022b909695963690600401612cc5565b61016435966102386131d5565b83519861025d6102478b612c22565b9a6102556040519c8d612b6d565b808c52612c22565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe060208c01910136823760843560011c985f5b87518110156102af57808b6102a88f93600194612e6f565b5201610290565b50908b918b6102bc6131d5565b8015908115610d79575b5015610d1b578751865103610c975773ffffffffffffffffffffffffffffffffffffffff16928315610c135773ffffffffffffffffffffffffffffffffffffffff16958615610b8f57600f0b985f8a1315610b31578251885103610aad5780610aa2575b15610a79577f00000000000000000000000000000000000000000000000000000000000000009198905b5f5473ffffffffffffffffffffffffffffffffffffffff169160015473ffffffffffffffffffffffffffffffffffffffff16906040519b8c947f6ae73ce3000000000000000000000000000000000000000000000000000000008652600486015260248501610180905261018485016103cd9089612f54565b8581037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc016044870152610401908d612f54565b8581037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc016064870152610435908c612f97565b9160848601528482037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0160a4860152519081815260200192905f5b818110610a60575050505f73ffffffffffffffffffffffffffffffffffffffff8460209694819460a43560c48401527f000000000000000000000000000000000000000000000000000000000000000060e4840152610104830152827f000000000000000000000000000000000000000000000000000000000000000016610124830152827f000000000000000000000000000000000000000000000000000000000000000016610144830152827f0000000000000000000000000000000000000000000000000000000000000000166101648301520393165af1968715610904575f97610a0f575b5061056487612fe0565b73ffffffffffffffffffffffffffffffffffffffff871691825f52600460205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790555f5b86518110156106d05773ffffffffffffffffffffffffffffffffffffffff6105db8289612e6f565b511690815f52600560205260ff60405f20541615610611575b6001915f52600660205261060b8a60405f20613050565b016105b3565b60035491680100000000000000008310156106a3578061066661063b856001809701600355612e15565b819391549073ffffffffffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b9055805f52600560205260405f20837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905591506105f4565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b509087837ff45e30d37dc5ef98e17708308b886213b8f485ea52d495067eed8d4977423f2261071589956107316107238d604051948594606086526060860190612f54565b908482036020860152612f54565b828103604084015288612f97565b0390a25f5b835181101561095b576107498187612e6f565b51610757575b600101610736565b73ffffffffffffffffffffffffffffffffffffffff6107768286612e6f565b51166107828288612e6f565b51604051907f23b872dd000000000000000000000000000000000000000000000000000000005f52856004528760245260445260205f60648180865af19060015f511482161561093a575b6040525f6060521561090f57506024602073ffffffffffffffffffffffffffffffffffffffff6107fd8488612e6f565b5116604051928380927f70a082310000000000000000000000000000000000000000000000000000000082528a60048301525afa908115610904575f916108d3575b5061084a8288612e6f565b511461074f5760846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f6665652d6f6e2d7472616e7366657220746f6b656e73206e6f7420737570706f60448201527f72746564000000000000000000000000000000000000000000000000000000006064820152fd5b90506020813d82116108fc575b816108ed60209383612b6d565b8101031261014d57518861083f565b3d91506108e0565b6040513d5f823e3d90fd5b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b90600181151661095257823b15153d151616906107cd565b503d5f823e3d90fd5b6040517f6d8d0ff300000000000000000000000000000000000000000000000000000000815260048101889052610144356024820152826020826044815f8b5af1918215610904575f926109db575b506040805173ffffffffffffffffffffffffffffffffffffffff9092168252602082019290925290819081015b0390f35b9091506020813d602011610a07575b816109f760209383612b6d565b8101031261014d575190826109aa565b3d91506109ea565b9096506020813d602011610a58575b81610a2b60209383612b6d565b8101031261014d575173ffffffffffffffffffffffffffffffffffffffff8116810361014d57958761055a565b3d9150610a1e565b825185528d955060209485019490920191600101610471565b7f0000000000000000000000000000000000000000000000000000000000000000919890610354565b50600287511461032a565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f506c616e6e65723a206665657320616e6420746f6b656e73206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f506c616e6e65723a206b61707061206d757374206265203e20300000000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f506c616e6e65723a2072656365697665722063616e6e6f74206265207a65726f60448201527f20616464726573730000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f506c616e6e65723a2070617965722063616e6e6f74206265207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f506c616e6e65723a20746f6b656e7320616e64206465706f73697473206c656e60448201527f677468206d69736d6174636800000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f506c616e6e65723a20646561646c696e652065786365656465640000000000006044820152fd5b90504211158b6102c6565b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d576020600254604051908152f35b3461014d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5773ffffffffffffffffffffffffffffffffffffffff610e0b612afb565b165f526004602052602060ff60405f2054166040519015158152f35b3461014d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5773ffffffffffffffffffffffffffffffffffffffff610e73612afb565b610e7b6131d5565b168015610ee75773ffffffffffffffffffffffffffffffffffffffff5f54827fffffffffffffffffffffffff00000000000000000000000000000000000000008216175f55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b7f1e4fbdf7000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461014d576109d76110c86110c236612d78565b9061312b565b60405191829182612b1e565b3461014d576101a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5760043567ffffffffffffffff811161014d57611124903690600401612bae565b60243567ffffffffffffffff811161014d57611144903690600401612bae565b9060443567ffffffffffffffff811161014d57611165903690600401612c3a565b9161116e612cb5565b916084359182600f0b80930361014d5760e43594851515860361014d57611193612d54565b94610124359073ffffffffffffffffffffffffffffffffffffffff821680920361014d576101443567ffffffffffffffff811161014d576111d8903690600401612cc5565b9061018435966111e66131d5565b81600f0b906801000000000000000082121561202d5768010000000000000000811215611fa9578551916001831115611f4b575f1215611eed578068010000000000000000017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580611ed3575b1561014d57600f0b9061126883613221565b927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908111611ea65761129c90613221565b600f0b0260401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580611e8c575b1561014d57600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580611e72575b1561014d57600f90810b92900b8112611e03575f821315611da55761132e91613239565b600f0b5f81138080611d93575b15611d35571561014d575f908068010000000000000000821215611d28575b806401000000006002921215611d1c575b62010000811215611d10575b610100811215611d04575b6010811215611cf8575b6004811215611ced575b1215611ce3575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f8313611cc757506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082600f0b1461014d5761142f915f03600f0b613239565b600f0b5f811315611c6957801561014d57700100000000000000000000000000000000057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580611c4f575b1561014d57600f0b945f861315611bf1576114999796976131d5565b8351986114a86102478b612c22565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe060208c01910136823760a43560011c985f5b87518110156114fa57808b6114f38f93600194612e6f565b52016114db565b50908b918b6115076131d5565b8015908115611be6575b5015610d1b578751865103610c975773ffffffffffffffffffffffffffffffffffffffff16928315610c13578615610b8f578251885103610aad5780611bdb575b15611bb2577f00000000000000000000000000000000000000000000000000000000000000009198905b5f5473ffffffffffffffffffffffffffffffffffffffff169160015473ffffffffffffffffffffffffffffffffffffffff16906040519b8c947f6ae73ce3000000000000000000000000000000000000000000000000000000008652600486015260248501610180905261018485016115f59089612f54565b8581037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc016044870152611629908d612f54565b8581037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01606487015261165d908c612f97565b9160848601528482037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0160a4860152519081815260200192905f5b818110611b99575050505f73ffffffffffffffffffffffffffffffffffffffff8460209694819460c43560c48401527f000000000000000000000000000000000000000000000000000000000000000060e4840152610104830152827f000000000000000000000000000000000000000000000000000000000000000016610124830152827f000000000000000000000000000000000000000000000000000000000000000016610144830152827f0000000000000000000000000000000000000000000000000000000000000000166101648301520393165af1968715610904575f97611b48575b5061178c87612fe0565b73ffffffffffffffffffffffffffffffffffffffff871691825f52600460205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790555f5b86518110156118a05773ffffffffffffffffffffffffffffffffffffffff6118038289612e6f565b511690815f52600560205260ff60405f20541615611839575b6001915f5260066020526118338a60405f20613050565b016117db565b60035491680100000000000000008310156106a3578061186361063b856001809701600355612e15565b9055805f52600560205260405f20837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055915061181c565b509087837ff45e30d37dc5ef98e17708308b886213b8f485ea52d495067eed8d4977423f2261071589956118e56107238d604051948594606086526060860190612f54565b0390a25f5b8351811015611ad0576118fd8187612e6f565b5161190b575b6001016118ea565b73ffffffffffffffffffffffffffffffffffffffff61192a8286612e6f565b51166119368288612e6f565b51604051907f23b872dd000000000000000000000000000000000000000000000000000000005f52856004528760245260445260205f60648180865af19060015f5114821615611ab8575b6040525f6060521561090f57506024602073ffffffffffffffffffffffffffffffffffffffff6119b18488612e6f565b5116604051928380927f70a082310000000000000000000000000000000000000000000000000000000082528a60048301525afa908115610904575f91611a87575b506119fe8288612e6f565b51146119035760846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f6665652d6f6e2d7472616e7366657220746f6b656e73206e6f7420737570706f60448201527f72746564000000000000000000000000000000000000000000000000000000006064820152fd5b90506020813d8211611ab0575b81611aa160209383612b6d565b8101031261014d5751886119f3565b3d9150611a94565b90600181151661095257823b15153d15161690611981565b6040517f6d8d0ff300000000000000000000000000000000000000000000000000000000815260048101889052610164356024820152826020826044815f8b5af1918215610904575f926109db57506040805173ffffffffffffffffffffffffffffffffffffffff9290921682526020820192909252f35b9096506020813d602011611b91575b81611b6460209383612b6d565b8101031261014d575173ffffffffffffffffffffffffffffffffffffffff8116810361014d579587611782565b3d9150611b57565b825185528d955060209485019490920191600101611699565b7f000000000000000000000000000000000000000000000000000000000000000091989061157c565b506002875114611552565b90504211158b611511565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4d53523a206b617070613c3d300000000000000000000000000000000000006044820152fd5b506f7fffffffffffffffffffffffffffffff81131561147d565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4c4d53523a20793c3d30000000000000000000000000000000000000000000006044820152fd5b8002908160ff1c9182607f011c918302019160011d91906113d4565b906001019061139d565b92810192811d611396565b6004938401931d61138c565b6008938401931d611382565b6010938401931d611377565b6020938401931d61136b565b506040915080821d61135a565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4c4d53523a20626164204520726174696f0000000000000000000000000000006044820152fd5b5068010000000000000000821261133b565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4c4d53523a207320746f6f206c6172676520666f72206e0000000000000000006044820152fd5b5f821315611e145761132e91613239565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4c4d53523a2062616420736c697070616765206f72206e0000000000000000006044820152fd5b506f7fffffffffffffffffffffffffffffff81131561130a565b506f7fffffffffffffffffffffffffffffff8113156112cd565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b506f7fffffffffffffffffffffffffffffff811315611256565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4c4d53523a20663d3000000000000000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4c4d53523a206e3e3120726571756972656400000000000000000000000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f506c616e6e65723a20746172676574536c697070616765206d7573742062652060448201527f3c2031202836342e3634290000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f506c616e6e65723a20747261646546726163206d757374206265203c2031202860448201527f36342e36342900000000000000000000000000000000000000000000000000006064820152fd5b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d576020600354604051908152f35b3461014d576121036120fd36612d78565b9061308b565b6040518091602082016020835281518091526020604084019201905f5b81811061212e575050500390f35b825173ffffffffffffffffffffffffffffffffffffffff16845285945060209384019390920191600101612120565b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d576121e36131d5565b5f73ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461014d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5773ffffffffffffffffffffffffffffffffffffffff612293612afb565b61229b6131d5565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060015416176001555f80f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461014d576101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5760043567ffffffffffffffff811161014d57612371903690600401612bae565b60243567ffffffffffffffff811161014d57612391903690600401612bae565b60443567ffffffffffffffff811161014d576123b1903690600401612c3a565b6123b9612cb5565b60843567ffffffffffffffff811161014d576123d9903690600401612cc5565b6123e1612d22565b946123ea612d31565b916123f3612d54565b906101243567ffffffffffffffff811161014d57612415903690600401612cc5565b93610164356124226131d5565b8015908115612aa6575b5015610d1b578651855103610c975773ffffffffffffffffffffffffffffffffffffffff16918215610c135773ffffffffffffffffffffffffffffffffffffffff16948515610b8f57600f0b975f891315610b31578151875103610aad5780612a9b575b15612a74577f0000000000000000000000000000000000000000000000000000000000000000905b73ffffffffffffffffffffffffffffffffffffffff5f54169073ffffffffffffffffffffffffffffffffffffffff600154166040519a8b937f6ae73ce30000000000000000000000000000000000000000000000000000000085526004850152610180602485015261259461256461253461018487018a612f54565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8782030160448801528d612f54565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8682030160648701528b612f97565b9060848501527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8482030160a4850152602080845192838152019301905f5b818110612a5b575050505f73ffffffffffffffffffffffffffffffffffffffff8460209694819460a43560c48401527f000000000000000000000000000000000000000000000000000000000000000060e4840152610104830152827f000000000000000000000000000000000000000000000000000000000000000016610124830152827f000000000000000000000000000000000000000000000000000000000000000016610144830152827f0000000000000000000000000000000000000000000000000000000000000000166101648301520393165af1968715610904575f97612a0a575b506126c687612fe0565b73ffffffffffffffffffffffffffffffffffffffff871691825f52600460205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790555f5b86518110156127da5773ffffffffffffffffffffffffffffffffffffffff61273d8289612e6f565b511690815f52600560205260ff60405f20541615612773575b6001915f52600660205261276d8a60405f20613050565b01612715565b60035491680100000000000000008310156106a3578061279d61063b856001809701600355612e15565b9055805f52600560205260405f20837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790559150612756565b509087837ff45e30d37dc5ef98e17708308b886213b8f485ea52d495067eed8d4977423f22610715899561281f6107238d604051948594606086526060860190612f54565b0390a25f5b835181101561095b576128378187612e6f565b51612845575b600101612824565b73ffffffffffffffffffffffffffffffffffffffff6128648286612e6f565b51166128708288612e6f565b51604051907f23b872dd000000000000000000000000000000000000000000000000000000005f52856004528760245260445260205f60648180865af19060015f51148216156129f2575b6040525f6060521561090f57506024602073ffffffffffffffffffffffffffffffffffffffff6128eb8488612e6f565b5116604051928380927f70a082310000000000000000000000000000000000000000000000000000000082528a60048301525afa908115610904575f916129c1575b506129388288612e6f565b511461283d5760846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f6665652d6f6e2d7472616e7366657220746f6b656e73206e6f7420737570706f60448201527f72746564000000000000000000000000000000000000000000000000000000006064820152fd5b90506020813d82116129ea575b816129db60209383612b6d565b8101031261014d57518861292d565b3d91506129ce565b90600181151661095257823b15153d151616906128bb565b9096506020813d602011612a53575b81612a2660209383612b6d565b8101031261014d575173ffffffffffffffffffffffffffffffffffffffff8116810361014d5795876126bc565b3d9150612a19565b825185528d9550602094850194909201916001016125d3565b7f0000000000000000000000000000000000000000000000000000000000000000906124b8565b506002865114612490565b90504211158a61242c565b3461014d5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d576109d76110c8612aee612afb565b6044359060243590612e83565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361014d57565b60206040818301928281528451809452019201905f5b818110612b415750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101612b34565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176106a357604052565b81601f8201121561014d5780359067ffffffffffffffff82116106a35760405192612c0160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601160185612b6d565b8284526020838301011161014d57815f926020809301838601378301015290565b67ffffffffffffffff81116106a35760051b60200190565b9080601f8301121561014d57813590612c5282612c22565b92612c606040519485612b6d565b82845260208085019360051b82010191821161014d57602001915b818310612c885750505090565b823573ffffffffffffffffffffffffffffffffffffffff8116810361014d57815260209283019201612c7b565b6064359081600f0b820361014d57565b9080601f8301121561014d578135612cdc81612c22565b92612cea6040519485612b6d565b81845260208085019260051b82010192831161014d57602001905b828210612d125750505090565b8135815260209182019101612d05565b60c43590811515820361014d57565b60e4359073ffffffffffffffffffffffffffffffffffffffff8216820361014d57565b610104359073ffffffffffffffffffffffffffffffffffffffff8216820361014d57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc604091011261014d576004359060243590565b90612db682612c22565b612dc36040519182612b6d565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0612df18294612c22565b0190602036910137565b91908201809211611ea657565b91908203918211611ea657565b600354811015612e2d5760035f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8054821015612e2d575f5260205f2001905f90565b8051821015612e2d5760209160051b010190565b73ffffffffffffffffffffffffffffffffffffffff90929192165f52600660205260405f2090815480841015612f3857808491612ec08484612dfb565b1115612f3057612ed09250612e08565b905b612edb82612dac565b925f5b838110612eec575050505090565b8073ffffffffffffffffffffffffffffffffffffffff612f17612f1160019486612dfb565b86612e5a565b90549060031b1c16612f298288612e6f565b5201612ede565b505090612ed2565b50505050604051612f4a602082612b6d565b5f81525f36813790565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b90602080835192838152019201905f5b818110612fb45750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101612fa7565b600254680100000000000000008110156106a35773ffffffffffffffffffffffffffffffffffffffff61301e82600161304c94016002556002612e5a565b919093169083549073ffffffffffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b9055565b8054680100000000000000008110156106a35761301e8161304c93600173ffffffffffffffffffffffffffffffffffffffff94018155612e5a565b919060035480841015613119578084916130a58484612dfb565b1115613112576130b59250612e08565b6130be81612dac565b905f5b8181106130cf575090925050565b8073ffffffffffffffffffffffffffffffffffffffff6130f96130f460019489612dfb565b612e15565b90549060031b1c1661310b8286612e6f565b52016130c1565b50506130b5565b50509050604051612f4a602082612b6d565b90600254808310156131c4578083916131448484612dfb565b11156131bc576131549250612e08565b905b61315f82612dac565b915f91600254925b828110613175575050505090565b61317f8183612dfb565b9084821015612e2d5773ffffffffffffffffffffffffffffffffffffffff60019260025f5260205f200154166131b58288612e6f565b5201613167565b505090613156565b505050604051612f4a602082612b6d565b73ffffffffffffffffffffffffffffffffffffffff5f541633036131f557565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b677fffffffffffffff811161014d5760401b600f0b90565b90600f0b90811561014d5760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613280575b1561014d57600f0b90565b506f7fffffffffffffffffffffffffffffff81131561327556fea26469706673582212200f068c5d1e462e2aef9bf458cabb8f9a47c383be2b40c9c96d830b134c690f5e64736f6c634300081e003360c03461009a57601f612fd338819003918201601f19168301916001600160401b0383118484101761009e57808492604094855283398101031261009a578051906001600160a01b038216820361009a5760200151906001600160a01b038216820361009a5760805260a052604051612f2090816100b3823960805181610311015260a0518181816106c401528181610e57015261189f0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c9081630ab75fef14611968575080630db4cdda1461171c5780633a06daa2146111d357806344e48a9c14610f6157806397c6481214610cd4578063ad84489314610bf5578063b9c0d20414610888578063bfb5cdc51461058b578063c63a9743146100d95763c757221b1461008a575f80fd5b346100d55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d55760206100cb6100c6611a3b565b611e69565b6040519015158152f35b5f80fd5b346100d55760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d557610110611a3b565b6024356044356064359283600f0b8094036100d55773ffffffffffffffffffffffffffffffffffffffff16916040517f476e44b60000000000000000000000000000000000000000000000000000000081525f81600481875afa80156103a1576020915f91610569575b500180515180831080610560575b15610502575f8613156104a45715610446576040517f017cf6610000000000000000000000000000000000000000000000000000000081525f81600481885afa9081156103a1575f91610424575b50604051907f6bba3f2f000000000000000000000000000000000000000000000000000000008252602082600481895afa9182156103a1575f926103e3575b5060206044935196604051948580927f939f5ea40000000000000000000000000000000000000000000000000000000082528860048301528960248301525afa9283156103a1575f936103ac575b50906060956102ba6102f293604051998a9889987fbf05a0a6000000000000000000000000000000000000000000000000000000008a5260048a01526024890152604488015260e0606488015260e4870190611ad6565b91600f0b60848601527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8583030160a4860152611d44565b9060c4830152038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156103a1575f905f925f9161036a575b5061036690604051938493846040919493926060820195825260208201520152565b0390f35b90506103669250610393915060603d60601161039a575b61038b8183611b09565b810190611d29565b9092610344565b503d610381565b6040513d5f823e3d90fd5b919092506020823d6020116103db575b816103c960209383611b09565b810103126100d5579051916060610263565b3d91506103bc565b9291506020833d60201161041c575b816103ff60209383611b09565b810103126100d5576020610414604494611b77565b929350610215565b3d91506103f2565b61044091503d805f833e6104388183611b09565b810190611c6e565b866101d6565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f73776170546f4c696d69743a20706f6f6c20756e696e697469616c697a6564006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f73776170546f4c696d69743a206c696d6974203c3d20300000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f73776170546f4c696d69743a20696478000000000000000000000000000000006044820152fd5b50808410610188565b61058591503d805f833e61057d8183611b09565b810190611b9d565b8661017a565b346100d55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d55773ffffffffffffffffffffffffffffffffffffffff6105d7611a3b565b166040517f476e44b60000000000000000000000000000000000000000000000000000000081525f81600481855afa80156103a1576020915f9161086e575b500151519061062482611dcf565b915f5b81811061075a576040517f18160ddd0000000000000000000000000000000000000000000000000000000081528490602081600481885afa9081156103a1575f91610726575b506106ab915f9160405193849283927fcdc2468b00000000000000000000000000000000000000000000000000000000845260243560048501611e4a565b038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156103a157610366915f9161070c575b50604051918291602083526020830190611ad6565b61072091503d805f833e6104388183611b09565b826106f7565b90506020813d602011610752575b8161074160209383611b09565b810103126100d557516106ab61066d565b3d9150610734565b604051907fe4b50cb8000000000000000000000000000000000000000000000000000000008252806004830152602082602481875afa9182156103a15773ffffffffffffffffffffffffffffffffffffffff926020915f91610841575b506024604051809581937f70a08231000000000000000000000000000000000000000000000000000000008352896004840152165afa80156103a1575f9061080f575b600192506108088287611ce8565b5201610627565b506020823d8211610839575b8161082860209383611b09565b810103126100d557600191516107fa565b3d915061081b565b6108619150823d8111610867575b6108598183611b09565b810190611e1e565b876107b7565b503d61084f565b61088291503d805f833e61057d8183611b09565b83610616565b346100d55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d5576108bf611a3b565b73ffffffffffffffffffffffffffffffffffffffff6024359116906040517f476e44b60000000000000000000000000000000000000000000000000000000081525f81600481865afa80156103a1576020915f91610bdb575b50018051518015610b7d57821015610b1f576020600493604051948580927f6bba3f2f0000000000000000000000000000000000000000000000000000000082525afa9283156103a1575f93610ae3575b5051906109758261210c565b9261099084600f0b945f86139261098b84611f94565b61205e565b9061099f5f83600f0b13611ff9565b15610a85576109ad90612141565b5f928051915f935b838510610a2257868681156100d55760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580610a08575b156100d557602090600f0b604051908152f35b506f7fffffffffffffffffffffffffffffff8113156109f5565b9091929394610a7a600191610a74610a61610a5c8761098b610a448d8c611ce8565b51600f0b610a528a8d611ce8565b51600f0b90612191565b612281565b610a6b8a89611ce8565b51600f0b61205e565b90612244565b9501939291906109b5565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c4d53523a2073697a65207a65726f00000000000000000000000000000000006044820152fd5b9092506020813d602011610b17575b81610aff60209383611b09565b810103126100d557610b1090611b77565b9183610969565b3d9150610af2565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f706f6f6c50726963653a206964780000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f706f6f6c50726963653a20756e696e69740000000000000000000000000000006044820152fd5b610bef91503d805f833e61057d8183611b09565b84610918565b346100d55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d55773ffffffffffffffffffffffffffffffffffffffff6020610c43611a3b565b610c4b611a5e565b506004604051809481937f31596a6a000000000000000000000000000000000000000000000000000000008352165afa9081156103a1575f91610ca0575b6020610c97836044356120b9565b50604051908152f35b90506020813d602011610ccc575b81610cbb60209383611b09565b810103126100d55751610c97610c89565b3d9150610cae565b346100d55773ffffffffffffffffffffffffffffffffffffffff610cf736611a81565b6040517f476e44b60000000000000000000000000000000000000000000000000000000081529390921691905f84600481865afa9384156103a1575f94610f45575b506040517f9af1d35a0000000000000000000000000000000000000000000000000000000081525f81600481875afa9081156103a157610d829184915f91610f2b575b50611ce8565b5193604051937f017cf6610000000000000000000000000000000000000000000000000000000085525f85600481845afa9485156103a1575f95610f07575b50906020600492604051938480927f18160ddd0000000000000000000000000000000000000000000000000000000082525afa9182156103a1575f92610ed2575b5090604094610e3e92865197889687967ff16b7c2600000000000000000000000000000000000000000000000000000000885260048801611d7a565b038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156103a1575f905f90610e98575b6040809350519182526020820152f35b50506040813d604011610eca575b81610eb360409383611b09565b810103126100d55780602060409251910151610e88565b3d9150610ea6565b91506020823d602011610eff575b81610eed60209383611b09565b810103126100d5579051906040610e02565b3d9150610ee0565b600492919550610f226020913d805f833e6104388183611b09565b95919250610dc1565b610f3f91503d805f833e6104388183611b09565b87610d7c565b610f5a9194503d805f833e61057d8183611b09565b9284610d39565b346100d55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d55773ffffffffffffffffffffffffffffffffffffffff610fad611a3b565b166040517f476e44b60000000000000000000000000000000000000000000000000000000081525f81600481855afa80156103a1576020915f916111b9575b5001515190610ffa82611dcf565b915f5b8181106110b5576040517f18160ddd0000000000000000000000000000000000000000000000000000000081528490602081600481885afa9081156103a1575f91611081575b506106ab915f9160405193849283927f228fa85000000000000000000000000000000000000000000000000000000000845260243560048501611e4a565b90506020813d6020116110ad575b8161109c60209383611b09565b810103126100d557516106ab611043565b3d915061108f565b604051907fe4b50cb8000000000000000000000000000000000000000000000000000000008252806004830152602082602481875afa9182156103a15773ffffffffffffffffffffffffffffffffffffffff926020915f9161119c575b506024604051809581937f70a08231000000000000000000000000000000000000000000000000000000008352896004840152165afa80156103a1575f9061116a575b600192506111638287611ce8565b5201610ffd565b506020823d8211611194575b8161118360209383611b09565b810103126100d55760019151611155565b3d9150611176565b6111b39150823d8111610867576108598183611b09565b87611112565b6111cd91503d805f833e61057d8183611b09565b83610fec565b346100d55773ffffffffffffffffffffffffffffffffffffffff6111f636611a81565b92909116906040517f476e44b60000000000000000000000000000000000000000000000000000000081525f81600481865afa80156103a1576020915f91611702575b500180515180156116a457808310908161169a575b501561163c576040517f6bba3f2f000000000000000000000000000000000000000000000000000000008152602081600481875afa9081156103a1575f916115ed575b50610a5c9061098b6112d06112bd6112e99551936112ae8561210c565b9061098b5f83600f0b13611f94565b6112cb5f82600f0b13611ff9565b612141565b91610a52866112df8a84611ce8565b51600f0b92611ce8565b926040517f017cf6610000000000000000000000000000000000000000000000000000000081525f81600481875afa9081156103a1576004935f926113349284916115d35750611ce8565b5193604051938480927f017cf6610000000000000000000000000000000000000000000000000000000082525afa80156103a157611378925f916115b95750611ce8565b519081156100d55777ffffffffffffffffffffffffffffffffffffffffffffffff811161140757906113ac9160401b6121ce565b6fffffffffffffffffffffffffffffffff81116100d5576fffffffffffffffffffffffffffffffff166f7fffffffffffffffffffffffffffffff81116100d5576020916113fc91600f0b9061205e565b60405190600f0b8152f35b60c09181831c80936401000000008210156115ac575b600282620100006114aa9410156115a0575b610100811015611594575b6010811015611588575b600481101561157d575b1015611575575b8360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b6121ce565b926fffffffffffffffffffffffffffffffff84116100d5578160801c8402906fffffffffffffffffffffffffffffffff8316850290809460401b9082821061154b575b5003928160801b91828510611522575b60801c036115175761150f92036121ce565b905b016113ac565b505050600190611511565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906114fd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019450876114ed565b600101611455565b91810191811c61144e565b6004928301921c611444565b6008928301921c61143a565b6010928301921c61142f565b505060e082811c9061141d565b6115cd91503d805f833e6104388183611b09565b85610d7c565b6115e791503d8086833e6104388183611b09565b88610d7c565b90506020813d602011611634575b8161160860209383611b09565b810103126100d5576112e99161098b6112d06112bd611629610a5c95611b77565b945050505091611291565b3d91506115fb565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f70726963653a20696478000000000000000000000000000000000000000000006044820152fd5b905084108561124e565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f70726963653a20756e696e6974000000000000000000000000000000000000006044820152fd5b61171691503d805f833e61057d8183611b09565b85611239565b346100d55773ffffffffffffffffffffffffffffffffffffffff61173f36611a81565b6040517f476e44b60000000000000000000000000000000000000000000000000000000081529390921691905f84600481865afa9384156103a1575f9461194c575b506040517f9af1d35a0000000000000000000000000000000000000000000000000000000081525f81600481875afa9081156103a1576117c99183915f91610f2b5750611ce8565b5193604051937f017cf6610000000000000000000000000000000000000000000000000000000085525f85600481845afa9485156103a1575f95611928575b50906020600492604051938480927f18160ddd0000000000000000000000000000000000000000000000000000000082525afa9182156103a1575f926118f3575b50906060946118869260405197889687967fe9f317f000000000000000000000000000000000000000000000000000000000885260048801611d7a565b038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156103a1575f905f925f9161036a575061036690604051938493846040919493926060820195825260208201520152565b91506020823d602011611920575b8161190e60209383611b09565b810103126100d5579051906060611849565b3d9150611901565b6004929195506119436020913d805f833e6104388183611b09565b95919250611808565b6119619194503d805f833e61057d8183611b09565b9284611781565b346100d55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d5576020816024816119a5611a3b565b73ffffffffffffffffffffffffffffffffffffffff806119c3611a5e565b16917f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa80156103a1575f90611a08575b602090604051908152f35b506020813d602011611a33575b81611a2260209383611b09565b810103126100d557602090516119fd565b3d9150611a15565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036100d557565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036100d557565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60609101126100d55760043573ffffffffffffffffffffffffffffffffffffffff811681036100d557906024359060443590565b90602080835192838152019201905f5b818110611af35750505090565b8251845260209384019390920191600101611ae6565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611b4a57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b519081600f0b82036100d557565b67ffffffffffffffff8111611b4a5760051b60200190565b6020818303126100d55780519067ffffffffffffffff82116100d55701906040828203126100d557604051916040830183811067ffffffffffffffff821117611b4a57604052611bec81611b77565b835260208101519067ffffffffffffffff82116100d557019080601f830112156100d5578151611c1b81611b85565b92611c296040519485611b09565b81845260208085019260051b8201019283116100d557602001905b828210611c5657505050602082015290565b60208091611c6384611b77565b815201910190611c44565b6020818303126100d55780519067ffffffffffffffff82116100d557019080601f830112156100d5578151611ca281611b85565b92611cb06040519485611b09565b81845260208085019260051b8201019283116100d557602001905b828210611cd85750505090565b8151815260209182019101611ccb565b8051821015611cfc5760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b908160609103126100d5578051916040602083015192015190565b90602080835192838152019201905f5b818110611d615750505090565b8251600f0b845260209384019390920191600101611d54565b9695949160a094611dca94602092611dbc948b52838b015260408a015260c060608a01528051600f0b60c08a01520151604060e0890152610100880190611d44565b908682036080880152611ad6565b930152565b90611dd982611b85565b611de66040519182611b09565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611e148294611b85565b0190602036910137565b908160209103126100d5575173ffffffffffffffffffffffffffffffffffffffff811681036100d55790565b611e669392606092825260208201528160408201520190611ad6565b90565b73ffffffffffffffffffffffffffffffffffffffff166040517f1f3a0e41000000000000000000000000000000000000000000000000000000008152602081600481855afa9081156103a1575f91611f59575b50611f54575f600491604051928380927f476e44b60000000000000000000000000000000000000000000000000000000082525afa9081156103a1575f91611f3a575b505f5b60208201518051821015611f3357611f1b825f92611ce8565b51600f0b13611f2c57600101611f02565b5050600190565b5050505f90565b611f4e91503d805f833e61057d8183611b09565b5f611eff565b505f90565b90506020813d602011611f8c575b81611f7460209383611b09565b810103126100d5575180151581036100d5575f611ebc565b3d9150611f67565b15611f9b57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b1561200057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4c4d53523a20623c3d30000000000000000000000000000000000000000000006044820152fd5b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061209f575b156100d557600f0b90565b506f7fffffffffffffffffffffffffffffff811315612094565b91908015612106576120cb9083612205565b918281039081116120d95790565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b505f9190565b5f90815b815183101561213b576121336001916121298585611ce8565b51600f0b90612244565b920191612110565b91505090565b600f0b80156100d557700100000000000000000000000000000000057fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061209f57156100d557600f0b90565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061209f57156100d557600f0b90565b81156121d8570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b811561223e578181029181830414901517156120d957620f42408101908181116120d957620f423f019081116120d957620f4240900490565b50505f90565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061209f57156100d557600f0b90565b600f0b684000000000000000008112156100d5577fffffffffffffffffffffffffffffffffffffffffffffffc000000000000000008112611f5457611e6690700171547652b82fe1777d0ffda0d23a7d120260801d600f0b80684000000000000000008112156100d5577fffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000811261223e576f80000000000000000000000000000000915f6780000000000000008216600f0b13612ed2575b5f6740000000000000008216600f0b13612eb5575b5f6720000000000000008216600f0b13612e98575b5f6710000000000000008216600f0b13612e7b575b5f6708000000000000008216600f0b13612e5e575b5f6704000000000000008216600f0b13612e41575b5f6702000000000000008216600f0b13612e24575b5f6701000000000000008216600f0b13612e07575b5f66800000000000008216600f0b13612dea575b5f66400000000000008216600f0b13612dcd575b5f66200000000000008216600f0b13612db0575b5f66100000000000008216600f0b13612d93575b5f66080000000000008216600f0b13612d76575b5f66040000000000008216600f0b13612d59575b5f66020000000000008216600f0b13612d3c575b5f66010000000000008216600f0b13612d1f575b5f658000000000008216600f0b13612d02575b5f654000000000008216600f0b13612ce5575b5f652000000000008216600f0b13612cc8575b5f651000000000008216600f0b13612cab575b5f650800000000008216600f0b13612c8e575b5f650400000000008216600f0b13612c71575b5f650200000000008216600f0b13612c54575b5f650100000000008216600f0b13612c37575b5f6480000000008216600f0b13612c1a575b5f6440000000008216600f0b13612bfd575b5f6420000000008216600f0b13612be0575b5f6410000000008216600f0b13612bc3575b5f6408000000008216600f0b13612ba6575b5f6404000000008216600f0b13612b89575b5f6402000000008216600f0b13612b6c575b5f6401000000008216600f0b13612b4f575b5f63800000008216600f0b13612b32575b5f63400000008216600f0b13612b15575b5f63200000008216600f0b13612af8575b5f63100000008216600f0b13612adb575b5f63080000008216600f0b13612abe575b5f63040000008216600f0b13612aa1575b5f63020000008216600f0b13612a84575b5f63010000008216600f0b13612a67575b5f628000008216600f0b13612a4a575b5f624000008216600f0b13612a2d575b5f622000008216600f0b13612a10575b5f621000008216600f0b136129f3575b5f620800008216600f0b136129d6575b5f620400008216600f0b136129b9575b5f620200008216600f0b1361299c575b5f620100008216600f0b1361297f575b5f6180008216600f0b13612962575b5f6140008216600f0b13612945575b5f6120008216600f0b13612928575b5f6110008216600f0b1361290b575b5f6108008216600f0b136128ee575b5f6104008216600f0b136128d1575b5f6102008216600f0b136128b4575b5f6101008216600f0b13612897575b5f60808216600f0b1361287a575b5f60408216600f0b1361285d575b5f60208216600f0b13612840575b5f60108216600f0b13612823575b5f60088216600f0b13612806575b5f60048216600f0b136127e9575b5f60028216600f0b136127cb575b60015f9116600f0b136127ae575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff81116100d557600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c90612784565b7001000000000000000162e42fefa39ef35890920260801c91612776565b9170010000000000000002c5c85fdf473de6b20260801c91612768565b91700100000000000000058b90bfbe8e7bcd6d0260801c9161275a565b917001000000000000000b17217f7d1cf79afa0260801c9161274c565b91700100000000000000162e42fefa39ef366f0260801c9161273e565b917001000000000000002c5c85fdf473de6eca0260801c91612730565b9170010000000000000058b90bfbe8e7bce5440260801c91612722565b91700100000000000000b17217f7d1cf79e9490260801c91612714565b9170010000000000000162e42fefa39ef44d910260801c91612705565b91700100000000000002c5c85fdf473dea871f0260801c916126f6565b917001000000000000058b90bfbe8e7bdcbe2e0260801c916126e7565b9170010000000000000b17217f7d1cf7d83c1a0260801c916126d8565b917001000000000000162e42fefa39f02b772c0260801c916126c9565b9170010000000000002c5c85fdf473e242ea380260801c916126ba565b91700100000000000058b90bfbe8e7cc35c3f00260801c916126ab565b917001000000000000b17217f7d1cfb72b45e10260801c9161269c565b91700100000000000162e42fefa39fe95583c20260801c9161268c565b917001000000000002c5c85fdf4741bea6e77e0260801c9161267c565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c9161266c565b91700100000000000b17217f7d1d351a389d400260801c9161265c565b9170010000000000162e42fefa3ae53369388c0260801c9161264c565b91700100000000002c5c85fdf477b662b269450260801c9161263c565b917001000000000058b90bfbe8f71cb4e4b33d0260801c9161262c565b9170010000000000b17217f7d20cf927c8e94c0260801c9161261c565b917001000000000162e42fefa494f1478fde050260801c9161260b565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c916125fa565b91700100000000058b90bfbe9ddbac5e109cce0260801c916125e9565b917001000000000b17217f7d5a7716bba4a9ae0260801c916125d8565b91700100000000162e42fefb2fed257559bdaa0260801c916125c7565b917001000000002c5c85fdf84bd62ae30a74cc0260801c916125b6565b9170010000000058b90bfbf8479bd5a81b51ad0260801c916125a5565b91700100000000b17217f80f4ef5aadda455540260801c91612594565b9170010000000162e42ff0999ce3541b9fffcf0260801c91612582565b91700100000002c5c85fe31f35a6a30da1be500260801c91612570565b917001000000058b90bfcdee5acd3c1cedc8230260801c9161255e565b9170010000000b17217fba9c739aa5819f44f90260801c9161254c565b917001000000162e42fff037df38aa2b219f060260801c9161253a565b9170010000002c5c8601cc6b9e94213c72737a0260801c91612528565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91612516565b917001000000b1721835514b86e6d96efd1bfe0260801c91612504565b91700100000162e430e5a18f6119e3c02282a50260801c916124f1565b917001000002c5c863b73f016468f6bac5ca2b0260801c916124de565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c916124cb565b91700100000b1721bcfc99d9f890ea069117630260801c916124b8565b9170010000162e43f4f831060e02d839a9d16d0260801c916124a5565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c91612492565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c9161247f565b9170010000b17255775c040618bf4a4ade83fc0260801c9161246c565b917001000162e525ee054754457d59952920260260801c91612458565b9170010002c5cc37da9491d0985c348c68e7b30260801c91612444565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91612430565b917001000b175effdc76ba38e31671ca9397250260801c9161241c565b91700100162f3904051fa128bca9c55c31e5df0260801c91612408565b917001002c605e2e8cec506d21bfc89a23a00f0260801c916123f4565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c916123e0565b91700100b1afa5abcbed6129ab13ec11dc95430260801c916123cc565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c916123b7565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c916123a2565b917001059b0d31585743ae7c548eb68ca417fd0260801c9161238d565b9170010b5586cf9890f6298b92b71842a983630260801c91612378565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c91612363565b917001306fe0a31b7152de8d5a46305c85edec0260801c9161234e565b6fb504f333f9de6484597d89b3754abe9f925061233956fea26469706673582212205351ab298f7c07f41f00d9aca21964ab7c4b46e9a4db6af3c13a4f9780acee0e64736f6c634300081e003360808060405234601557610291908161001a8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c6323e30c8b14610025575f80fd5b346101c85760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101c85761005c610238565b5060243573ffffffffffffffffffffffffffffffffffffffff81168091036101c8576044359060843567ffffffffffffffff81116101c857366023820112156101c857806004013567ffffffffffffffff81116101c85781013660248201116101c857602090829003126101c857602401359073ffffffffffffffffffffffffffffffffffffffff82168092036101c857606435830180931161020b57835f60449260209583957f095ea7b3000000000000000000000000000000000000000000000000000000008552600485015260248401525af1801561020057610167575b60206040517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b60203d6020116101f9575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f820116820182811067ffffffffffffffff8211176101cc576020918391604052810103126101c85751801515811461013d575b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b503d610172565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101c85756fea2646970667358221220608a068f4b69c3529bce103fd01ee3145166316c5be04613db70ee2b847f122f64736f6c634300081e0033a2646970667358221220517020816ca77da4502d01cb3d6e7127527d8285460bf80643c0509c289e9fb864736f6c634300081e0033","sourceMap":"1337:10439:32:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;849:28:2;1337:10439:32;;;;;;;;;;;;;;;;;;;;;;;;;;;1705:8;1688:13;:25;1337:10439;;336:42:1;1740:19:32;;;;1337:10439;;2030:14:1;1740:19:32;;1337:10439;1740:19;1337:10439;1740:19;;336:42:1;1740:19:32;;;;;;;;1337:10439;2030:14:1;;;;2105:60:32;2030:14:1;;;;2105:60:32;2030:14:1;2192:42:32;2030:14:1;2175:60:32;2030:14:1;;;2175:60:32;2030:14:1;2262:42:32;2030:14:1;2245:60:32;2030:14:1;;;2245:60:32;2030:14:1;2332:42:32;2030:14:1;2315:60:32;2030:14:1;;;2315:60:32;2030:14:1;2403:42:32;2030:14:1;2385:61:32;2030:14:1;;;2385:61:32;2030:14:1;336:42;2456:31:32;;;;1337:10439;;;2456:31;2030:14:1;2456:31:32;;2030:14:1;;1337:10439:32;;2456:31;;1337:10439;;2030:14:1;;;;;;;;;;;;;;1337:10439:32;;2030:14:1;1337:10439:32;;;2030:14:1;;;;;2456:31:32;;;336:42:1;2456:31:32;;;;;;;;1337:10439;2030:14:1;1337:10439:32;2175:60;2030:14:1;1337:10439:32;336:42:1;2497:31:32;;;;1337:10439;;2497:31;2030:14:1;2497:31:32;;1337:10439;2497:31;;1337:10439;;2030:14:1;;;;;;;;;;;;;;1337:10439:32;;2030:14:1;1337:10439:32;;;2030:14:1;;;;;2497:31:32;;;336:42:1;2497:31:32;;;;;;;;1337:10439;2030:14:1;1337:10439:32;2245:60;2030:14:1;1337:10439:32;336:42:1;2538:31:32;;;;1337:10439;;2538:31;2030:14:1;2538:31:32;;1337:10439;2538:31;;1337:10439;;2030:14:1;;;;;;;;;;;;;;1337:10439:32;;2030:14:1;1337:10439:32;;;2030:14:1;;;;;2538:31:32;;;336:42:1;2538:31:32;;;;;;;;1337:10439;2030:14:1;1337:10439:32;2315:60;2030:14:1;1337:10439:32;336:42:1;2579:31:32;;;;1337:10439;;2579:31;2030:14:1;2579:31:32;;1337:10439;2579:31;;1337:10439;;2030:14:1;;;;;;;;;;;;;;1337:10439:32;;2030:14:1;1337:10439:32;;;2030:14:1;;;;;2579:31:32;;;336:42:1;2579:31:32;;;;;;;;1337:10439;2030:14:1;1337:10439:32;2385:61;2030:14:1;1337:10439:32;336:42:1;2620:33:32;;;;1337:10439;;2620:33;2030:14:1;2620:33:32;;1337:10439;2620:33;;1337:10439;;2030:14:1;;;;;;;;;;;;;;1337:10439:32;;2030:14:1;1337:10439:32;;;2030:14:1;;;;;2620:33:32;;;336:42:1;2620:33:32;;;;;;;;1337:10439;2030:14:1;1337:10439:32;2105:60;2030:14:1;;;1337:10439:32;8752:28;;;;;1337:10439;;2030:14:1;8752:28:32;;2723:10;1337:10439;8752:28;;1337:10439;2030:14:1;1337:10439:32;;;;;;;;;;;;;;;8752:28;;;;;;;;1337:10439;2030:14:1;1337:10439:32;2175:60;2030:14:1;1337:10439:32;8790:28;;;;;1337:10439;;2030:14:1;8790:28:32;;2723:10;1337:10439;8790:28;;1337:10439;2030:14:1;1337:10439:32;;;;;;;;;;;;;;;8790:28;;;;;;;;1337:10439;2030:14:1;1337:10439:32;2245:60;2030:14:1;1337:10439:32;8828:29;;;;;1337:10439;;2030:14:1;8828:29:32;;2723:10;1337:10439;8828:29;;1337:10439;2030:14:1;1337:10439:32;;;;;;;;;;;;;;;8828:29;;;;;;;;1337:10439;2030:14:1;1337:10439:32;2315:60;2030:14:1;1337:10439:32;8867:28;;;;;1337:10439;;;2030:14:1;1337:10439:32;;8867:28;;;;2030:14:1;8867:28:32;;2723:10;1337:10439;8867:28;;1337:10439;2030:14:1;;1337:10439:32;;;8867:28;;;;;;;;1337:10439;2030:14:1;1337:10439:32;2385:61;2030:14:1;1337:10439:32;8905:30;;;;;1337:10439;;2030:14:1;8905:30:32;;2723:10;1337:10439;8905:30;;1337:10439;2030:14:1;1337:10439:32;;;;;;;;;;;;;;;8905:30;;;;;;;;1337:10439;;;;;2785:27;;;;;;;;;;;;;;2030:14:1;2785:27:32;;;;;;1598:42;1337:10439;;2785:27;;;;;;;;;1337:10439;;2851:27;;;;;;;;2785;2851;;;;;2030:14:1;2851:27:32;;;;;;1598:42;1337:10439;;2851:27;;;;;;;;;1337:10439;;2917:23;;;;;;;;2785:27;2917:23;;;;;;;;;;;;;;;;;;;;1337:10439;;3003:35;;;;;;;;2785:27;3003:35;;;;;;;;;;;;;;;;;;;1337:10439;;3145:277;;;;;;;;;2785:27;3145:277;;;;;1337:10439;3145:277;;;2030:14:1;3145:277:32;;;;;;2723:10;1337:10439;;1598:42;2030:14:1;;;1337:10439:32;;2030:14:1;;1337:10439:32;2030:14:1;;1337:10439:32;;2030:14:1;;;;;1337:10439:32;;2030:14:1;;;;;1337:10439:32;;2030:14:1;;;;;1337:10439:32;1515:7;2030:14:1;;;1337:10439:32;1424:42;1337:10439;2030:14:1;;1337:10439:32;3145:277;;;;;;;;;1337:10439;;3444:16;;;;:::i;:::-;1337:10439;;2030:14:1;;;;1337:10439:32;2030:14:1;:::i;:::-;3608:1:32;2030:14:1;;;;;1337:10439:32;;;2030:14:1;;;;1337:10439:32;2105:60;2030:14:1;;;1337:10439:32;3620:24;;;:::i;:::-;2030:14:1;1337:10439:32;2315:60;2030:14:1;1337:10439:32;3654:24;;;:::i;:::-;2030:14:1;1337:10439:32;2385:61;2030:14:1;1337:10439:32;3688:25;;;:::i;:::-;2030:14:1;1337:10439:32;;2030:14:1;;;;;:::i;:::-;3608:1:32;2030:14:1;;1337:10439:32;;2030:14:1;;;;2735:9:32;3775:17;;;:::i;:::-;2030:14:1;8891:3:32;3802:17;;;:::i;:::-;2030:14:1;8852:4:32;3829:18;;;:::i;:::-;2030:14:1;1337:10439:32;;2030:14:1;;;;;:::i;:::-;3608:1:32;2030:14:1;;1337:10439:32;;2030:14:1;;;;3925:2:32;3911:16;;;:::i;:::-;2030:14:1;3951:3:32;3937:17;;;:::i;:::-;2030:14:1;3978:3:32;3964:17;;;:::i;:::-;2030:14:1;1337:10439:32;;2030:14:1;;;;:::i;:::-;3608:1:32;2030:14:1;;1337:10439:32;;2030:14:1;;;;;4044::32;;;:::i;:::-;2030::1;1515:7:32;4068:19;;;:::i;:::-;2030:14:1;4110:4:32;4097:17;;;:::i;:::-;2030:14:1;1337:10439:32;;2030:14:1;;;;;:::i;:::-;3608:1:32;2030:14:1;;1337:10439:32;;2030:14:1;;;;4299:9:32;;;:::i;:::-;2030:14:1;;4290:6:32;2030:14:1;;4290:6:32;2030:14:1;;;;;4290:31:32;4311:10;;;;:::i;:::-;2030:14:1;4290:31:32;;:::i;:::-;4269:52;;;:::i;:::-;2030:14:1;4361:9:32;;;:::i;:::-;2030:14:1;;4290:6:32;2030:14:1;;4290:6:32;2030:14:1;;;;;4373:10:32;4352:31;4423:9;4373:10;;;;:::i;4352:31::-;4331:52;;;:::i;:::-;2030:14:1;4423:9:32;:::i;:::-;2030:14:1;;;4290:6:32;2030:14:1;;4290:6:32;2030:14:1;;;;;4435:10:32;;4414:31;4435:10;;:::i;4414:31::-;4393:52;;;:::i;:::-;2030:14:1;;23379:22:0;23388:13;2030:14:1;;;;2315:60:32;2030:14:1;36424:13:41;-1:-1:-1;36424:13:41;;1337:10439:32;;;41100:19:41;36469:7;;41100:19;;;1337:10439:32;;;805:35:0;4536:19;;;:42;;;1337:10439:32;;;;2315:60;2030:14:1;41100:19:41;1337:10439:32;805:35:0;4084:19;;;:42;;;1337:10439:32;;;;2315:60;2030:14:1;-1:-1:-1;37312:21:41;;41100:19;;;1337:10439:32;37403:26:41;;;:::i;:::-;2315:60:32;2030:14:1;-1:-1:-1;37447:23:41;;;;:44;;1337:10439:32;41100:19:41;;;1337:10439:32;;;-1:-1:-1;14261:13:0;;41100:19:41;14286:25:0;;;14282:56;;1337:10439:32;14349:17:0;14355:11;3695:1:32;14349:17:0;;;14345:48;;1337:10439:32;14410:7:0;14404:13;;;14400:44;;1337:10439:32;2030:14:1;14455:11:0;;;14451:40;;1337:10439:32;2385:61;14502:10:0;;;14498:39;;1337:10439:32;;14548:9:0;;;14544:38;;1337:10439:32;14593:9:0;;14589:23;;1337:10439:32;;;;;;;14737:3:0;1337:10439:32;;14760:31:0;14773:18;14755:176;14793:7;-1:-1:-1;14793:7:0;;;;2030:14:1;15317:34:0;2030:14:1;;2315:60:32;2030:14:1;1337:10439:32;2030:14:1;;;805:35:0;2030:14:1;2315:60:32;2030:14:1;9170::0;1337:10439:32;;37600:16:41;1337:10439:32;-1:-1:-1;1337:10439:32;2315:60;2030:14:1;37600:16:41;:::i;:::-;2315:60:32;2030:14:1;-1:-1:-1;37634:13:41;;41100:19;;;7136:6:0;;1337:10439:32;;;;805:35:0;7206:19;;;:42;;;14755:176;1337:10439:32;;;2315:60;2030:14:1;37785:17:41;-1:-1:-1;37785:17:41;;41100:19;;;2030:14:1;;1337:10439:32;2030:14:1;1337:10439:32;;;;4708:341;;;;;2030:14:1;4708:341:32;;2030:14:1;1337:10439:32;4708:341;;2030:14:1;4535:2:32;2030:14:1;;;1337:10439:32;2030:14:1;1337:10439:32;;;2030:14:1;;;;;;3695:1:32;2030:14:1;;;1337:10439:32;2030:14:1;1337:10439:32;;;2030:14:1;;;;;;;;;;;:::i;:::-;;;;;;1337:10439:32;2030:14:1;;;;;;;;;:::i;:::-;;3545:5:32;2030:14:1;;;1337:10439:32;-1:-1:-1;2030:14:1;;;1337:10439:32;2723:10;2030:14:1;;;1337:10439:32;2723:10;2030:14:1;;;1337:10439:32;;2030:14:1;;;;;;;;;:::i;:::-;5009:15:32;2030:14:1;;;1337:10439:32;-1:-1:-1;2030:14:1;;;1337:10439:32;4708:341;;-1:-1:-1;4708:341:32;;;;;;;;-1:-1:-1;4708:341:32;;;14755:176:0;1337:10439:32;;;2030:14:1;;;;;:::i;:::-;3608:1:32;2030:14:1;;1337:10439:32;;2030:14:1;;;;1337:10439:32;2105:60;2030:14:1;;;1337:10439:32;5192:24;;;:::i;:::-;2030:14:1;1337:10439:32;2175:60;2030:14:1;1337:10439:32;5226:24;;;:::i;:::-;2030:14:1;1337:10439:32;2245:60;2030:14:1;1337:10439:32;5260:24;;;:::i;:::-;2030:14:1;1337:10439:32;;2030:14:1;;;;:::i;:::-;3608:1:32;2030:14:1;;1337:10439:32;;2030:14:1;;;;2735:9:32;5329:17;;;:::i;:::-;2030:14:1;2735:9:32;5356:17;;;:::i;:::-;2030:14:1;8852:4:32;5383:18;;;:::i;:::-;2030:14:1;1337:10439:32;;2030:14:1;;;;;:::i;:::-;3608:1:32;2030:14:1;;1337:10439:32;2030:14:1;;;;5560:9:32;;;:::i;:::-;2030:14:1;4290:6:32;2030:14:1;;;;;;4290:6:32;2030:14:1;;;;;;;5539:39:32;;;:::i;:::-;2030:14:1;5609:9:32;;;:::i;:::-;2030:14:1;;4290:6:32;2030:14:1;;;;;;4290:6:32;2030:14:1;;;;;;;5658:9:32;5588:39;;;;:::i;5658:9::-;2030:14:1;;4290:6:32;2030:14:1;;;;;;4290:6:32;2030:14:1;;;;;;;;;5637:39:32;1337:10439;5637:39;;;;:::i;:::-;2030:14:1;;23379:22:0;1337:10439:32;;5786:408;;;;;2030:14:1;5786:408:32;;2030:14:1;1337:10439:32;5786:408;;2030:14:1;2315:60:32;1337:10439;2030:14:1;;1337:10439:32;2030:14:1;;1337:10439:32;;2030:14:1;;;;;;1337:10439:32;;2030:14:1;;1337:10439:32;2030:14:1;;1337:10439:32;;2030:14:1;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;1337:10439:32;2030:14:1;;;;1337:10439:32;-1:-1:-1;2030:14:1;;;1337:10439:32;2723:10;2030:14:1;;;1337:10439:32;2723:10;2030:14:1;;;1337:10439:32;;2030:14:1;;;;;;;;;:::i;:::-;5009:15:32;2030:14:1;;;1337:10439:32;-1:-1:-1;2030:14:1;;;1337:10439:32;5786:408;;-1:-1:-1;5786:408:32;;;;;;;;;14755:176:0;2030:14:1;;1337:10439:32;;;2030:14:1;;;;;:::i;:::-;3695:1:32;2030:14:1;;;;;1337:10439:32;;2030:14:1;;;;1337:10439:32;2105:60;2030:14:1;;;1337:10439:32;6340:24;;;:::i;:::-;2030:14:1;1337:10439:32;2245:60;2030:14:1;1337:10439:32;6374:24;;;:::i;:::-;2030:14:1;1337:10439:32;;2030:14:1;;;;:::i;:::-;3695:1:32;2030:14:1;;1337:10439:32;;2030:14:1;;;;2735:9:32;6443:17;;;:::i;:::-;2030:14:1;8852:4:32;6470:18;;;:::i;:::-;2030:14:1;1337:10439:32;;2030:14:1;;;;;:::i;:::-;3695:1:32;2030:14:1;;1337:10439:32;2030:14:1;;;;6647:9:32;;;:::i;:::-;2030:14:1;;4290:6:32;2030:14:1;;;;;;4290:6:32;2030:14:1;;;;;;;6696:9:32;6626:39;;;;:::i;:::-;2030:14:1;6696:9:32;:::i;:::-;2030:14:1;4290:6:32;2030:14:1;;;;;;4290:6:32;2030:14:1;;;;;;;6675:39:32;;;:::i;:::-;2030:14:1;1337:10439:32;2030:14:1;-1:-1:-1;2030:14:1;;;1337:10439:32;;6824:387;;;;;2030:14:1;6824:387:32;;2030:14:1;1337:10439:32;6824:387;;2030:14:1;;;;;1337:10439:32;2030:14:1;1337:10439:32;;;2030:14:1;;;;;;;;;;1337:10439:32;2030:14:1;1337:10439:32;;;2030:14:1;;;;;;;;;;;:::i;:::-;;;;;;6284:1:32;2030:14:1;;;1337:10439:32;6284:1;2030:14:1;;;1337:10439:32;2030:14:1;;;;1337:10439:32;2723:10;2030:14:1;;;1337:10439:32;2723:10;2030:14:1;;;1337:10439:32;;2030:14:1;;;;;;;;;:::i;:::-;5009:15:32;2030:14:1;;;1337:10439:32;-1:-1:-1;2030:14:1;;;1337:10439:32;6824:387;;-1:-1:-1;6824:387:32;;;;;;;;;14755:176:0;1337:10439:32;;;7239:33;;;;;;;;2785:27;7239:33;;;;;1337:10439;7239:33;;;;;;1337:10439;;;2030:14:1;;;;1337:10439:32;7239:33;;;-1:-1:-1;7239:33:32;;;;;1337:10439;;;;;;;;9397:16;2030:14:1;9397:16:32;;-1:-1:-1;9397:16:32;1337:10439;9397:16;;;;;;;;;-1:-1:-1;9397:16:32;;;14755:176:0;2030:14:1;;;9470:13:32;;;;:::i;:::-;1337:10439;;9532:18;2030:14:1;9532:18:32;;2030:14:1;9532:18:32;1337:10439;9532:18;;;;;;;;;-1:-1:-1;9532:18:32;;;14755:176:0;2030:14:1;9495:56:32;1337:10439;;;2030:14:1;1337:10439:32;;2030:14:1;;;:::i;:::-;1337:10439:32;2030:14:1;;1337:10439:32;2030:14:1;1337:10439:32;;;9495:56;:::i;:::-;1337:10439;;2030:14:1;9751:46:32;;2723:10;1337:10439;9751:46;;1337:10439;2723:10;2030:14:1;1337:10439:32;;;9631:5;2030:14:1;1337:10439:32;;;-1:-1:-1;2030:14:1;1337:10439:32;;;2030:14:1;9751:46:32;2030:14:1;9751:46:32;-1:-1:-1;9751:46:32;;;;;;;-1:-1:-1;9751:46:32;;;14755:176:0;1337:10439:32;;9808:30;;-1:-1:-1;2030:14:1;1337:10439:32;;2030:14:1;:::i;:::-;1337:10439:32;2030:14:1;;1337:10439:32;2030:14:1;1337:10439:32;;;9808:30;:::i;:::-;1337:10439;;2030:14:1;9881:18:32;;2030:14:1;9881:18:32;1337:10439;9881:18;;;;;;;;-1:-1:-1;9881:18:32;;;14755:176:0;1337:10439:32;;9848:52;;-1:-1:-1;2030:14:1;1337:10439:32;;2030:14:1;:::i;:::-;2385:61:32;2030:14:1;;1337:10439:32;2030:14:1;1337:10439:32;;;9848:52;:::i;:::-;1337:10439;;2030:14:1;10015:53:32;;2723:10;1337:10439;10015:53;;1337:10439;2723:10;2030:14:1;1337:10439:32;;;6284:1;2030:14:1;1337:10439:32;;;-1:-1:-1;2030:14:1;1337:10439:32;;;-1:-1:-1;2030:14:1;1337:10439:32;;;-1:-1:-1;10015:53:32;2030:14:1;10015:53:32;;;;;;;;;;;14755:176:0;1337:10439:32;;;10264:23;;;;;;;2785:27;10264:23;;;;;;;;;;;;-1:-1:-1;10264:23:32;;;;;1337:10439;10412:9;;;:::i;:::-;1337:10439;;;;;10384:49;2030:14:1;10384:49:32;;;1337:10439;10384:49;;1337:10439;2030:14:1;1337:10439:32;;;10316:10;2030:14:1;1337:10439:32;;;2030:14:1;10384:49:32;2030:14:1;10384:49:32;;;;;;;;;-1:-1:-1;10384:49:32;;;14755:176:0;10507:9:32;1337:10439;10507:9;;;;:::i;:::-;1337:10439;;;;10489:63;;;;;;-1:-1:-1;1337:10439:32;2030:14:1;1337:10439:32;;;;;10489:63;;;;;2030:14:1;10489:63:32;;;1337:10439;10489:63;;1337:10439;2030:14:1;1337:10439:32;;;10489:63;;;;;;;;14755:176:0;1337:10439:32;;;;;2030:14:1;1337:10439:32;;10821:9;1337:10439;;10663:25;;;;;1337:10439;10663:25;;;;;;;:::i;:::-;10821:9;:::i;:::-;1337:10439;;;;10756:92;;;;;;;2030:14:1;10756:92:32;;1337:10439;10756:92;;1337:10439;2030:14:1;1337:10439:32;;;10316:10;2030:14:1;1337:10439:32;;;;2030:14:1;1337:10439:32;;;2030:14:1;1337:10439:32;;;;:::i;:::-;10756:92;;;;;;;;;;;14755:176:0;1337:10439:32;2030:14:1;1337:10439:32;;;;10963:56;;;;2030:14:1;10963:56:32;;2723:10;1337:10439;10963:56;;1337:10439;2723:10;2030:14:1;1337:10439:32;;;;2030:14:1;1337:10439:32;;;10930:11;2030:14:1;1337:10439:32;;;;2030:14:1;1337:10439:32;;;10963:56;;;;;;;;;14755:176:0;-1:-1:-1;2030:14:1;11135:5:32;;;:17;;;;;41100:19:41;;;;;;;;;11135:17:32;;;;;;;1337:10439;;11208:97;2030:14:1;11208:97:32;;2723:10;1337:10439;11208:97;;1337:10439;;2030:14:1;1337:10439:32;;;2723:10;2030:14:1;1337:10439:32;;;;2030:14:1;1337:10439:32;;;2030:14:1;1337:10439:32;;;11178:10;2030:14:1;1337:10439:32;;;;2030:14:1;1337:10439:32;;2030:14:1;1337:10439:32;2030:14:1;1337:10439:32;;;;2030:14:1;1337:10439:32;;;11208:97;;2030:14:1;11208:97:32;;;;;;;;;;;11135:17;11408:26;;;;;;;1337:10439;;2030:14:1;11408:26:32;;;;1337:10439;11408:26;;;;;;;;;;;;;;11135:17;-1:-1:-1;;11667:15:32;;;;1337:10439;2030:14:1;;11667:15:32;1337:10439;;;11692:75;;;;;2030:14:1;11692:75:32;;2723:10;1337:10439;11692:75;;1337:10439;2723:10;2030:14:1;1337:10439:32;;;11600:10;2030:14:1;1337:10439:32;;;;2030:14:1;1337:10439:32;;;;2030:14:1;1337:10439:32;;;;2030:14:1;1337:10439:32;;;11692:75;;;;;;;;;;;11667:15;7322:18;;336:42:1;7322:18:32;;;;1337:10439;;2030:14:1;7322:18:32;;;;1337:10439;7322:18;;336:42:1;7322:18:32;;;;;;;;;;;11667:15;1337:10439;;;;7402:29;2030:14:1;7402:29:32;;;1337:10439;7402:29;;1337:10439;7402:29;;2030:14:1;7402:29:32;336:42:1;7402:29:32;;;;;;;;;;;11667:15;1337:10439;;;7465:26;2030:14:1;7465:26:32;;;1337:10439;7465:26;;1337:10439;7465:26;;2030:14:1;7465:26:32;336:42:1;7465:26:32;;;;;;;;;;;11667:15;7501:32;336:42:1;7501:32:32;;;;1337:10439;2030:14:1;1337:10439:32;;;;7501:32;;;;;2030:14:1;7501:32:32;;1337:10439;7501:32;;2030:14:1;6284:1:32;2030:14:1;;;1337:10439:32;2030:14:1;;1337:10439:32;;2030:14:1;;;;;;;;;;;:::i;:::-;7501:32:32;;;336:42:1;7501:32:32;;;;;;;;;;;11667:15;7543:26;;336:42:1;7543:26:32;;;;2030:14:1;1337:10439:32;;;;;7543:26;;;;;2030:14:1;7543:26:32;;;1337:10439;7543:26;;2030:14:1;1337:10439:32;2030:14:1;;;1337:10439:32;2030:14:1;;1337:10439:32;;2030:14:1;;;;;;;;;;:::i;:::-;7543:26:32;;;336:42:1;7543:26:32;;;;;;;;11667:15;2030:14:1;1337:10439:32;2105:60;2030:14:1;;;1337:10439:32;;;7597:26;2030:14:1;7597:26:32;;1337:10439;7597:26;;1337:10439;7597:26;;2030:14:1;7597:26:32;336:42:1;7597:26:32;;;;;;;;;;;11667:15;7579:45;336:42:1;7579:45:32;;;;1337:10439;2030:14:1;1337:10439:32;;;7579:45;;;;2030:14:1;7579:45:32;;;1337:10439;7579:45;;2030:14:1;;;;;;;;1337:10439:32;;2030:14:1;1337:10439:32;;;2030:14:1;;;;;;1337:10439:32;2030:14:1;;;;;;;;;:::i;:::-;7579:45:32;;;336:42:1;7579:45:32;;;;;;;;11667:15;2030:14:1;1337:10439:32;2175:60;2030:14:1;1337:10439:32;;;7652:26;2030:14:1;7652:26:32;;1337:10439;7652:26;;1337:10439;7652:26;;2030:14:1;7652:26:32;336:42:1;7652:26:32;;;;;;;;;;;11667:15;7634:45;336:42:1;7634:45:32;;;;1337:10439;2030:14:1;1337:10439:32;;;7634:45;;;;2030:14:1;7634:45:32;;;1337:10439;7634:45;;2030:14:1;;;;;;;;1337:10439:32;;2030:14:1;1337:10439:32;;;2030:14:1;;;;;7634:45:32;;;336:42:1;7634:45:32;;;;;;;;11667:15;2030:14:1;1337:10439:32;2245:60;2030:14:1;1337:10439:32;;;7707:26;2030:14:1;7707:26:32;;1337:10439;7707:26;;1337:10439;7707:26;;2030:14:1;7707:26:32;336:42:1;7707:26:32;;;;;;;;;;;11667:15;7689:45;336:42:1;7689:45:32;;;;1337:10439;2030:14:1;1337:10439:32;;;7689:45;;;;2030:14:1;7689:45:32;;;1337:10439;7689:45;;2030:14:1;;;;;;;;1337:10439:32;;2030:14:1;1337:10439:32;;;2030:14:1;;;;;7689:45:32;;;336:42:1;7689:45:32;;;;;;;;11667:15;2030:14:1;1337:10439:32;2315:60;2030:14:1;1337:10439:32;;;7762:26;2030:14:1;7762:26:32;;1337:10439;7762:26;;1337:10439;7762:26;;2030:14:1;7762:26:32;336:42:1;7762:26:32;;;;;;;;;;;11667:15;7744:45;336:42:1;7744:45:32;;;;1337:10439;2030:14:1;1337:10439:32;;;7744:45;;;;2030:14:1;7744:45:32;;;1337:10439;7744:45;;2030:14:1;;;;;;;;1337:10439:32;;2030:14:1;1337:10439:32;;;2030:14:1;;;;;7744:45:32;;;336:42:1;7744:45:32;;;;;;;;11667:15;2030:14:1;1337:10439:32;2385:61;2030:14:1;1337:10439:32;;;7818:27;2030:14:1;7818:27:32;;1337:10439;7818:27;;1337:10439;7818:27;;2030:14:1;7818:27:32;336:42:1;7818:27:32;;;;;;;;;;;11667:15;7799:47;336:42:1;7799:47:32;;;;1337:10439;2030:14:1;1337:10439:32;;;7799:47;;;;2030:14:1;7799:47:32;;;1337:10439;7799:47;;2030:14:1;;;;;;;;1337:10439:32;;2030:14:1;1337:10439:32;;;2030:14:1;;;;;7799:47:32;;;336:42:1;7799:47:32;;;;;;;;11667:15;7857:8;;8486:46;7857:8;7994:49;8112;7857:8;7939:45;8171:61;7857:8;;;7881:48;8053:49;7857:8;;;:::i;:::-;1337:10439;;2030:14:1;1337:10439:32;;2030:14:1;:::i;:::-;2245:60:32;2030:14:1;;;;;;;7881:48:32;:::i;:::-;1337:10439;;2030:14:1;;;;:::i;:::-;2245:60:32;2030:14:1;;;;;;;7939:45:32;:::i;:::-;1337:10439;;2030:14:1;;;;:::i;:::-;2245:60:32;2030:14:1;;;;;;;7994:49:32;:::i;:::-;1337:10439;;2030:14:1;;;;:::i;:::-;2245:60:32;2030:14:1;;;;;;;8053:49:32;:::i;:::-;1337:10439;;2030:14:1;;;;:::i;:::-;2245:60:32;2030:14:1;;;;;;;8112:49:32;:::i;:::-;1337:10439;;2030:14:1;;;;:::i;:::-;2245:60:32;2030:14:1;;;;;;;8171:61:32;:::i;:::-;8242:8;;:::i;:::-;8266:45;1337:10439;2105:60;2030:14:1;;;1337:10439:32;;;2030:14:1;;;;:::i;:::-;2245:60:32;2030:14:1;;;;;;;8266:45:32;:::i;:::-;8321;1337:10439;2175:60;2030:14:1;1337:10439:32;;;2030:14:1;;;;:::i;:::-;2245:60:32;2030:14:1;;;;;;;8321:45:32;:::i;:::-;8376;1337:10439;2245:60;2030:14:1;1337:10439:32;;;2030:14:1;;;;:::i;:::-;2245:60:32;2030:14:1;;;;;;;8376:45:32;:::i;:::-;8431;1337:10439;2315:60;2030:14:1;1337:10439:32;;;2030:14:1;;;;:::i;:::-;2245:60:32;2030:14:1;;;;;;;8431:45:32;:::i;:::-;1337:10439;2385:61;2030:14:1;1337:10439:32;;2030:14:1;1337:10439:32;;2030:14:1;;;:::i;:::-;2245:60:32;2030:14:1;;;;;;;8486:46:32;:::i;:::-;1337:10439;;7799:47;;;;;;;;;:::i;:::-;1337:10439;;7799:47;;;;;;;;1337:10439;;;;7799:47;1337:10439;;2030:14:1;1337:10439:32;;2030:14:1;;;;7799:47:32;1337:10439;;;7818:27;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;7744:45;;;;;:::i;:::-;1337:10439;;7744:45;;;;7762:26;;;;;;;;;;;;;:::i;:::-;;;;7689:45;;;;;:::i;:::-;1337:10439;;7689:45;;;;7707:26;;;;;;;;;;;;;:::i;:::-;;;;7634:45;;;;;:::i;:::-;1337:10439;;7634:45;;;;7652:26;;;;;;;;;;;;;:::i;:::-;;;;7579:45;;;;;:::i;:::-;1337:10439;;7579:45;;;;7597:26;;;;;;;;;;;;;:::i;:::-;;;;7543;;;;;:::i;:::-;1337:10439;;7543:26;;;;;1337:10439;;;7501:32;;;;;:::i;:::-;1337:10439;;7501:32;;;;;1337:10439;;2030:14:1;1337:10439:32;;2030:14:1;;;;7501:32:32;1337:10439;;;7465:26;;;;;;;;;;;;;;:::i;:::-;;;;;7402:29;;;;;;;;;;;;;;:::i;:::-;;;;;;1337:10439;;2030:14:1;1337:10439:32;;2030:14:1;;;;7322:18:32;;;;;:::i;:::-;1337:10439;;7322:18;;;;11692:75;;;;;;;;;;;;:::i;:::-;;;1337:10439;;;;11692:75;;;;;;;;;11667:15;;1337:10439;2030:14:1;11667:15:32;;;11408:26;;;;;:::i;:::-;1337:10439;;11408:26;;;;;1337:10439;;2030:14:1;1337:10439:32;;2030:14:1;;;;11208:97:32;;;;;;-1:-1:-1;11208:97:32;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1337:10439;;2030:14:1;1337:10439:32;;2030:14:1;;;;41100:19:41;2030:14:1;;;;;;1337:10439:32;2030:14:1;;11135:17:32;;;;;;;;;;10963:56;;;;;;;;;;;;;:::i;:::-;;;;;;1337:10439;;2030:14:1;1337:10439:32;;2030:14:1;;;;10756:92:32;;;2030:14:1;10756:92:32;2030:14:1;10756:92:32;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;10489:63;;;;;-1:-1:-1;10489:63:32;;;:::i;:::-;-1:-1:-1;10489:63:32;;;;;1337:10439;;2030:14:1;-1:-1:-1;2030:14:1;;;;;10489:63:32;-1:-1:-1;1337:10439:32;;10384:49;;;;2030:14:1;10384:49:32;;2030:14:1;10384:49:32;;;;;;1337:10439;10384:49;;;:::i;:::-;;;1337:10439;;;;2030:14:1;10384:49:32;;;;;;;-1:-1:-1;10384:49:32;;10264:23;1337:10439;;2030:14:1;-1:-1:-1;2030:14:1;;;;;10264:23:32;2030:14:1;-1:-1:-1;2030:14:1;;1337:10439:32;2030:14:1;;-1:-1:-1;2030:14:1;10015:53:32;;;-1:-1:-1;10015:53:32;;;;;;:::i;:::-;;;1337:10439;2030:14:1;1337:10439:32;;;;;;;;;2785:27;1337:10439;;;;;;;2030:14:1;1337:10439:32;;;;;;;;;;2030:14:1;1337:10439:32;;;:::i;:::-;;;2030:14:1;;;:::i;:::-;1337:10439:32;;;2030:14:1;1337:10439:32;;;;2030:14:1;1337:10439:32;;;;;;;;;2030:14:1;1337:10439:32;;;;;;;;10015:53;;;;;1337:10439;2030:14:1;;1337:10439:32;;2030:14:1;1337:10439:32;;;;;;;10015:53;1337:10439;;2030:14:1;-1:-1:-1;2030:14:1;;;;;9881:18:32;;2030:14:1;9881:18:32;;2030:14:1;9881:18:32;;;;;;1337:10439;9881:18;;;:::i;:::-;;;1337:10439;;;;9848:52;2030:14:1;;9881:18:32;;;;;-1:-1:-1;9881:18:32;;9751:46;;2030:14:1;9751:46:32;;2030:14:1;9751:46:32;;;;;;1337:10439;9751:46;;;:::i;:::-;;;1337:10439;;;;9808:30;2030:14:1;;9751:46:32;;;;;-1:-1:-1;9751:46:32;;9532:18;;;;2030:14:1;9532:18:32;;2030:14:1;9532:18:32;;;;;;1337:10439;9532:18;;;:::i;:::-;;;1337:10439;;;;2030:14:1;9532:18:32;;;;;;;-1:-1:-1;9532:18:32;;;1337:10439;;2030:14:1;-1:-1:-1;2030:14:1;;;;;9397:16:32;;;;;;-1:-1:-1;9397:16:32;;;;;;:::i;:::-;;;1337:10439;2030:14:1;1337:10439:32;;;;;;;;;2785:27;1337:10439;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2030:14:1;1337:10439:32;;2030:14:1;;;:::i;:::-;1337:10439:32;;;2030:14:1;1337:10439:32;;;;2030:14:1;1337:10439:32;;;;;;;;;2030:14:1;1337:10439:32;;;;;;;;9397:16;;;;;;;1337:10439;;;;;;2030:14:1;;;;1337:10439:32;;2030:14:1;1337:10439:32;;;;;;;6824:387;;;1337:10439;6824:387;1337:10439;6824:387;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;2030:14:1;;-1:-1:-1;2030:14:1;;1337:10439:32;2030:14:1;;-1:-1:-1;2030:14:1;5786:408:32;;;1337:10439;5786:408;1337:10439;5786:408;;;;;;;:::i;:::-;;;;4708:341;;;;;1337:10439;4708:341;1337:10439;4708:341;;;;;;;:::i;:::-;;;;;;41100:19:41;;1337:10439:32;;41100:19:41;;;2030:14:1;1337:10439:32;41100:19:41;;;2245:60:32;2030:14:1;41100:19:41;;1337:10439:32;41100:19:41;2030:14:1;1337:10439:32;;41100:19:41;;7206:42:0;7229:19;958:34;7229:19;;;7206:42;;41100:19:41;;1337:10439:32;;41100:19:41;;;2030:14:1;1337:10439:32;41100:19:41;;;4535:2:32;2030:14:1;41100:19:41;;1337:10439:32;41100:19:41;2030:14:1;1337:10439:32;;41100:19:41;;14802:9:0;1337:10439:32;;;;;;;;14737:3:0;1337:10439:32;;;;;;14802:9:0;2030:14:1;1337:10439:32;14760:31:0;;;;14589:23;1337:10439:32;2030:14:1;1337:10439:32;14589:23:0;;;14544:38;1337:10439:32;;;;;;14544:38:0;;14498:39;1337:10439:32;;;;;;14498:39:0;;14451:40;14477:1;1337:10439:32;;;;;14451:40:0;;14400:44;2385:61:32;1337:10439;;;;;14400:44:0;;14345:48;2030:14:1;1337:10439:32;;;;;14345:48:0;;14282:56;-1:-1:-1;1337:10439:32;;-1:-1:-1;1337:10439:32;;;14282:56:0;;41100:19:41;;1337:10439:32;;41100:19:41;;;2030:14:1;1337:10439:32;41100:19:41;;;;2030:14:1;41100:19:41;;1337:10439:32;41100:19:41;2030:14:1;1337:10439:32;;41100:19:41;;37447:44;37474:17;41100:19;37474:17;;37447:44;;41100:19;;1337:10439:32;;41100:19:41;;;2030:14:1;1337:10439:32;41100:19:41;;;;2030:14:1;41100:19:41;;1337:10439:32;41100:19:41;2030:14:1;1337:10439:32;;41100:19:41;;4084:42:0;4107:19;958:34;4107:19;;;4084:42;;4536;4559:19;958:34;4559:19;;;4536:42;;41100:19:41;;1337:10439:32;;41100:19:41;;;2030:14:1;1337:10439:32;41100:19:41;;;4535:2:32;2030:14:1;41100:19:41;;1337:10439:32;41100:19:41;2030:14:1;1337:10439:32;;41100:19:41;;1337:10439:32;;;;;;;2030:14:1;1337:10439:32;;;;;2030:14:1;1337:10439:32;;;;2030:14:1;1337:10439:32;;;;2030:14:1;;;;;;;1337:10439:32;2030:14:1;;;;;;;;;1337:10439:32;2030:14:1;;;;;;;;;1337:10439:32;2030:14:1;;3145:277:32;1337:10439;;2030:14:1;1337:10439:32;;2030:14:1;;;;3145:277:32;2030:14:1;;;;;;1337:10439:32;2030:14:1;;3003:35:32;1337:10439;;2030:14:1;1337:10439:32;;2030:14:1;;;;3003:35:32;2030:14:1;;;;;;1337:10439:32;2030:14:1;;2917:23:32;1337:10439;;2030:14:1;1337:10439:32;;2030:14:1;;;;2917:23:32;2030:14:1;;;;;;1337:10439:32;2030:14:1;;2851:27:32;1337:10439;;2030:14:1;1337:10439:32;;2030:14:1;;;;2851:27:32;2030:14:1;;;;;;1337:10439:32;2030:14:1;;2785:27:32;1337:10439;;;2030:14:1;;;;;;;;2785:27:32;2030:14:1;;;;;;1337:10439:32;2030:14:1;;8905:30:32;;;;;:::i;:::-;1337:10439;;8905:30;;;;;1337:10439;;8867:28;;;;;:::i;:::-;1337:10439;;8867:28;;;;8828:29;;;;;:::i;:::-;1337:10439;;8828:29;;;;8790:28;;;;;:::i;:::-;1337:10439;;8790:28;;;;8752;;;;;:::i;:::-;1337:10439;;8752:28;;;;2620:33;;;;;:::i;:::-;1337:10439;;2620:33;;;;2579:31;;;;;:::i;:::-;1337:10439;;2579:31;;;;2538;;;;;:::i;:::-;1337:10439;;2538:31;;;;2497;;;;;:::i;:::-;1337:10439;;2497:31;;;;2456;;;;;:::i;:::-;1337:10439;;2456:31;;;;1740:19;;;;1337:10439;1740:19;;:::i;:::-;1337:10439;1740:19;;;1337:10439;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1598:42;1337:10439;;;;;;;;;;;;;;;;;1424:42;1337:10439;;;;;;;;;;;;;;;1515:7;1337:10439;;;;2030:14:1;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;1337:10439:32;2030:14:1;;;;;1337:10439:32;2030:14:1;;;;3661:1:32;2030:14:1;;;;;;;:::o;:::-;;;3695:1:32;2030:14:1;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;1337:10439:32;;;2030:14:1;;;;;;;;;;:::o;:::-;;1337:10439:32;2030:14:1;;;1337:10439:32;;;;;2030:14:1;;;-1:-1:-1;2030:14:1;;;;;;;;;;:::o;:::-;;;1337:10439:32;;;;;2030:14:1;;;;;;;;;;;;;;1337:10439:32;2030:14:1;;;1337:10439:32;;;;;2030:14:1;;;-1:-1:-1;2030:14:1;;;;;;;;;;:::o;:::-;;;1337:10439:32;;;2030:14:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1337:10439:32;;;2030:14:1;;;;;;;;1337:10439:32;2030:14:1;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;2030:14:1;;;;;;;;;;;;;;:::o;:::-;;;;1337:10439:32;2030:14:1;;;;1337:10439:32;;;;;;2030:14:1;1337:10439:32;;;2030:14:1;-1:-1:-1;2030:14:1;;;;;;;;;;;:::o;1337:10439:32:-;;;;;;;;;;;;;;;;;;:::o;8948:304::-;-1:-1:-1;8948:304:32;1337:10439;;9004:40;2030:14:1;9004:4:32;2030:14:1;;;1337:10439:32;;;;9004:40;;;;;2030:14:1;9004:40:32;;1337:10439;9004:40;;;;;1337:10439;9026:17;1337:10439;;;;9004:40;;;;;;;-1:-1:-1;9004:40:32;;;8948:304;2030:14:1;1337:10439:32;;9054:4;2030:14:1;1337:10439:32;9004:40;1337:10439;;9054:40;;;;2030:14:1;9054:40:32;;;9004;9054;;1337:10439;9026:17;1337:10439;;;;9054:40;;;;;;;-1:-1:-1;9054:40:32;;;8948:304;2030:14:1;1337:10439:32;;9104:4;2030:14:1;1337:10439:32;9004:40;1337:10439;;9104:40;;;;2030:14:1;9104:40:32;;;9004;9104;;1337:10439;9026:17;1337:10439;;;;9104:40;;;;;;;-1:-1:-1;9104:40:32;;;8948:304;2030:14:1;1337:10439:32;;9154:4;2030:14:1;1337:10439:32;9004:40;1337:10439;;9154:40;;;;2030:14:1;9154:40:32;;;9004;9154;;1337:10439;9026:17;1337:10439;;;;9154:40;;;;;;;-1:-1:-1;9154:40:32;1337:10439;9154:40;;;8948:304;2030:14:1;9004:40:32;1337:10439;9204:5;2030:14:1;1337:10439:32;;;;9204:41;;;;;2030:14:1;9204:41:32;;9004:40;9204:41;;1337:10439;9026:17;1337:10439;;;;9204:41;;;;;;;;8948:304;:::o;9204:41::-;;;1337:10439;9204:41;1337:10439;9204:41;;;;;;;:::i;:::-;;8948:304::o;9154:40::-;;;;;;;;;;;;;:::i;:::-;;;9104;;;1337:10439;9104:40;1337:10439;9104:40;;;;;;;:::i;:::-;;;9054;;;1337:10439;9054:40;1337:10439;9054:40;;;;;;;:::i;:::-;;;9004;;;1337:10439;9004:40;1337:10439;9004:40;;;;;;;:::i;:::-;;;1337:10439;;;;;;;;;2030:14:1;;1337:10439:32;;;;;2030:14:1;1337:10439:32;;2030:14:1;1337:10439:32;:::o;986:95:12:-;358:279;1337:10439:32;;;1041:32:12;;;;;;;;;;;;:::i;:::-;358:279;;;;;131:42;358:279;;;986:95::o;7740:145::-;1337:10439:32;7823:54:12;358:279;7740:145;;;;1337:10439:32;;;7823:54:12;;;;;;;;1337:10439:32;7823:54:12;;;1337:10439:32;;;;;;:::i;:::-;;;;;;;7823:54:12;;;;;;;;:::i;7038:252:0:-;;2030:14:1;;7136:6:0;;;1337:10439:32;;7182:2:0;1337:10439:32;;;;805:35:0;7206:19;;;:42;;;7038:252;1337:10439:32;;;2030:14:1;;7038:252:0;:::o;7206:42::-;7229:19;958:34;7229:19;;;7206:42;;7139:145:12;1337:10439:32;7222:54:12;358:279;7139:145;;;;1337:10439:32;;7222:54:12;;;;;;;;1337:10439:32;7222:54:12;;;1337:10439:32;;;;;;:::i;:::-;;;;;;7222:54:12;;;;;;;;:::i","linkReferences":{}},"methodIdentifiers":{"IS_SCRIPT()":"f8ccbf47","PROTOCOL_FEE_ADDRESS()":"50615d53","PROTOCOL_FEE_PPM()":"41a20a93","WETH()":"ad5c4648","run()":"c0406226"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"IS_SCRIPT\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PROTOCOL_FEE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PROTOCOL_FEE_PPM\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"contract NativeWrapper\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"run\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"script/DeploySepolia.sol\":\"DeploySepolia\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/abdk-libraries-solidity/ABDKMath64x64.sol\":{\"keccak256\":\"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97\",\"license\":\"BSD-4-Clause\",\"urls\":[\"bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7\",\"dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4b2a5a85e045dcf6a082700c7252e43854c2eed88f860aaa18ec1e85218ae2bf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://98d060ed5be569a92d908fc358149039dc8f833d61973aa1b9d1d8235676bf6d\",\"dweb:/ipfs/QmaWQpn5dJmbMS5skwmPPMeUWZG35BLkignPpcA3zyagEs\"]},\"lib/forge-std/src/Script.sol\":{\"keccak256\":\"0xc942e27c7baae499beb01afbbae99f24d42af9a6e4aae675bc6901b704aa8e9b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0456008adf68947247f358b62863af4a8e349549d2260f2ff9569ff0e3cf5c98\",\"dweb:/ipfs/QmdviSUj2i7o3TPN5vd2xocqGMFVqjUzaiJTZRYyPxyHPx\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0xb2cbca1a6ffa19926c31bad47393a070305c809fe5d88c52214d5c51ce0733c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cf20975cfd9733910305fc8e746c7631c2ab210289aab036cec32f3c530335c7\",\"dweb:/ipfs/QmYYvVzvAN1uCt8XtDmWo5x2inSVJBYajFexe92rVWEuMf\"]},\"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/StdJson.sol\":{\"keccak256\":\"0xbc0132abe1c2accc2867c0f03667afffdf92f3e95a581bb03c9557eaa38ea500\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb6fab37dc73c219cfbb7b4f4998bcf7677ca5397a867e850f40232192073974\",\"dweb:/ipfs/QmUHsbVdp9SKmgek7ZfPcLTKrpZFXpqaqt4sVejzxGEQL3\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xcb876f5421e5aae334f9a6c5d549131c18ad347f1035d2a1e920f2623f346c85\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://28076e06b01be4095f860fa9b142c284bac34c0813948e0a52d11acc15502db6\",\"dweb:/ipfs/QmVR6XFTmBatJAVvYgkZxN21R5zvYTU4ard4Aow8TmXjy9\"]},\"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/StdUtils.sol\":{\"keccak256\":\"0xb2469a902a326074034c4f7081d868113db0edbb7cf48b86528af2d6b07295f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1430a81c4978be875e2a3b31a8bfa4e1438fecd327f23771b690d64db63c020a\",\"dweb:/ipfs/QmW6aB2u1LNaRgGQFwjV7L7UbxsRg63iJ7AuujPouEa4cT\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x9b4df44a3b748593a58be7ba64fa5f420e5dcd7927bfa5173186228bfe61782f\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://b89fcf92ee1d14237cfb0dd949341053389d5b6a043ad77349b65bef80b1d59f\",\"dweb:/ipfs/QmPkia3aNHrqvE4tqxG2AyrdB4W91jTAvcbchgs2wAo6NL\"]},\"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\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol\":{\"keccak256\":\"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd\",\"dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd\",\"dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x3ce148ed98f31ec9c463b32ee66f96194f0de89e41d7da3ef9e084f0effce06e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3939cd40f5bf5ea382e5af5c5011c1b998bb88b4872774aa0de0071cb0c0d49e\",\"dweb:/ipfs/QmWtEDNECUaeYYAQoP6epe4TGYphAbbfG7aEmKVhLHq451\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168\",\"dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd274645d15bb7e4fcb9c833e401b2c5837404f90057f11a49118f25e0af7c76f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d38e0b997bb7aebae26d190b03d0991feb0d204c45f945e60014e1ca9175de69\",\"dweb:/ipfs/QmWzsUHHAZcjMyF8uMDEtNpMTkYZdQrfvdKPobXvwVHKo6\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x50e81a8b089e3f382b6c915aa0166773de64ea4756e8f9479d9943a5f956ddf5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bfeb96a150537222e2191c03887127499a4f21dfb5f9a7211da4d81749b52848\",\"dweb:/ipfs/QmYR75ECbsBuxSiXmGvGfNKJRLoK5MdLUZL1bd8SixzxL4\"]},\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161\",\"dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"script/DeploySepolia.sol\":{\"keccak256\":\"0x5845375b60af6f6b8a6c56e8486b3ff6703b58ab1db2e46ec39726fc66b64e99\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f56b0c18ddb51644f2d49043802c0eb86916fccd4490547d535efd430c435286\",\"dweb:/ipfs/Qma5FhhHeLF6CqBmtL4Ekj6ZhtGkqdQNkpHY4qmcDt7AcG\"]},\"src/ERC20External.sol\":{\"keccak256\":\"0x421f511bb3aa7258fb7121aa66b9a2e8e0b7a07b7e51c800c714f7acbfd599d3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b3fde56a83eae12a31eb4875d8952a99d18591fe0f18b6a12392c8f48f76af46\",\"dweb:/ipfs/QmeApbmGv6Z2b1JynvBxaAK1j1eWhGYpeNEP56V8XXvpcz\"]},\"src/ERC20Internal.sol\":{\"keccak256\":\"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f\",\"dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk\"]},\"src/Funding.sol\":{\"keccak256\":\"0x1d505b256d221cec151157083f8441193bbf7859d13873353429a7ca5342381d\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6871ab97d81ddffc56845142601408e974b7b0c619a2107aacd6b17eafb3330c\",\"dweb:/ipfs/QmU5EKjGN2vDPgXhSsr4qvesq2T5eR5Ybeg25bHrcJyP2y\"]},\"src/IOwnable.sol\":{\"keccak256\":\"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1\",\"dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9\"]},\"src/IPartyInfo.sol\":{\"keccak256\":\"0x80e88e8c29cdf12426f16b4bf2a088397fcc31c2664564f7f26117dc85009af7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b91392cbda8adfccf9bea2e584616c4b3359d7381a18f5f3e5c9c71618786051\",\"dweb:/ipfs/QmWtWb1gVs2pzFkjwDj4mcdoCnQLPbwq4Qxbh38VEdWwAW\"]},\"src/IPartyPlanner.sol\":{\"keccak256\":\"0x8f27d564f2c1fde267aa1fec970402e2da5b731ac97f4d5fe24f6ebab1fd03ff\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://399d21923fdbb6c3012f086c6de62bd4ea6648cf71a46e59beaad9a74d854025\",\"dweb:/ipfs/QmcS4qRFjUJ4JyeTnjDSnTzprSnrd8TTxF2gfZf2JBs1c6\"]},\"src/IPartyPool.sol\":{\"keccak256\":\"0x74b9531bdf2200f256cac6c2cd54c0efad7c1bdfbe694ee910df75448ffe93f4\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://aadd161d7e197b48e6be4198b0f4f81a10016b9904d024e0a361bf2d7f941475\",\"dweb:/ipfs/QmYuGyPZCigmt8va11oAHXPTpHFyF3d7ARDNacyr2jsDfa\"]},\"src/LMSRStabilized.sol\":{\"keccak256\":\"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3\",\"dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB\"]},\"src/LMSRStabilizedBalancedPair.sol\":{\"keccak256\":\"0x782f3baf92f74152c0b93b95199abbb3a36c75c921454260c8b0237f91d7c59d\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://04d463c4fdcb6c8e2ebf9aed649ff21cca759ba73a4c93659e30c7df25e26c81\",\"dweb:/ipfs/QmUxmWytiw5VYJRUrFbSGm1oWmDPQ4q23pnkmK1q9P4apN\"]},\"src/NativeWrapper.sol\":{\"keccak256\":\"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238\",\"dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB\"]},\"src/OwnableExternal.sol\":{\"keccak256\":\"0x0a0199368ad20a31e7169b3e56449bf022c9d680e0d487c118608a7f14cb7efb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3348a063649e01acf9c6aa6b7ce2ecf62ace8c6f1467477de7d605996f08ec64\",\"dweb:/ipfs/QmSoxb35FFsNCgXgWn91CupvjpGmyM31wcfxAVpVFFPecX\"]},\"src/OwnableInternal.sol\":{\"keccak256\":\"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca\",\"dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE\"]},\"src/PartyInfo.sol\":{\"keccak256\":\"0x009de3c5bd0542df3f74b89be5c5dd09dd3bb441b2028df99db3e6b7e27d862d\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://65b1e0622dd99b3af332a93a42463dad10f4a3db10a313c8e6bcb341eaf8e930\",\"dweb:/ipfs/QmUfeDd1jUPdxReFYRA8fUWCmfLvXNZf8mnNnBt1ohWJzM\"]},\"src/PartyPlanner.sol\":{\"keccak256\":\"0xdd92d3d269279e372680583a5d6e1a7342715c9b6708777f17635c4e2391620f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://cd9ef0482a8efd86a49eef567defe412e72e522d85de0d8ded89eac6b8f6463a\",\"dweb:/ipfs/QmVpXgadYC3NbQ4DfWFg4yRKZEvJ42bzFvC2MLu6JAjDoS\"]},\"src/PartyPool.sol\":{\"keccak256\":\"0xaf921e5a5c32ee53fc1991d20fe030ec0a9572d0a8d112e717476ee4af0b8ab4\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b4bc13e889ec6fb214ac3538203328abede9e316bf617a7f7593b3b0c9ea40f0\",\"dweb:/ipfs/QmWx12PuyFqpy9MyxqJkRvTGkzYAYHajCYps3htgwe3YrX\"]},\"src/PartyPoolBalancedPair.sol\":{\"keccak256\":\"0x7d36ae211709da83ecafcc70f31e5fcdc1bc299243eedceebf17f26339757d7b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://91762575c367c9b1d50a633fb46ccf429a28bbaf70f76b524749ad32dc716d7a\",\"dweb:/ipfs/QmVLxjR3h2XJukjXFx56b4m8SPg6oupxqkzY5EKCK7GFHn\"]},\"src/PartyPoolBase.sol\":{\"keccak256\":\"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5\",\"dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5\"]},\"src/PartyPoolDeployer.sol\":{\"keccak256\":\"0xdf2a6a8602eba3aef625c798a0ec6525feb7520c2fd6933c30dd76fe3c4e2618\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9aa94963e0d34feddf63b3ae034874557229740be1ef80f49e87bd05694c9b50\",\"dweb:/ipfs/QmYQ6mH1mEJCJ9XNGdT3saRU3q36GZ94WuyRsn9LRWXtbM\"]},\"src/PartyPoolHelpers.sol\":{\"keccak256\":\"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5\",\"dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP\"]},\"src/PartyPoolMintImpl.sol\":{\"keccak256\":\"0xe9d9927cecd46a1f836b2c43e9d6184642b9e695c7462e5fb7c671a38aab7398\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8d821911d7982fc302929198539b27f72be100b91450c98d2e0081519f776499\",\"dweb:/ipfs/QmRChx1DPD1gKXwfD1m6aQ7pgh1aX6CvYLNX41ufdJteaJ\"]},\"src/PartyPoolSwapImpl.sol\":{\"keccak256\":\"0x71ecbd6d0fb106031baed7e4c21694ef24f0112af7d975325b98b1b0463ba5b2\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://64f8f8bae2f89ca495b9edacd012363b55e78a198f100650beb2b1238e8ef11f\",\"dweb:/ipfs/QmVfihiw9TqncuEfZKx7c6WEHiGFfRQyhtfdTGzfN7emNY\"]},\"test/MockERC20.sol\":{\"keccak256\":\"0x0bc6f65e240dafff70f1f2d9069163c38b7f18f2b9f719c348b2525a3f3862de\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f52582fc050d9b461de199c55e270df101cc88d515f063db84f1f7250d9fe470\",\"dweb:/ipfs/QmPNhnGkM4Fw9EQoZT1ivMymeBjTKHkv2UzSK83WQPMwc6\"]},\"test/MockFlashBorrower.sol\":{\"keccak256\":\"0x32b6e9a6af1135e89ae19872ebe3cba1f32a247e76ce4688183a52a76e552a52\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ba428a2bb7451f7f17f4b5578fa30d14127314d4cc1ac5eaea677d928d922ab2\",\"dweb:/ipfs/QmZiiFZJvrPVtUCYGCRqijb9JdhANyZ6tiqCA5CvaNQRs3\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"IS_SCRIPT","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"PROTOCOL_FEE_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"PROTOCOL_FEE_PPM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"WETH","outputs":[{"internalType":"contract NativeWrapper","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"run"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"script/DeploySepolia.sol":"DeploySepolia"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/abdk-libraries-solidity/ABDKMath64x64.sol":{"keccak256":"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97","urls":["bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7","dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN"],"license":"BSD-4-Clause"},"lib/forge-std/src/Base.sol":{"keccak256":"0x4b2a5a85e045dcf6a082700c7252e43854c2eed88f860aaa18ec1e85218ae2bf","urls":["bzz-raw://98d060ed5be569a92d908fc358149039dc8f833d61973aa1b9d1d8235676bf6d","dweb:/ipfs/QmaWQpn5dJmbMS5skwmPPMeUWZG35BLkignPpcA3zyagEs"],"license":"MIT"},"lib/forge-std/src/Script.sol":{"keccak256":"0xc942e27c7baae499beb01afbbae99f24d42af9a6e4aae675bc6901b704aa8e9b","urls":["bzz-raw://0456008adf68947247f358b62863af4a8e349549d2260f2ff9569ff0e3cf5c98","dweb:/ipfs/QmdviSUj2i7o3TPN5vd2xocqGMFVqjUzaiJTZRYyPxyHPx"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0xb2cbca1a6ffa19926c31bad47393a070305c809fe5d88c52214d5c51ce0733c6","urls":["bzz-raw://cf20975cfd9733910305fc8e746c7631c2ab210289aab036cec32f3c530335c7","dweb:/ipfs/QmYYvVzvAN1uCt8XtDmWo5x2inSVJBYajFexe92rVWEuMf"],"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/StdJson.sol":{"keccak256":"0xbc0132abe1c2accc2867c0f03667afffdf92f3e95a581bb03c9557eaa38ea500","urls":["bzz-raw://eb6fab37dc73c219cfbb7b4f4998bcf7677ca5397a867e850f40232192073974","dweb:/ipfs/QmUHsbVdp9SKmgek7ZfPcLTKrpZFXpqaqt4sVejzxGEQL3"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xcb876f5421e5aae334f9a6c5d549131c18ad347f1035d2a1e920f2623f346c85","urls":["bzz-raw://28076e06b01be4095f860fa9b142c284bac34c0813948e0a52d11acc15502db6","dweb:/ipfs/QmVR6XFTmBatJAVvYgkZxN21R5zvYTU4ard4Aow8TmXjy9"],"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/StdUtils.sol":{"keccak256":"0xb2469a902a326074034c4f7081d868113db0edbb7cf48b86528af2d6b07295f8","urls":["bzz-raw://1430a81c4978be875e2a3b31a8bfa4e1438fecd327f23771b690d64db63c020a","dweb:/ipfs/QmW6aB2u1LNaRgGQFwjV7L7UbxsRg63iJ7AuujPouEa4cT"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x9b4df44a3b748593a58be7ba64fa5f420e5dcd7927bfa5173186228bfe61782f","urls":["bzz-raw://b89fcf92ee1d14237cfb0dd949341053389d5b6a043ad77349b65bef80b1d59f","dweb:/ipfs/QmPkia3aNHrqvE4tqxG2AyrdB4W91jTAvcbchgs2wAo6NL"],"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"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d","urls":["bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100","dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc","urls":["bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037","dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44","urls":["bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d","dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol":{"keccak256":"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e","urls":["bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd","dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86","urls":["bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd","dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0x3ce148ed98f31ec9c463b32ee66f96194f0de89e41d7da3ef9e084f0effce06e","urls":["bzz-raw://3939cd40f5bf5ea382e5af5c5011c1b998bb88b4872774aa0de0071cb0c0d49e","dweb:/ipfs/QmWtEDNECUaeYYAQoP6epe4TGYphAbbfG7aEmKVhLHq451"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9","urls":["bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168","dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd274645d15bb7e4fcb9c833e401b2c5837404f90057f11a49118f25e0af7c76f","urls":["bzz-raw://d38e0b997bb7aebae26d190b03d0991feb0d204c45f945e60014e1ca9175de69","dweb:/ipfs/QmWzsUHHAZcjMyF8uMDEtNpMTkYZdQrfvdKPobXvwVHKo6"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol":{"keccak256":"0x50e81a8b089e3f382b6c915aa0166773de64ea4756e8f9479d9943a5f956ddf5","urls":["bzz-raw://bfeb96a150537222e2191c03887127499a4f21dfb5f9a7211da4d81749b52848","dweb:/ipfs/QmYR75ECbsBuxSiXmGvGfNKJRLoK5MdLUZL1bd8SixzxL4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol":{"keccak256":"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0","urls":["bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161","dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"},"script/DeploySepolia.sol":{"keccak256":"0x5845375b60af6f6b8a6c56e8486b3ff6703b58ab1db2e46ec39726fc66b64e99","urls":["bzz-raw://f56b0c18ddb51644f2d49043802c0eb86916fccd4490547d535efd430c435286","dweb:/ipfs/Qma5FhhHeLF6CqBmtL4Ekj6ZhtGkqdQNkpHY4qmcDt7AcG"],"license":"UNLICENSED"},"src/ERC20External.sol":{"keccak256":"0x421f511bb3aa7258fb7121aa66b9a2e8e0b7a07b7e51c800c714f7acbfd599d3","urls":["bzz-raw://b3fde56a83eae12a31eb4875d8952a99d18591fe0f18b6a12392c8f48f76af46","dweb:/ipfs/QmeApbmGv6Z2b1JynvBxaAK1j1eWhGYpeNEP56V8XXvpcz"],"license":"UNLICENSED"},"src/ERC20Internal.sol":{"keccak256":"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36","urls":["bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f","dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk"],"license":"UNLICENSED"},"src/Funding.sol":{"keccak256":"0x1d505b256d221cec151157083f8441193bbf7859d13873353429a7ca5342381d","urls":["bzz-raw://6871ab97d81ddffc56845142601408e974b7b0c619a2107aacd6b17eafb3330c","dweb:/ipfs/QmU5EKjGN2vDPgXhSsr4qvesq2T5eR5Ybeg25bHrcJyP2y"],"license":"UNLICENSED"},"src/IOwnable.sol":{"keccak256":"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990","urls":["bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1","dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9"],"license":"MIT"},"src/IPartyInfo.sol":{"keccak256":"0x80e88e8c29cdf12426f16b4bf2a088397fcc31c2664564f7f26117dc85009af7","urls":["bzz-raw://b91392cbda8adfccf9bea2e584616c4b3359d7381a18f5f3e5c9c71618786051","dweb:/ipfs/QmWtWb1gVs2pzFkjwDj4mcdoCnQLPbwq4Qxbh38VEdWwAW"],"license":"UNLICENSED"},"src/IPartyPlanner.sol":{"keccak256":"0x8f27d564f2c1fde267aa1fec970402e2da5b731ac97f4d5fe24f6ebab1fd03ff","urls":["bzz-raw://399d21923fdbb6c3012f086c6de62bd4ea6648cf71a46e59beaad9a74d854025","dweb:/ipfs/QmcS4qRFjUJ4JyeTnjDSnTzprSnrd8TTxF2gfZf2JBs1c6"],"license":"UNLICENSED"},"src/IPartyPool.sol":{"keccak256":"0x74b9531bdf2200f256cac6c2cd54c0efad7c1bdfbe694ee910df75448ffe93f4","urls":["bzz-raw://aadd161d7e197b48e6be4198b0f4f81a10016b9904d024e0a361bf2d7f941475","dweb:/ipfs/QmYuGyPZCigmt8va11oAHXPTpHFyF3d7ARDNacyr2jsDfa"],"license":"UNLICENSED"},"src/LMSRStabilized.sol":{"keccak256":"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b","urls":["bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3","dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB"],"license":"UNLICENSED"},"src/LMSRStabilizedBalancedPair.sol":{"keccak256":"0x782f3baf92f74152c0b93b95199abbb3a36c75c921454260c8b0237f91d7c59d","urls":["bzz-raw://04d463c4fdcb6c8e2ebf9aed649ff21cca759ba73a4c93659e30c7df25e26c81","dweb:/ipfs/QmUxmWytiw5VYJRUrFbSGm1oWmDPQ4q23pnkmK1q9P4apN"],"license":"UNLICENSED"},"src/NativeWrapper.sol":{"keccak256":"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579","urls":["bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238","dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB"],"license":"UNLICENSED"},"src/OwnableExternal.sol":{"keccak256":"0x0a0199368ad20a31e7169b3e56449bf022c9d680e0d487c118608a7f14cb7efb","urls":["bzz-raw://3348a063649e01acf9c6aa6b7ce2ecf62ace8c6f1467477de7d605996f08ec64","dweb:/ipfs/QmSoxb35FFsNCgXgWn91CupvjpGmyM31wcfxAVpVFFPecX"],"license":"MIT"},"src/OwnableInternal.sol":{"keccak256":"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581","urls":["bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca","dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE"],"license":"MIT"},"src/PartyInfo.sol":{"keccak256":"0x009de3c5bd0542df3f74b89be5c5dd09dd3bb441b2028df99db3e6b7e27d862d","urls":["bzz-raw://65b1e0622dd99b3af332a93a42463dad10f4a3db10a313c8e6bcb341eaf8e930","dweb:/ipfs/QmUfeDd1jUPdxReFYRA8fUWCmfLvXNZf8mnNnBt1ohWJzM"],"license":"UNLICENSED"},"src/PartyPlanner.sol":{"keccak256":"0xdd92d3d269279e372680583a5d6e1a7342715c9b6708777f17635c4e2391620f","urls":["bzz-raw://cd9ef0482a8efd86a49eef567defe412e72e522d85de0d8ded89eac6b8f6463a","dweb:/ipfs/QmVpXgadYC3NbQ4DfWFg4yRKZEvJ42bzFvC2MLu6JAjDoS"],"license":"UNLICENSED"},"src/PartyPool.sol":{"keccak256":"0xaf921e5a5c32ee53fc1991d20fe030ec0a9572d0a8d112e717476ee4af0b8ab4","urls":["bzz-raw://b4bc13e889ec6fb214ac3538203328abede9e316bf617a7f7593b3b0c9ea40f0","dweb:/ipfs/QmWx12PuyFqpy9MyxqJkRvTGkzYAYHajCYps3htgwe3YrX"],"license":"UNLICENSED"},"src/PartyPoolBalancedPair.sol":{"keccak256":"0x7d36ae211709da83ecafcc70f31e5fcdc1bc299243eedceebf17f26339757d7b","urls":["bzz-raw://91762575c367c9b1d50a633fb46ccf429a28bbaf70f76b524749ad32dc716d7a","dweb:/ipfs/QmVLxjR3h2XJukjXFx56b4m8SPg6oupxqkzY5EKCK7GFHn"],"license":"UNLICENSED"},"src/PartyPoolBase.sol":{"keccak256":"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999","urls":["bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5","dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5"],"license":"UNLICENSED"},"src/PartyPoolDeployer.sol":{"keccak256":"0xdf2a6a8602eba3aef625c798a0ec6525feb7520c2fd6933c30dd76fe3c4e2618","urls":["bzz-raw://9aa94963e0d34feddf63b3ae034874557229740be1ef80f49e87bd05694c9b50","dweb:/ipfs/QmYQ6mH1mEJCJ9XNGdT3saRU3q36GZ94WuyRsn9LRWXtbM"],"license":"UNLICENSED"},"src/PartyPoolHelpers.sol":{"keccak256":"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c","urls":["bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5","dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP"],"license":"UNLICENSED"},"src/PartyPoolMintImpl.sol":{"keccak256":"0xe9d9927cecd46a1f836b2c43e9d6184642b9e695c7462e5fb7c671a38aab7398","urls":["bzz-raw://8d821911d7982fc302929198539b27f72be100b91450c98d2e0081519f776499","dweb:/ipfs/QmRChx1DPD1gKXwfD1m6aQ7pgh1aX6CvYLNX41ufdJteaJ"],"license":"UNLICENSED"},"src/PartyPoolSwapImpl.sol":{"keccak256":"0x71ecbd6d0fb106031baed7e4c21694ef24f0112af7d975325b98b1b0463ba5b2","urls":["bzz-raw://64f8f8bae2f89ca495b9edacd012363b55e78a198f100650beb2b1238e8ef11f","dweb:/ipfs/QmVfihiw9TqncuEfZKx7c6WEHiGFfRQyhtfdTGzfN7emNY"],"license":"UNLICENSED"},"test/MockERC20.sol":{"keccak256":"0x0bc6f65e240dafff70f1f2d9069163c38b7f18f2b9f719c348b2525a3f3862de","urls":["bzz-raw://f52582fc050d9b461de199c55e270df101cc88d515f063db84f1f7250d9fe470","dweb:/ipfs/QmPNhnGkM4Fw9EQoZT1ivMymeBjTKHkv2UzSK83WQPMwc6"],"license":"UNLICENSED"},"test/MockFlashBorrower.sol":{"keccak256":"0x32b6e9a6af1135e89ae19872ebe3cba1f32a247e76ce4688183a52a76e552a52","urls":["bzz-raw://ba428a2bb7451f7f17f4b5578fa30d14127314d4cc1ac5eaea677d928d922ab2","dweb:/ipfs/QmZiiFZJvrPVtUCYGCRqijb9JdhANyZ6tiqCA5CvaNQRs3"],"license":"UNLICENSED"}},"version":1},"id":32} \ No newline at end of file diff --git a/deployment/11155111/v1/out/ERC20.sol/ERC20.json b/deployment/11155111/v1/out/ERC20.sol/ERC20.json index 14f031c..9b87db0 100644 --- a/deployment/11155111/v1/out/ERC20.sol/ERC20.json +++ b/deployment/11155111/v1/out/ERC20.sol/ERC20.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC-20 applications.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. Both values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd\",\"dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x3ce148ed98f31ec9c463b32ee66f96194f0de89e41d7da3ef9e084f0effce06e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3939cd40f5bf5ea382e5af5c5011c1b998bb88b4872774aa0de0071cb0c0d49e\",\"dweb:/ipfs/QmWtEDNECUaeYYAQoP6epe4TGYphAbbfG7aEmKVhLHq451\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"constructor":{"details":"Sets the values for {name} and {symbol}. Both values are immutable: they can only be set once during construction."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":"ERC20"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86","urls":["bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd","dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0x3ce148ed98f31ec9c463b32ee66f96194f0de89e41d7da3ef9e084f0effce06e","urls":["bzz-raw://3939cd40f5bf5ea382e5af5c5011c1b998bb88b4872774aa0de0071cb0c0d49e","dweb:/ipfs/QmWtEDNECUaeYYAQoP6epe4TGYphAbbfG7aEmKVhLHq451"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"}},"version":1},"id":23} \ No newline at end of file +{"abi":[{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC-20 applications.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. Both values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd\",\"dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x3ce148ed98f31ec9c463b32ee66f96194f0de89e41d7da3ef9e084f0effce06e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3939cd40f5bf5ea382e5af5c5011c1b998bb88b4872774aa0de0071cb0c0d49e\",\"dweb:/ipfs/QmWtEDNECUaeYYAQoP6epe4TGYphAbbfG7aEmKVhLHq451\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"constructor":{"details":"Sets the values for {name} and {symbol}. Both values are immutable: they can only be set once during construction."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":"ERC20"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86","urls":["bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd","dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0x3ce148ed98f31ec9c463b32ee66f96194f0de89e41d7da3ef9e084f0effce06e","urls":["bzz-raw://3939cd40f5bf5ea382e5af5c5011c1b998bb88b4872774aa0de0071cb0c0d49e","dweb:/ipfs/QmWtEDNECUaeYYAQoP6epe4TGYphAbbfG7aEmKVhLHq451"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"}},"version":1},"id":21} \ No newline at end of file diff --git a/deployment/11155111/v1/out/ERC20External.sol/ERC20External.json b/deployment/11155111/v1/out/ERC20External.sol/ERC20External.json index 5d7fdd8..7e6201c 100644 --- a/deployment/11155111/v1/out/ERC20External.sol/ERC20External.json +++ b/deployment/11155111/v1/out/ERC20External.sol/ERC20External.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60806040523461031057610d0a8038038061001981610314565b9283398101906040818303126103105780516001600160401b0381116103105782610045918301610339565b60208201519092906001600160401b038111610310576100659201610339565b81516001600160401b03811161022357600354600181811c91168015610306575b602082101461020557601f81116102a3575b50602092601f821160011461024257928192935f92610237575b50508160011b915f199060031b1c1916176003555b80516001600160401b03811161022357600454600181811c91168015610219575b602082101461020557601f81116101a2575b50602091601f8211600114610142579181925f92610137575b50508160011b915f199060031b1c1916176004555b60405161097f908161038b8239f35b015190505f80610113565b601f1982169260045f52805f20915f5b85811061018a57508360019510610172575b505050811b01600455610128565b01515f1960f88460031b161c191690555f8080610164565b91926020600181928685015181550194019201610152565b60045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c810191602084106101fb575b601f0160051c01905b8181106101f057506100fa565b5f81556001016101e3565b90915081906101da565b634e487b7160e01b5f52602260045260245ffd5b90607f16906100e8565b634e487b7160e01b5f52604160045260245ffd5b015190505f806100b2565b601f1982169360035f52805f20915f5b86811061028b5750836001959610610273575b505050811b016003556100c7565b01515f1960f88460031b161c191690555f8080610265565b91926020600181928685015181550194019201610252565b60035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f830160051c810191602084106102fc575b601f0160051c01905b8181106102f15750610098565b5f81556001016102e4565b90915081906102db565b90607f1690610086565b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761022357604052565b81601f82011215610310578051906001600160401b03821161022357610368601f8301601f1916602001610314565b928284526020838301011161031057815f9260208093018386015e830101529056fe6080806040526004361015610012575f80fd5b5f3560e01c90816306fdde031461066857508063095ea7b3146105bb57806318160ddd1461058057806323b872dd146103ec578063313ce567146103b357806370a082311461035157806395d89b411461015e578063a9059cbb1461010f5763dd62ed3e1461007f575f80fd5b3461010b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b576100b66107e1565b73ffffffffffffffffffffffffffffffffffffffff6100d3610804565b91165f52600160205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060405f2054604051908152f35b5f80fd5b3461010b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b576101536101496107e1565b6024359033610827565b602060405160018152f35b3461010b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b576040515f600454908160011c60018316928315610347575b60208210841461031a5781855284939081156102ba5750600114610240575b5003601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681019067ffffffffffffffff8211818310176102135761020f82918260405282610799565b0390f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60045f90815291507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b81831061029e57505081016020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06101c3565b602091935080600191548385880101520191019091839261026a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208581019190915291151560051b840190910191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090506101c3565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b90607f16906101a4565b3461010b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b5773ffffffffffffffffffffffffffffffffffffffff61039d6107e1565b165f525f602052602060405f2054604051908152f35b3461010b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b57602060405160128152f35b3461010b5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b576104236107e1565b61042b610804565b6044359073ffffffffffffffffffffffffffffffffffffffff831692835f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f20547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81106104a7575b506101539350610827565b83811061054c5784156105205733156104f457610153945f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f526020528360405f20910390558461049c565b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b83907ffb8f41b2000000000000000000000000000000000000000000000000000000005f523360045260245260445260645ffd5b3461010b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b576020600254604051908152f35b3461010b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b576105f26107e1565b6024359033156105205773ffffffffffffffffffffffffffffffffffffffff169081156104f457335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b3461010b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b575f600354908160011c6001831692831561078f575b60208210841461031a5781855284939081156102ba5750600114610715575003601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681019067ffffffffffffffff8211818310176102135761020f82918260405282610799565b60035f90815291507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b81831061077357505081016020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06101c3565b602091935080600191548385880101520191019091839261073f565b90607f16906106ab565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361010b57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361010b57565b73ffffffffffffffffffffffffffffffffffffffff1690811561091d5773ffffffffffffffffffffffffffffffffffffffff169182156108f157815f525f60205260405f20548181106108bf57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffdfea2646970667358221220732d62c98e7e53524402f4984975df46acba3b2fc30c9cd8c444142291361b5564736f6c634300081e0033","sourceMap":"597:3566:35:-:0;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;597:3566:35;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;597:3566:35;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;597:3566:35;;;;882:13;597:3566;;;;;;;;;;;-1:-1:-1;597:3566:35;;;;;;;;;;;-1:-1:-1;597:3566:35;;;;;;;;;;;;;;-1:-1:-1;597:3566:35;;;;;;;;;;;;;882:13;597:3566;;;;;882:13;597:3566;;;;-1:-1:-1;;;;;597:3566:35;;;;905:17;597:3566;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;597:3566:35;;;;;;;;;;;;;882:13;597:3566;;;;;905:17;597:3566;;;;;;;;;;;;;;;-1:-1:-1;597:3566:35;;;;;;;;;;905:17;-1:-1:-1;597:3566:35;;-1:-1:-1;597:3566:35;;-1:-1:-1;597:3566:35;;;;;;;;;;;;;;;;;;;;905:17;597:3566;;;;;;;;;;882:13;597:3566;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;905:17;-1:-1:-1;597:3566:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;597:3566:35;;;;;;;;;-1:-1:-1;597:3566:35;;;;;;;;-1:-1:-1;597:3566:35;;905:17;597:3566;;-1:-1:-1;597:3566:35;;;;;;;;;;;;-1:-1:-1;597:3566:35;;905:17;597:3566;;-1:-1:-1;597:3566:35;;;;;-1:-1:-1;597:3566:35;;;;;;;;;;882:13;-1:-1:-1;597:3566:35;;-1:-1:-1;597:3566:35;;-1:-1:-1;597:3566:35;;;;;;;;;;;;;;;;;;;;;882:13;597:3566;;;;;;;;;;882:13;597:3566;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;882:13;-1:-1:-1;597:3566:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;597:3566:35;;;;;;;;;-1:-1:-1;597:3566:35;;;;;;;;;;;;-1:-1:-1;597:3566:35;;;;;;;;;-1:-1:-1;;597:3566:35;;;-1:-1:-1;;;;;597:3566:35;;;;;;;;;;:::o;:::-;;;;;;;;;;;;-1:-1:-1;;;;;597:3566:35;;;;;;;;-1:-1:-1;;597:3566:35;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;597:3566:35;;;;;;;;;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f3560e01c90816306fdde031461066857508063095ea7b3146105bb57806318160ddd1461058057806323b872dd146103ec578063313ce567146103b357806370a082311461035157806395d89b411461015e578063a9059cbb1461010f5763dd62ed3e1461007f575f80fd5b3461010b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b576100b66107e1565b73ffffffffffffffffffffffffffffffffffffffff6100d3610804565b91165f52600160205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060405f2054604051908152f35b5f80fd5b3461010b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b576101536101496107e1565b6024359033610827565b602060405160018152f35b3461010b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b576040515f600454908160011c60018316928315610347575b60208210841461031a5781855284939081156102ba5750600114610240575b5003601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681019067ffffffffffffffff8211818310176102135761020f82918260405282610799565b0390f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60045f90815291507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b81831061029e57505081016020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06101c3565b602091935080600191548385880101520191019091839261026a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208581019190915291151560051b840190910191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090506101c3565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b90607f16906101a4565b3461010b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b5773ffffffffffffffffffffffffffffffffffffffff61039d6107e1565b165f525f602052602060405f2054604051908152f35b3461010b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b57602060405160128152f35b3461010b5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b576104236107e1565b61042b610804565b6044359073ffffffffffffffffffffffffffffffffffffffff831692835f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f20547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81106104a7575b506101539350610827565b83811061054c5784156105205733156104f457610153945f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f526020528360405f20910390558461049c565b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b83907ffb8f41b2000000000000000000000000000000000000000000000000000000005f523360045260245260445260645ffd5b3461010b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b576020600254604051908152f35b3461010b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b576105f26107e1565b6024359033156105205773ffffffffffffffffffffffffffffffffffffffff169081156104f457335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b3461010b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b575f600354908160011c6001831692831561078f575b60208210841461031a5781855284939081156102ba5750600114610715575003601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681019067ffffffffffffffff8211818310176102135761020f82918260405282610799565b60035f90815291507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b81831061077357505081016020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06101c3565b602091935080600191548385880101520191019091839261073f565b90607f16906106ab565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361010b57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361010b57565b73ffffffffffffffffffffffffffffffffffffffff1690811561091d5773ffffffffffffffffffffffffffffffffffffffff169182156108f157815f525f60205260405f20548181106108bf57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffdfea2646970667358221220732d62c98e7e53524402f4984975df46acba3b2fc30c9cd8c444142291361b5564736f6c634300081e0033","sourceMap":"597:3566:35:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;2797:11;597:3566;;;;;;2797:27;597:3566;-1:-1:-1;597:3566:35;;;;;-1:-1:-1;597:3566:35;;;;;;;;;;;;;;;;;;;;;;;2624:5;597:3566;;:::i;:::-;;;735:10:28;;2624:5:35;:::i;:::-;597:3566;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;597:3566:35;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;597:3566:35;;;;;;;-1:-1:-1;;597:3566:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;597:3566:35;;-1:-1:-1;597:3566:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1997:2;597:3566;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;735:10:28;597:3566:35;-1:-1:-1;597:3566:35;;;;-1:-1:-1;597:3566:35;;6336:17:36;6317:36;;6313:309;;597:3566:35;4127:5;;;;;:::i;6313:309:36:-;6373:24;;;6369:130;;5541:19;;5537:89;;735:10:28;5639:21:36;5635:90;;4127:5:35;597:3566;;;;;;;;;;735:10:28;597:3566:35;-1:-1:-1;597:3566:35;;;;;-1:-1:-1;597:3566:35;;;;;6313:309:36;;;5635:90;5683:31;597:3566:35;5683:31:36;597:3566:35;;;;;5683:31:36;5537:89;5583:32;597:3566:35;5583:32:36;597:3566:35;;;;;5583:32:36;6369:130;6424:60;;;597:3566:35;6424:60:36;735:10:28;597:3566:35;;;;;;;;6424:60:36;597:3566:35;;;;;;;;;;;;2117:12;597:3566;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;735:10:28;;5541:19:36;5537:89;;597:3566:35;;5639:21:36;;;5635:90;;735:10:28;597:3566:35;;;;;;;;;-1:-1:-1;597:3566:35;;;;;-1:-1:-1;597:3566:35;;;;;;;5813:38:36;597:3566:35;735:10:28;5813:38:36;;597:3566:35;;;;;;;;;;;;;;;;;;;1072:5;597:3566;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;597:3566:35;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1072:5;597:3566;;;;;-1:-1:-1;597:3566:35;;;;;;;-1:-1:-1;;597:3566:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;1110:300:36:-;597:3566:35;;1193:18:36;;;1189:86;;597:3566:35;;1288:16:36;;;1284:86;;597:3566:35;1209:1:36;597:3566:35;1209:1:36;597:3566:35;;;1209:1:36;597:3566:35;;2058:19:36;;;2054:115;;597:3566:35;2801:32:36;597:3566:35;;;;1209:1:36;597:3566:35;1209:1:36;597:3566:35;;;;1209:1:36;597:3566:35;;;1209:1:36;597:3566:35;1209:1:36;597:3566:35;;;1209:1:36;597:3566:35;;;;;;;;;;;;2801:32:36;1110:300::o;2054:115::-;2104:50;;1209:1;2104:50;;597:3566:35;;;;;;1209:1:36;2104:50;1284:86;1327:32;1209:1;1327:32;1209:1;1327:32;597:3566:35;;1209:1:36;1327:32;1189:86;1234:30;1209:1;1234:30;1209:1;1234:30;597:3566:35;;1209:1:36;1234:30","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. Both values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` _tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s _tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/ERC20External.sol\":\"ERC20External\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd\",\"dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"src/ERC20External.sol\":{\"keccak256\":\"0x421f511bb3aa7258fb7121aa66b9a2e8e0b7a07b7e51c800c714f7acbfd599d3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b3fde56a83eae12a31eb4875d8952a99d18591fe0f18b6a12392c8f48f76af46\",\"dweb:/ipfs/QmeApbmGv6Z2b1JynvBxaAK1j1eWhGYpeNEP56V8XXvpcz\"]},\"src/ERC20Internal.sol\":{\"keccak256\":\"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f\",\"dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"constructor":{"details":"Sets the values for {name} and {symbol}. Both values are immutable: they can only be set once during construction."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` _tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s _tokens of at least `value`."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/ERC20External.sol":"ERC20External"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86","urls":["bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd","dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"src/ERC20External.sol":{"keccak256":"0x421f511bb3aa7258fb7121aa66b9a2e8e0b7a07b7e51c800c714f7acbfd599d3","urls":["bzz-raw://b3fde56a83eae12a31eb4875d8952a99d18591fe0f18b6a12392c8f48f76af46","dweb:/ipfs/QmeApbmGv6Z2b1JynvBxaAK1j1eWhGYpeNEP56V8XXvpcz"],"license":"UNLICENSED"},"src/ERC20Internal.sol":{"keccak256":"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36","urls":["bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f","dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk"],"license":"UNLICENSED"}},"version":1},"id":35} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60806040523461031057610d0a8038038061001981610314565b9283398101906040818303126103105780516001600160401b0381116103105782610045918301610339565b60208201519092906001600160401b038111610310576100659201610339565b81516001600160401b03811161022357600354600181811c91168015610306575b602082101461020557601f81116102a3575b50602092601f821160011461024257928192935f92610237575b50508160011b915f199060031b1c1916176003555b80516001600160401b03811161022357600454600181811c91168015610219575b602082101461020557601f81116101a2575b50602091601f8211600114610142579181925f92610137575b50508160011b915f199060031b1c1916176004555b60405161097f908161038b8239f35b015190505f80610113565b601f1982169260045f52805f20915f5b85811061018a57508360019510610172575b505050811b01600455610128565b01515f1960f88460031b161c191690555f8080610164565b91926020600181928685015181550194019201610152565b60045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c810191602084106101fb575b601f0160051c01905b8181106101f057506100fa565b5f81556001016101e3565b90915081906101da565b634e487b7160e01b5f52602260045260245ffd5b90607f16906100e8565b634e487b7160e01b5f52604160045260245ffd5b015190505f806100b2565b601f1982169360035f52805f20915f5b86811061028b5750836001959610610273575b505050811b016003556100c7565b01515f1960f88460031b161c191690555f8080610265565b91926020600181928685015181550194019201610252565b60035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f830160051c810191602084106102fc575b601f0160051c01905b8181106102f15750610098565b5f81556001016102e4565b90915081906102db565b90607f1690610086565b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761022357604052565b81601f82011215610310578051906001600160401b03821161022357610368601f8301601f1916602001610314565b928284526020838301011161031057815f9260208093018386015e830101529056fe6080806040526004361015610012575f80fd5b5f3560e01c90816306fdde031461066857508063095ea7b3146105bb57806318160ddd1461058057806323b872dd146103ec578063313ce567146103b357806370a082311461035157806395d89b411461015e578063a9059cbb1461010f5763dd62ed3e1461007f575f80fd5b3461010b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b576100b66107e1565b73ffffffffffffffffffffffffffffffffffffffff6100d3610804565b91165f52600160205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060405f2054604051908152f35b5f80fd5b3461010b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b576101536101496107e1565b6024359033610827565b602060405160018152f35b3461010b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b576040515f600454908160011c60018316928315610347575b60208210841461031a5781855284939081156102ba5750600114610240575b5003601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681019067ffffffffffffffff8211818310176102135761020f82918260405282610799565b0390f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60045f90815291507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b81831061029e57505081016020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06101c3565b602091935080600191548385880101520191019091839261026a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208581019190915291151560051b840190910191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090506101c3565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b90607f16906101a4565b3461010b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b5773ffffffffffffffffffffffffffffffffffffffff61039d6107e1565b165f525f602052602060405f2054604051908152f35b3461010b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b57602060405160128152f35b3461010b5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b576104236107e1565b61042b610804565b6044359073ffffffffffffffffffffffffffffffffffffffff831692835f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f20547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81106104a7575b506101539350610827565b83811061054c5784156105205733156104f457610153945f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f526020528360405f20910390558461049c565b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b83907ffb8f41b2000000000000000000000000000000000000000000000000000000005f523360045260245260445260645ffd5b3461010b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b576020600254604051908152f35b3461010b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b576105f26107e1565b6024359033156105205773ffffffffffffffffffffffffffffffffffffffff169081156104f457335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b3461010b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b575f600354908160011c6001831692831561078f575b60208210841461031a5781855284939081156102ba5750600114610715575003601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681019067ffffffffffffffff8211818310176102135761020f82918260405282610799565b60035f90815291507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b81831061077357505081016020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06101c3565b602091935080600191548385880101520191019091839261073f565b90607f16906106ab565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361010b57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361010b57565b73ffffffffffffffffffffffffffffffffffffffff1690811561091d5773ffffffffffffffffffffffffffffffffffffffff169182156108f157815f525f60205260405f20548181106108bf57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffdfea2646970667358221220732d62c98e7e53524402f4984975df46acba3b2fc30c9cd8c444142291361b5564736f6c634300081e0033","sourceMap":"597:3566:33:-:0;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;597:3566:33;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;597:3566:33;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;597:3566:33;;;;882:13;597:3566;;;;;;;;;;;-1:-1:-1;597:3566:33;;;;;;;;;;;-1:-1:-1;597:3566:33;;;;;;;;;;;;;;-1:-1:-1;597:3566:33;;;;;;;;;;;;;882:13;597:3566;;;;;882:13;597:3566;;;;-1:-1:-1;;;;;597:3566:33;;;;905:17;597:3566;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;597:3566:33;;;;;;;;;;;;;882:13;597:3566;;;;;905:17;597:3566;;;;;;;;;;;;;;;-1:-1:-1;597:3566:33;;;;;;;;;;905:17;-1:-1:-1;597:3566:33;;-1:-1:-1;597:3566:33;;-1:-1:-1;597:3566:33;;;;;;;;;;;;;;;;;;;;905:17;597:3566;;;;;;;;;;882:13;597:3566;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;905:17;-1:-1:-1;597:3566:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;597:3566:33;;;;;;;;;-1:-1:-1;597:3566:33;;;;;;;;-1:-1:-1;597:3566:33;;905:17;597:3566;;-1:-1:-1;597:3566:33;;;;;;;;;;;;-1:-1:-1;597:3566:33;;905:17;597:3566;;-1:-1:-1;597:3566:33;;;;;-1:-1:-1;597:3566:33;;;;;;;;;;882:13;-1:-1:-1;597:3566:33;;-1:-1:-1;597:3566:33;;-1:-1:-1;597:3566:33;;;;;;;;;;;;;;;;;;;;;882:13;597:3566;;;;;;;;;;882:13;597:3566;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;882:13;-1:-1:-1;597:3566:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;597:3566:33;;;;;;;;;-1:-1:-1;597:3566:33;;;;;;;;;;;;-1:-1:-1;597:3566:33;;;;;;;;;-1:-1:-1;;597:3566:33;;;-1:-1:-1;;;;;597:3566:33;;;;;;;;;;:::o;:::-;;;;;;;;;;;;-1:-1:-1;;;;;597:3566:33;;;;;;;;-1:-1:-1;;597:3566:33;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;597:3566:33;;;;;;;;;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f3560e01c90816306fdde031461066857508063095ea7b3146105bb57806318160ddd1461058057806323b872dd146103ec578063313ce567146103b357806370a082311461035157806395d89b411461015e578063a9059cbb1461010f5763dd62ed3e1461007f575f80fd5b3461010b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b576100b66107e1565b73ffffffffffffffffffffffffffffffffffffffff6100d3610804565b91165f52600160205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060405f2054604051908152f35b5f80fd5b3461010b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b576101536101496107e1565b6024359033610827565b602060405160018152f35b3461010b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b576040515f600454908160011c60018316928315610347575b60208210841461031a5781855284939081156102ba5750600114610240575b5003601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681019067ffffffffffffffff8211818310176102135761020f82918260405282610799565b0390f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60045f90815291507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b81831061029e57505081016020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06101c3565b602091935080600191548385880101520191019091839261026a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208581019190915291151560051b840190910191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090506101c3565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b90607f16906101a4565b3461010b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b5773ffffffffffffffffffffffffffffffffffffffff61039d6107e1565b165f525f602052602060405f2054604051908152f35b3461010b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b57602060405160128152f35b3461010b5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b576104236107e1565b61042b610804565b6044359073ffffffffffffffffffffffffffffffffffffffff831692835f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f20547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81106104a7575b506101539350610827565b83811061054c5784156105205733156104f457610153945f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f526020528360405f20910390558461049c565b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b83907ffb8f41b2000000000000000000000000000000000000000000000000000000005f523360045260245260445260645ffd5b3461010b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b576020600254604051908152f35b3461010b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b576105f26107e1565b6024359033156105205773ffffffffffffffffffffffffffffffffffffffff169081156104f457335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b3461010b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b575f600354908160011c6001831692831561078f575b60208210841461031a5781855284939081156102ba5750600114610715575003601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681019067ffffffffffffffff8211818310176102135761020f82918260405282610799565b60035f90815291507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b81831061077357505081016020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06101c3565b602091935080600191548385880101520191019091839261073f565b90607f16906106ab565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361010b57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361010b57565b73ffffffffffffffffffffffffffffffffffffffff1690811561091d5773ffffffffffffffffffffffffffffffffffffffff169182156108f157815f525f60205260405f20548181106108bf57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffdfea2646970667358221220732d62c98e7e53524402f4984975df46acba3b2fc30c9cd8c444142291361b5564736f6c634300081e0033","sourceMap":"597:3566:33:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;2797:11;597:3566;;;;;;2797:27;597:3566;-1:-1:-1;597:3566:33;;;;;-1:-1:-1;597:3566:33;;;;;;;;;;;;;;;;;;;;;;;2624:5;597:3566;;:::i;:::-;;;735:10:26;;2624:5:33;:::i;:::-;597:3566;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;597:3566:33;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;597:3566:33;;;;;;;-1:-1:-1;;597:3566:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;597:3566:33;;-1:-1:-1;597:3566:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1997:2;597:3566;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;735:10:26;597:3566:33;-1:-1:-1;597:3566:33;;;;-1:-1:-1;597:3566:33;;6336:17:34;6317:36;;6313:309;;597:3566:33;4127:5;;;;;:::i;6313:309:34:-;6373:24;;;6369:130;;5541:19;;5537:89;;735:10:26;5639:21:34;5635:90;;4127:5:33;597:3566;;;;;;;;;;735:10:26;597:3566:33;-1:-1:-1;597:3566:33;;;;;-1:-1:-1;597:3566:33;;;;;6313:309:34;;;5635:90;5683:31;597:3566:33;5683:31:34;597:3566:33;;;;;5683:31:34;5537:89;5583:32;597:3566:33;5583:32:34;597:3566:33;;;;;5583:32:34;6369:130;6424:60;;;597:3566:33;6424:60:34;735:10:26;597:3566:33;;;;;;;;6424:60:34;597:3566:33;;;;;;;;;;;;2117:12;597:3566;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;735:10:26;;5541:19:34;5537:89;;597:3566:33;;5639:21:34;;;5635:90;;735:10:26;597:3566:33;;;;;;;;;-1:-1:-1;597:3566:33;;;;;-1:-1:-1;597:3566:33;;;;;;;5813:38:34;597:3566:33;735:10:26;5813:38:34;;597:3566:33;;;;;;;;;;;;;;;;;;;1072:5;597:3566;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;597:3566:33;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1072:5;597:3566;;;;;-1:-1:-1;597:3566:33;;;;;;;-1:-1:-1;;597:3566:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;1110:300:34:-;597:3566:33;;1193:18:34;;;1189:86;;597:3566:33;;1288:16:34;;;1284:86;;597:3566:33;1209:1:34;597:3566:33;1209:1:34;597:3566:33;;;1209:1:34;597:3566:33;;2058:19:34;;;2054:115;;597:3566:33;2801:32:34;597:3566:33;;;;1209:1:34;597:3566:33;1209:1:34;597:3566:33;;;;1209:1:34;597:3566:33;;;1209:1:34;597:3566:33;1209:1:34;597:3566:33;;;1209:1:34;597:3566:33;;;;;;;;;;;;2801:32:34;1110:300::o;2054:115::-;2104:50;;1209:1;2104:50;;597:3566:33;;;;;;1209:1:34;2104:50;1284:86;1327:32;1209:1;1327:32;1209:1;1327:32;597:3566:33;;1209:1:34;1327:32;1189:86;1234:30;1209:1;1234:30;1209:1;1234:30;597:3566:33;;1209:1:34;1234:30","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. Both values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` _tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s _tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/ERC20External.sol\":\"ERC20External\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd\",\"dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"src/ERC20External.sol\":{\"keccak256\":\"0x421f511bb3aa7258fb7121aa66b9a2e8e0b7a07b7e51c800c714f7acbfd599d3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b3fde56a83eae12a31eb4875d8952a99d18591fe0f18b6a12392c8f48f76af46\",\"dweb:/ipfs/QmeApbmGv6Z2b1JynvBxaAK1j1eWhGYpeNEP56V8XXvpcz\"]},\"src/ERC20Internal.sol\":{\"keccak256\":\"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f\",\"dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"constructor":{"details":"Sets the values for {name} and {symbol}. Both values are immutable: they can only be set once during construction."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` _tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s _tokens of at least `value`."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/ERC20External.sol":"ERC20External"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86","urls":["bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd","dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"src/ERC20External.sol":{"keccak256":"0x421f511bb3aa7258fb7121aa66b9a2e8e0b7a07b7e51c800c714f7acbfd599d3","urls":["bzz-raw://b3fde56a83eae12a31eb4875d8952a99d18591fe0f18b6a12392c8f48f76af46","dweb:/ipfs/QmeApbmGv6Z2b1JynvBxaAK1j1eWhGYpeNEP56V8XXvpcz"],"license":"UNLICENSED"},"src/ERC20Internal.sol":{"keccak256":"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36","urls":["bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f","dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk"],"license":"UNLICENSED"}},"version":1},"id":33} \ No newline at end of file diff --git a/deployment/11155111/v1/out/ERC20Internal.sol/ERC20Internal.json b/deployment/11155111/v1/out/ERC20Internal.sol/ERC20Internal.json index 1222c0c..15cca91 100644 --- a/deployment/11155111/v1/out/ERC20Internal.sol/ERC20Internal.json +++ b/deployment/11155111/v1/out/ERC20Internal.sol/ERC20Internal.json @@ -1 +1 @@ -{"abi":[{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"}],\"devdoc\":{\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/ERC20Internal.sol\":\"ERC20Internal\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd\",\"dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"src/ERC20Internal.sol\":{\"keccak256\":\"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f\",\"dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/ERC20Internal.sol":"ERC20Internal"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86","urls":["bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd","dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"src/ERC20Internal.sol":{"keccak256":"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36","urls":["bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f","dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk"],"license":"UNLICENSED"}},"version":1},"id":36} \ No newline at end of file +{"abi":[{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"}],\"devdoc\":{\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/ERC20Internal.sol\":\"ERC20Internal\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd\",\"dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"src/ERC20Internal.sol\":{\"keccak256\":\"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f\",\"dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/ERC20Internal.sol":"ERC20Internal"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86","urls":["bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd","dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"src/ERC20Internal.sol":{"keccak256":"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36","urls":["bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f","dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk"],"license":"UNLICENSED"}},"version":1},"id":34} \ No newline at end of file diff --git a/deployment/11155111/v1/out/Errors.sol/Errors.json b/deployment/11155111/v1/out/Errors.sol/Errors.json index 4ba9eee..de8ec43 100644 --- a/deployment/11155111/v1/out/Errors.sol/Errors.json +++ b/deployment/11155111/v1/out/Errors.sol/Errors.json @@ -1 +1 @@ -{"abi":[{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"FailedDeployment","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MissingPrecompile","inputs":[{"name":"","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220c9655ed21113d5fdaf6c566485d35a2aaf2bf242b1c753a1cac998424bd77b5d64736f6c634300081e0033","sourceMap":"411:484:29:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea2646970667358221220c9655ed21113d5fdaf6c566485d35a2aaf2bf242b1c753a1cac998424bd77b5d64736f6c634300081e0033","sourceMap":"411:484:29:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"MissingPrecompile\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Collection of common custom errors used in multiple contracts IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library. It is recommended to avoid relying on the error API for critical functionality. _Available since v5.1._\",\"errors\":{\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"FailedDeployment()\":[{\"details\":\"The deployment failed.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"MissingPrecompile(address)\":[{\"details\":\"A necessary precompile is missing.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":\"Errors\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"FailedDeployment"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"type":"error","name":"MissingPrecompile"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/Errors.sol":"Errors"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"}},"version":1},"id":29} \ No newline at end of file +{"abi":[{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"FailedDeployment","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MissingPrecompile","inputs":[{"name":"","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220c9655ed21113d5fdaf6c566485d35a2aaf2bf242b1c753a1cac998424bd77b5d64736f6c634300081e0033","sourceMap":"411:484:27:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea2646970667358221220c9655ed21113d5fdaf6c566485d35a2aaf2bf242b1c753a1cac998424bd77b5d64736f6c634300081e0033","sourceMap":"411:484:27:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"MissingPrecompile\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Collection of common custom errors used in multiple contracts IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library. It is recommended to avoid relying on the error API for critical functionality. _Available since v5.1._\",\"errors\":{\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"FailedDeployment()\":[{\"details\":\"The deployment failed.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"MissingPrecompile(address)\":[{\"details\":\"A necessary precompile is missing.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":\"Errors\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"FailedDeployment"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"type":"error","name":"MissingPrecompile"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/Errors.sol":"Errors"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"}},"version":1},"id":27} \ No newline at end of file diff --git a/deployment/11155111/v1/out/IERC165.sol/IERC165.json b/deployment/11155111/v1/out/IERC165.sol/IERC165.json index 6815533..5272a82 100644 --- a/deployment/11155111/v1/out/IERC165.sol/IERC165.json +++ b/deployment/11155111/v1/out/IERC165.sol/IERC165.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[ERC]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":"IERC165"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"}},"version":1},"id":33} \ No newline at end of file +{"abi":[{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[ERC]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":"IERC165"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"}},"version":1},"id":31} \ No newline at end of file diff --git a/deployment/11155111/v1/out/IERC20.sol/IERC20.json b/deployment/11155111/v1/out/IERC20.sol/IERC20.json index 58c09ba..ead7454 100644 --- a/deployment/11155111/v1/out/IERC20.sol/IERC20.json +++ b/deployment/11155111/v1/out/IERC20.sol/IERC20.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-20 standard as defined in the ERC.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":"IERC20"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"}},"version":1},"id":24} \ No newline at end of file +{"abi":[{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-20 standard as defined in the ERC.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":"IERC20"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"}},"version":1},"id":22} \ No newline at end of file diff --git a/deployment/11155111/v1/out/IERC20Metadata.sol/IERC20Metadata.json b/deployment/11155111/v1/out/IERC20Metadata.sol/IERC20Metadata.json index 3683fdf..e751e99 100644 --- a/deployment/11155111/v1/out/IERC20Metadata.sol/IERC20Metadata.json +++ b/deployment/11155111/v1/out/IERC20Metadata.sol/IERC20Metadata.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the optional metadata functions from the ERC-20 standard.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"decimals()":{"details":"Returns the decimals places of the token."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":"IERC20Metadata"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"}},"version":1},"id":25} \ No newline at end of file +{"abi":[{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the optional metadata functions from the ERC-20 standard.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"decimals()":{"details":"Returns the decimals places of the token."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":"IERC20Metadata"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"}},"version":1},"id":23} \ No newline at end of file diff --git a/deployment/11155111/v1/out/IOwnable.sol/IOwnable.json b/deployment/11155111/v1/out/IOwnable.sol/IOwnable.json index 1c8afb4..977f046 100644 --- a/deployment/11155111/v1/out/IOwnable.sol/IOwnable.json +++ b/deployment/11155111/v1/out/IOwnable.sol/IOwnable.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"OpenZeppelin's Ownable contract, split into internal and external parts.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IOwnable.sol\":\"IOwnable\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/IOwnable.sol\":{\"keccak256\":\"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1\",\"dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IOwnable.sol":"IOwnable"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"src/IOwnable.sol":{"keccak256":"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990","urls":["bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1","dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9"],"license":"MIT"}},"version":1},"id":37} \ No newline at end of file +{"abi":[{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"OpenZeppelin's Ownable contract, split into internal and external parts.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IOwnable.sol\":\"IOwnable\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/IOwnable.sol\":{\"keccak256\":\"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1\",\"dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IOwnable.sol":"IOwnable"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"src/IOwnable.sol":{"keccak256":"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990","urls":["bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1","dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9"],"license":"MIT"}},"version":1},"id":36} \ No newline at end of file diff --git a/deployment/11155111/v1/out/IPartyFlashCallback.sol/IPartyFlashCallback.json b/deployment/11155111/v1/out/IPartyFlashCallback.sol/IPartyFlashCallback.json index 42a3cad..3605057 100644 --- a/deployment/11155111/v1/out/IPartyFlashCallback.sol/IPartyFlashCallback.json +++ b/deployment/11155111/v1/out/IPartyFlashCallback.sol/IPartyFlashCallback.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"partyFlashCallback","inputs":[{"name":"loanAmounts","type":"uint256[]","internalType":"uint256[]"},{"name":"repaymentAmounts","type":"uint256[]","internalType":"uint256[]"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"partyFlashCallback(uint256[],uint256[],bytes)":"f6c10706"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"loanAmounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"repaymentAmounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"partyFlashCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IPartyFlashCallback.sol\":\"IPartyFlashCallback\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/IPartyFlashCallback.sol\":{\"keccak256\":\"0xff1d473d27c4dc75441a5f0db2d761916cce4a702f660e998467791efd1d9b2e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3220d69c62ed8c8106762c92857f24011284e8ddcfa5db4210e506b112fa1870\",\"dweb:/ipfs/QmYoZiGsVwoJvyPMcsSste4tq93wVBgDqCZkwPY7dvyLBJ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256[]","name":"loanAmounts","type":"uint256[]"},{"internalType":"uint256[]","name":"repaymentAmounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"partyFlashCallback"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IPartyFlashCallback.sol":"IPartyFlashCallback"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"src/IPartyFlashCallback.sol":{"keccak256":"0xff1d473d27c4dc75441a5f0db2d761916cce4a702f660e998467791efd1d9b2e","urls":["bzz-raw://3220d69c62ed8c8106762c92857f24011284e8ddcfa5db4210e506b112fa1870","dweb:/ipfs/QmYoZiGsVwoJvyPMcsSste4tq93wVBgDqCZkwPY7dvyLBJ"],"license":"UNLICENSED"}},"version":1},"id":38} \ No newline at end of file +{"abi":[{"type":"function","name":"partyFlashCallback","inputs":[{"name":"loanAmounts","type":"uint256[]","internalType":"uint256[]"},{"name":"repaymentAmounts","type":"uint256[]","internalType":"uint256[]"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"partyFlashCallback(uint256[],uint256[],bytes)":"f6c10706"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"loanAmounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"repaymentAmounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"partyFlashCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IPartyFlashCallback.sol\":\"IPartyFlashCallback\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/IPartyFlashCallback.sol\":{\"keccak256\":\"0xff1d473d27c4dc75441a5f0db2d761916cce4a702f660e998467791efd1d9b2e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3220d69c62ed8c8106762c92857f24011284e8ddcfa5db4210e506b112fa1870\",\"dweb:/ipfs/QmYoZiGsVwoJvyPMcsSste4tq93wVBgDqCZkwPY7dvyLBJ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256[]","name":"loanAmounts","type":"uint256[]"},{"internalType":"uint256[]","name":"repaymentAmounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"partyFlashCallback"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IPartyFlashCallback.sol":"IPartyFlashCallback"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"src/IPartyFlashCallback.sol":{"keccak256":"0xff1d473d27c4dc75441a5f0db2d761916cce4a702f660e998467791efd1d9b2e","urls":["bzz-raw://3220d69c62ed8c8106762c92857f24011284e8ddcfa5db4210e506b112fa1870","dweb:/ipfs/QmYoZiGsVwoJvyPMcsSste4tq93wVBgDqCZkwPY7dvyLBJ"],"license":"UNLICENSED"}},"version":1},"id":37} \ No newline at end of file diff --git a/deployment/11155111/v1/out/IPartyPlanner.sol/IPartyPlanner.json b/deployment/11155111/v1/out/IPartyPlanner.sol/IPartyPlanner.json index b34312d..9d72b49 100644 --- a/deployment/11155111/v1/out/IPartyPlanner.sol/IPartyPlanner.json +++ b/deployment/11155111/v1/out/IPartyPlanner.sol/IPartyPlanner.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"getAllPools","inputs":[{"name":"offset","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"pools","type":"address[]","internalType":"contract IPartyPool[]"}],"stateMutability":"view"},{"type":"function","name":"getAllTokens","inputs":[{"name":"offset","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getPoolSupported","inputs":[{"name":"pool","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getPoolsByToken","inputs":[{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"offset","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"pools","type":"address[]","internalType":"contract IPartyPool[]"}],"stateMutability":"view"},{"type":"function","name":"mintImpl","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract PartyPoolMintImpl"}],"stateMutability":"view"},{"type":"function","name":"newPool","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"symbol","type":"string","internalType":"string"},{"name":"tokens","type":"address[]","internalType":"contract IERC20[]"},{"name":"tradeFrac","type":"int128","internalType":"int128"},{"name":"targetSlippage","type":"int128","internalType":"int128"},{"name":"swapFeePpm","type":"uint256","internalType":"uint256"},{"name":"flashFeePpm","type":"uint256","internalType":"uint256"},{"name":"stable","type":"bool","internalType":"bool"},{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"initialDeposits","type":"uint256[]","internalType":"uint256[]"},{"name":"initialLpAmount","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"pool","type":"address","internalType":"contract IPartyPool"},{"name":"lpAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"newPool","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"symbol","type":"string","internalType":"string"},{"name":"tokens","type":"address[]","internalType":"contract IERC20[]"},{"name":"kappa","type":"int128","internalType":"int128"},{"name":"swapFeePpm","type":"uint256","internalType":"uint256"},{"name":"flashFeePpm","type":"uint256","internalType":"uint256"},{"name":"stable","type":"bool","internalType":"bool"},{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"initialDeposits","type":"uint256[]","internalType":"uint256[]"},{"name":"initialLpAmount","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"pool","type":"address","internalType":"contract IPartyPool"},{"name":"lpAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"poolCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"poolsByTokenCount","inputs":[{"name":"token","type":"address","internalType":"contract IERC20"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"swapImpl","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract PartyPoolSwapImpl"}],"stateMutability":"view"},{"type":"function","name":"tokenCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"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":"PartyStarted","inputs":[{"name":"pool","type":"address","indexed":true,"internalType":"contract IPartyPool"},{"name":"name","type":"string","indexed":false,"internalType":"string"},{"name":"symbol","type":"string","indexed":false,"internalType":"string"},{"name":"tokens","type":"address[]","indexed":false,"internalType":"contract IERC20[]"}],"anonymous":false},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"getAllPools(uint256,uint256)":"a7753f09","getAllTokens(uint256,uint256)":"9a043832","getPoolSupported(address)":"f3176725","getPoolsByToken(address,uint256,uint256)":"14c870c0","mintImpl()":"f0d1ae4f","newPool(string,string,address[],int128,int128,uint256,uint256,bool,address,address,uint256[],uint256,uint256)":"a4689b24","newPool(string,string,address[],int128,uint256,uint256,bool,address,address,uint256[],uint256,uint256)":"f63772fc","owner()":"8da5cb5b","poolCount()":"f525cb68","poolsByTokenCount(address)":"f70a3a17","renounceOwnership()":"715018a6","swapImpl()":"c405e442","tokenCount()":"9f181b5e","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"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\":true,\"internalType\":\"contract IPartyPool\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"PartyStarted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"getAllPools\",\"outputs\":[{\"internalType\":\"contract IPartyPool[]\",\"name\":\"pools\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"getAllTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"getPoolsByToken\",\"outputs\":[{\"internalType\":\"contract IPartyPool[]\",\"name\":\"pools\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintImpl\",\"outputs\":[{\"internalType\":\"contract PartyPoolMintImpl\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"int128\",\"name\":\"tradeFrac\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"targetSlippage\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePpm\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flashFeePpm\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"stable\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"initialDeposits\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"initialLpAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"newPool\",\"outputs\":[{\"internalType\":\"contract IPartyPool\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"int128\",\"name\":\"kappa\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePpm\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flashFeePpm\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"stable\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"initialDeposits\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"initialLpAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"newPool\",\"outputs\":[{\"internalType\":\"contract IPartyPool\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"poolsByTokenCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"swapImpl\",\"outputs\":[{\"internalType\":\"contract PartyPoolSwapImpl\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"getAllPools(uint256,uint256)\":{\"params\":{\"limit\":\"Maximum number of items to return\",\"offset\":\"Starting index for pagination\"},\"returns\":{\"pools\":\"Array of pool addresses for the requested page\"}},\"getAllTokens(uint256,uint256)\":{\"params\":{\"limit\":\"Maximum number of items to return\",\"offset\":\"Starting index for pagination\"},\"returns\":{\"tokens\":\"Array of token addresses for the requested page\"}},\"getPoolSupported(address)\":{\"params\":{\"pool\":\"The pool address to check\"},\"returns\":{\"_0\":\"bool True if the pool is supported, false otherwise\"}},\"getPoolsByToken(address,uint256,uint256)\":{\"params\":{\"limit\":\"Maximum number of items to return\",\"offset\":\"Starting index for pagination\",\"token\":\"The token address to query pools for\"},\"returns\":{\"pools\":\"Array of pool addresses containing the specified token\"}},\"newPool(string,string,address[],int128,int128,uint256,uint256,bool,address,address,uint256[],uint256,uint256)\":{\"details\":\"Deprecated in favour of the kappa-based overload below; kept for backwards compatibility.\",\"params\":{\"deadline\":\"Reverts if nonzero and the current blocktime is later than the deadline\",\"flashFeePpm\":\"fee in parts-per-million, taken for flash loans\",\"initialDeposits\":\"amounts of each token to deposit initially\",\"name\":\"LP token name\",\"payer\":\"address that provides the initial token deposits\",\"receiver\":\"address that receives the minted LP tokens\",\"stable\":\"if true and assets.length==2, then the optimization for 2-asset stablecoin pools is activated\",\"swapFeePpm\":\"fee in parts-per-million, taken from swap input amounts before LMSR calculations\",\"symbol\":\"LP token symbol\",\"targetSlippage\":\"target slippage in 64.64 fixed-point (as used by LMSR)\",\"tokens\":\"token addresses (n)\",\"tradeFrac\":\"trade fraction in 64.64 fixed-point (as used by LMSR)\"},\"returns\":{\"lpAmount\":\"Amount of LP tokens minted to the receiver\",\"pool\":\"Address of the newly created and initialized PartyPool\"}},\"newPool(string,string,address[],int128,uint256,uint256,bool,address,address,uint256[],uint256,uint256)\":{\"params\":{\"deadline\":\"Reverts if nonzero and the current blocktime is later than the deadline\",\"flashFeePpm\":\"fee in parts-per-million, taken for flash loans\",\"initialDeposits\":\"amounts of each token to deposit initially\",\"kappa\":\"liquidity parameter \\u03ba in 64.64 fixed-point used to derive b = \\u03ba * S(q)\",\"name\":\"LP token name\",\"payer\":\"address that provides the initial token deposits\",\"receiver\":\"address that receives the minted LP tokens\",\"stable\":\"if true and assets.length==2, then the optimization for 2-asset stablecoin pools is activated\",\"swapFeePpm\":\"fee in parts-per-million, taken from swap input amounts before LMSR calculations\",\"symbol\":\"LP token symbol\",\"tokens\":\"token addresses (n)\"},\"returns\":{\"lpAmount\":\"Amount of LP tokens minted to the receiver\",\"pool\":\"Address of the newly created and initialized PartyPool\"}},\"poolCount()\":{\"returns\":{\"_0\":\"The total count of pools\"}},\"poolsByTokenCount(address)\":{\"params\":{\"token\":\"The token address to query\"},\"returns\":{\"_0\":\"The total count of pools containing the token\"}},\"tokenCount()\":{\"returns\":{\"_0\":\"The total count of unique tokens\"}}},\"title\":\"IPartyPlanner\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAllPools(uint256,uint256)\":{\"notice\":\"Retrieves a page of pool addresses\"},\"getAllTokens(uint256,uint256)\":{\"notice\":\"Retrieves a page of token addresses\"},\"getPoolSupported(address)\":{\"notice\":\"Checks if a pool is supported\"},\"getPoolsByToken(address,uint256,uint256)\":{\"notice\":\"Retrieves a page of pool addresses for a specific token\"},\"mintImpl()\":{\"notice\":\"Address of the mint implementation contract used by all pools created by this factory\"},\"newPool(string,string,address[],int128,int128,uint256,uint256,bool,address,address,uint256[],uint256,uint256)\":{\"notice\":\"Creates a new PartyPool instance and initializes it with initial deposits (legacy signature).\"},\"newPool(string,string,address[],int128,uint256,uint256,bool,address,address,uint256[],uint256,uint256)\":{\"notice\":\"Creates a new PartyPool instance and initializes it with initial deposits (kappa-based).\"},\"poolCount()\":{\"notice\":\"Returns the total number of pools created\"},\"poolsByTokenCount(address)\":{\"notice\":\"Returns the total number of pools for a specific token\"},\"swapImpl()\":{\"notice\":\"Address of the swap implementation contract used by all pools created by this factory\"},\"tokenCount()\":{\"notice\":\"Returns the total number of unique tokens\"}},\"notice\":\"Interface for factory contract for creating and tracking PartyPool instances\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IPartyPlanner.sol\":\"IPartyPlanner\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/abdk-libraries-solidity/ABDKMath64x64.sol\":{\"keccak256\":\"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97\",\"license\":\"BSD-4-Clause\",\"urls\":[\"bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7\",\"dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol\":{\"keccak256\":\"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd\",\"dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd\",\"dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168\",\"dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161\",\"dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"src/ERC20Internal.sol\":{\"keccak256\":\"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f\",\"dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk\"]},\"src/IOwnable.sol\":{\"keccak256\":\"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1\",\"dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9\"]},\"src/IPartyPlanner.sol\":{\"keccak256\":\"0x8f27d564f2c1fde267aa1fec970402e2da5b731ac97f4d5fe24f6ebab1fd03ff\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://399d21923fdbb6c3012f086c6de62bd4ea6648cf71a46e59beaad9a74d854025\",\"dweb:/ipfs/QmcS4qRFjUJ4JyeTnjDSnTzprSnrd8TTxF2gfZf2JBs1c6\"]},\"src/IPartyPool.sol\":{\"keccak256\":\"0x55d3656b1a4c75801852066b7ba871212e5e807917b3b9029349349fae39375c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://009b67ccf1d28a04a2407a05ddda8f954033b7ac70f7fd5cbedbf779e867df9f\",\"dweb:/ipfs/QmS5vQcfma6PN28Q6qQwqa7KmUKu2KST72jwF8ffsj6Bw2\"]},\"src/LMSRStabilized.sol\":{\"keccak256\":\"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3\",\"dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB\"]},\"src/NativeWrapper.sol\":{\"keccak256\":\"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238\",\"dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB\"]},\"src/OwnableInternal.sol\":{\"keccak256\":\"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca\",\"dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE\"]},\"src/PartyPoolBase.sol\":{\"keccak256\":\"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5\",\"dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5\"]},\"src/PartyPoolHelpers.sol\":{\"keccak256\":\"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5\",\"dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP\"]},\"src/PartyPoolMintImpl.sol\":{\"keccak256\":\"0xe9d9927cecd46a1f836b2c43e9d6184642b9e695c7462e5fb7c671a38aab7398\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8d821911d7982fc302929198539b27f72be100b91450c98d2e0081519f776499\",\"dweb:/ipfs/QmRChx1DPD1gKXwfD1m6aQ7pgh1aX6CvYLNX41ufdJteaJ\"]},\"src/PartyPoolSwapImpl.sol\":{\"keccak256\":\"0x71ecbd6d0fb106031baed7e4c21694ef24f0112af7d975325b98b1b0463ba5b2\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://64f8f8bae2f89ca495b9edacd012363b55e78a198f100650beb2b1238e8ef11f\",\"dweb:/ipfs/QmVfihiw9TqncuEfZKx7c6WEHiGFfRQyhtfdTGzfN7emNY\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"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":"contract IPartyPool","name":"pool","type":"address","indexed":true},{"internalType":"string","name":"name","type":"string","indexed":false},{"internalType":"string","name":"symbol","type":"string","indexed":false},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]","indexed":false}],"type":"event","name":"PartyStarted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"view","type":"function","name":"getAllPools","outputs":[{"internalType":"contract IPartyPool[]","name":"pools","type":"address[]"}]},{"inputs":[{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"view","type":"function","name":"getAllTokens","outputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"stateMutability":"view","type":"function","name":"getPoolSupported","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPoolsByToken","outputs":[{"internalType":"contract IPartyPool[]","name":"pools","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mintImpl","outputs":[{"internalType":"contract PartyPoolMintImpl","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"int128","name":"tradeFrac","type":"int128"},{"internalType":"int128","name":"targetSlippage","type":"int128"},{"internalType":"uint256","name":"swapFeePpm","type":"uint256"},{"internalType":"uint256","name":"flashFeePpm","type":"uint256"},{"internalType":"bool","name":"stable","type":"bool"},{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256[]","name":"initialDeposits","type":"uint256[]"},{"internalType":"uint256","name":"initialLpAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"newPool","outputs":[{"internalType":"contract IPartyPool","name":"pool","type":"address"},{"internalType":"uint256","name":"lpAmount","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"int128","name":"kappa","type":"int128"},{"internalType":"uint256","name":"swapFeePpm","type":"uint256"},{"internalType":"uint256","name":"flashFeePpm","type":"uint256"},{"internalType":"bool","name":"stable","type":"bool"},{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256[]","name":"initialDeposits","type":"uint256[]"},{"internalType":"uint256","name":"initialLpAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"newPool","outputs":[{"internalType":"contract IPartyPool","name":"pool","type":"address"},{"internalType":"uint256","name":"lpAmount","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"poolCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"poolsByTokenCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"swapImpl","outputs":[{"internalType":"contract PartyPoolSwapImpl","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"tokenCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"getAllPools(uint256,uint256)":{"params":{"limit":"Maximum number of items to return","offset":"Starting index for pagination"},"returns":{"pools":"Array of pool addresses for the requested page"}},"getAllTokens(uint256,uint256)":{"params":{"limit":"Maximum number of items to return","offset":"Starting index for pagination"},"returns":{"tokens":"Array of token addresses for the requested page"}},"getPoolSupported(address)":{"params":{"pool":"The pool address to check"},"returns":{"_0":"bool True if the pool is supported, false otherwise"}},"getPoolsByToken(address,uint256,uint256)":{"params":{"limit":"Maximum number of items to return","offset":"Starting index for pagination","token":"The token address to query pools for"},"returns":{"pools":"Array of pool addresses containing the specified token"}},"newPool(string,string,address[],int128,int128,uint256,uint256,bool,address,address,uint256[],uint256,uint256)":{"details":"Deprecated in favour of the kappa-based overload below; kept for backwards compatibility.","params":{"deadline":"Reverts if nonzero and the current blocktime is later than the deadline","flashFeePpm":"fee in parts-per-million, taken for flash loans","initialDeposits":"amounts of each token to deposit initially","name":"LP token name","payer":"address that provides the initial token deposits","receiver":"address that receives the minted LP tokens","stable":"if true and assets.length==2, then the optimization for 2-asset stablecoin pools is activated","swapFeePpm":"fee in parts-per-million, taken from swap input amounts before LMSR calculations","symbol":"LP token symbol","targetSlippage":"target slippage in 64.64 fixed-point (as used by LMSR)","tokens":"token addresses (n)","tradeFrac":"trade fraction in 64.64 fixed-point (as used by LMSR)"},"returns":{"lpAmount":"Amount of LP tokens minted to the receiver","pool":"Address of the newly created and initialized PartyPool"}},"newPool(string,string,address[],int128,uint256,uint256,bool,address,address,uint256[],uint256,uint256)":{"params":{"deadline":"Reverts if nonzero and the current blocktime is later than the deadline","flashFeePpm":"fee in parts-per-million, taken for flash loans","initialDeposits":"amounts of each token to deposit initially","kappa":"liquidity parameter κ in 64.64 fixed-point used to derive b = κ * S(q)","name":"LP token name","payer":"address that provides the initial token deposits","receiver":"address that receives the minted LP tokens","stable":"if true and assets.length==2, then the optimization for 2-asset stablecoin pools is activated","swapFeePpm":"fee in parts-per-million, taken from swap input amounts before LMSR calculations","symbol":"LP token symbol","tokens":"token addresses (n)"},"returns":{"lpAmount":"Amount of LP tokens minted to the receiver","pool":"Address of the newly created and initialized PartyPool"}},"poolCount()":{"returns":{"_0":"The total count of pools"}},"poolsByTokenCount(address)":{"params":{"token":"The token address to query"},"returns":{"_0":"The total count of pools containing the token"}},"tokenCount()":{"returns":{"_0":"The total count of unique tokens"}}},"version":1},"userdoc":{"kind":"user","methods":{"getAllPools(uint256,uint256)":{"notice":"Retrieves a page of pool addresses"},"getAllTokens(uint256,uint256)":{"notice":"Retrieves a page of token addresses"},"getPoolSupported(address)":{"notice":"Checks if a pool is supported"},"getPoolsByToken(address,uint256,uint256)":{"notice":"Retrieves a page of pool addresses for a specific token"},"mintImpl()":{"notice":"Address of the mint implementation contract used by all pools created by this factory"},"newPool(string,string,address[],int128,int128,uint256,uint256,bool,address,address,uint256[],uint256,uint256)":{"notice":"Creates a new PartyPool instance and initializes it with initial deposits (legacy signature)."},"newPool(string,string,address[],int128,uint256,uint256,bool,address,address,uint256[],uint256,uint256)":{"notice":"Creates a new PartyPool instance and initializes it with initial deposits (kappa-based)."},"poolCount()":{"notice":"Returns the total number of pools created"},"poolsByTokenCount(address)":{"notice":"Returns the total number of pools for a specific token"},"swapImpl()":{"notice":"Address of the swap implementation contract used by all pools created by this factory"},"tokenCount()":{"notice":"Returns the total number of unique tokens"}},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IPartyPlanner.sol":"IPartyPlanner"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/abdk-libraries-solidity/ABDKMath64x64.sol":{"keccak256":"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97","urls":["bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7","dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN"],"license":"BSD-4-Clause"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d","urls":["bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100","dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc","urls":["bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037","dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44","urls":["bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d","dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol":{"keccak256":"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e","urls":["bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd","dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86","urls":["bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd","dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9","urls":["bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168","dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol":{"keccak256":"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0","urls":["bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161","dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"},"src/ERC20Internal.sol":{"keccak256":"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36","urls":["bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f","dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk"],"license":"UNLICENSED"},"src/IOwnable.sol":{"keccak256":"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990","urls":["bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1","dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9"],"license":"MIT"},"src/IPartyPlanner.sol":{"keccak256":"0x8f27d564f2c1fde267aa1fec970402e2da5b731ac97f4d5fe24f6ebab1fd03ff","urls":["bzz-raw://399d21923fdbb6c3012f086c6de62bd4ea6648cf71a46e59beaad9a74d854025","dweb:/ipfs/QmcS4qRFjUJ4JyeTnjDSnTzprSnrd8TTxF2gfZf2JBs1c6"],"license":"UNLICENSED"},"src/IPartyPool.sol":{"keccak256":"0x55d3656b1a4c75801852066b7ba871212e5e807917b3b9029349349fae39375c","urls":["bzz-raw://009b67ccf1d28a04a2407a05ddda8f954033b7ac70f7fd5cbedbf779e867df9f","dweb:/ipfs/QmS5vQcfma6PN28Q6qQwqa7KmUKu2KST72jwF8ffsj6Bw2"],"license":"UNLICENSED"},"src/LMSRStabilized.sol":{"keccak256":"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b","urls":["bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3","dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB"],"license":"UNLICENSED"},"src/NativeWrapper.sol":{"keccak256":"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579","urls":["bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238","dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB"],"license":"UNLICENSED"},"src/OwnableInternal.sol":{"keccak256":"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581","urls":["bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca","dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE"],"license":"MIT"},"src/PartyPoolBase.sol":{"keccak256":"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999","urls":["bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5","dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5"],"license":"UNLICENSED"},"src/PartyPoolHelpers.sol":{"keccak256":"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c","urls":["bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5","dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP"],"license":"UNLICENSED"},"src/PartyPoolMintImpl.sol":{"keccak256":"0xe9d9927cecd46a1f836b2c43e9d6184642b9e695c7462e5fb7c671a38aab7398","urls":["bzz-raw://8d821911d7982fc302929198539b27f72be100b91450c98d2e0081519f776499","dweb:/ipfs/QmRChx1DPD1gKXwfD1m6aQ7pgh1aX6CvYLNX41ufdJteaJ"],"license":"UNLICENSED"},"src/PartyPoolSwapImpl.sol":{"keccak256":"0x71ecbd6d0fb106031baed7e4c21694ef24f0112af7d975325b98b1b0463ba5b2","urls":["bzz-raw://64f8f8bae2f89ca495b9edacd012363b55e78a198f100650beb2b1238e8ef11f","dweb:/ipfs/QmVfihiw9TqncuEfZKx7c6WEHiGFfRQyhtfdTGzfN7emNY"],"license":"UNLICENSED"}},"version":1},"id":40} \ No newline at end of file +{"abi":[{"type":"function","name":"getAllPools","inputs":[{"name":"offset","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"pools","type":"address[]","internalType":"contract IPartyPool[]"}],"stateMutability":"view"},{"type":"function","name":"getAllTokens","inputs":[{"name":"offset","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getPoolSupported","inputs":[{"name":"pool","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getPoolsByToken","inputs":[{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"offset","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"pools","type":"address[]","internalType":"contract IPartyPool[]"}],"stateMutability":"view"},{"type":"function","name":"mintImpl","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract PartyPoolMintImpl"}],"stateMutability":"view"},{"type":"function","name":"newPool","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"symbol","type":"string","internalType":"string"},{"name":"tokens","type":"address[]","internalType":"contract IERC20[]"},{"name":"tradeFrac","type":"int128","internalType":"int128"},{"name":"targetSlippage","type":"int128","internalType":"int128"},{"name":"swapFeePpm","type":"uint256","internalType":"uint256"},{"name":"flashFeePpm","type":"uint256","internalType":"uint256"},{"name":"stable","type":"bool","internalType":"bool"},{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"initialDeposits","type":"uint256[]","internalType":"uint256[]"},{"name":"initialLpAmount","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"pool","type":"address","internalType":"contract IPartyPool"},{"name":"lpAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"newPool","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"symbol","type":"string","internalType":"string"},{"name":"tokens","type":"address[]","internalType":"contract IERC20[]"},{"name":"kappa","type":"int128","internalType":"int128"},{"name":"swapFeePpm","type":"uint256","internalType":"uint256"},{"name":"flashFeePpm","type":"uint256","internalType":"uint256"},{"name":"stable","type":"bool","internalType":"bool"},{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"initialDeposits","type":"uint256[]","internalType":"uint256[]"},{"name":"initialLpAmount","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"pool","type":"address","internalType":"contract IPartyPool"},{"name":"lpAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"poolCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"poolsByTokenCount","inputs":[{"name":"token","type":"address","internalType":"contract IERC20"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"swapImpl","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract PartyPoolSwapImpl"}],"stateMutability":"view"},{"type":"function","name":"tokenCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"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":"PartyStarted","inputs":[{"name":"pool","type":"address","indexed":true,"internalType":"contract IPartyPool"},{"name":"name","type":"string","indexed":false,"internalType":"string"},{"name":"symbol","type":"string","indexed":false,"internalType":"string"},{"name":"tokens","type":"address[]","indexed":false,"internalType":"contract IERC20[]"}],"anonymous":false},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"getAllPools(uint256,uint256)":"a7753f09","getAllTokens(uint256,uint256)":"9a043832","getPoolSupported(address)":"f3176725","getPoolsByToken(address,uint256,uint256)":"14c870c0","mintImpl()":"f0d1ae4f","newPool(string,string,address[],int128,int128,uint256,uint256,bool,address,address,uint256[],uint256,uint256)":"a4689b24","newPool(string,string,address[],int128,uint256,uint256,bool,address,address,uint256[],uint256,uint256)":"f63772fc","owner()":"8da5cb5b","poolCount()":"f525cb68","poolsByTokenCount(address)":"f70a3a17","renounceOwnership()":"715018a6","swapImpl()":"c405e442","tokenCount()":"9f181b5e","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"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\":true,\"internalType\":\"contract IPartyPool\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"PartyStarted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"getAllPools\",\"outputs\":[{\"internalType\":\"contract IPartyPool[]\",\"name\":\"pools\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"getAllTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"getPoolsByToken\",\"outputs\":[{\"internalType\":\"contract IPartyPool[]\",\"name\":\"pools\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintImpl\",\"outputs\":[{\"internalType\":\"contract PartyPoolMintImpl\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"int128\",\"name\":\"tradeFrac\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"targetSlippage\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePpm\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flashFeePpm\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"stable\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"initialDeposits\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"initialLpAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"newPool\",\"outputs\":[{\"internalType\":\"contract IPartyPool\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"int128\",\"name\":\"kappa\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePpm\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flashFeePpm\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"stable\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"initialDeposits\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"initialLpAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"newPool\",\"outputs\":[{\"internalType\":\"contract IPartyPool\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"poolsByTokenCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"swapImpl\",\"outputs\":[{\"internalType\":\"contract PartyPoolSwapImpl\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"getAllPools(uint256,uint256)\":{\"params\":{\"limit\":\"Maximum number of items to return\",\"offset\":\"Starting index for pagination\"},\"returns\":{\"pools\":\"Array of pool addresses for the requested page\"}},\"getAllTokens(uint256,uint256)\":{\"params\":{\"limit\":\"Maximum number of items to return\",\"offset\":\"Starting index for pagination\"},\"returns\":{\"tokens\":\"Array of token addresses for the requested page\"}},\"getPoolSupported(address)\":{\"params\":{\"pool\":\"The pool address to check\"},\"returns\":{\"_0\":\"bool True if the pool is supported, false otherwise\"}},\"getPoolsByToken(address,uint256,uint256)\":{\"params\":{\"limit\":\"Maximum number of items to return\",\"offset\":\"Starting index for pagination\",\"token\":\"The token address to query pools for\"},\"returns\":{\"pools\":\"Array of pool addresses containing the specified token\"}},\"newPool(string,string,address[],int128,int128,uint256,uint256,bool,address,address,uint256[],uint256,uint256)\":{\"details\":\"Deprecated in favour of the kappa-based overload below; kept for backwards compatibility.\",\"params\":{\"deadline\":\"Reverts if nonzero and the current blocktime is later than the deadline\",\"flashFeePpm\":\"fee in parts-per-million, taken for flash loans\",\"initialDeposits\":\"amounts of each token to deposit initially\",\"name\":\"LP token name\",\"payer\":\"address that provides the initial token deposits\",\"receiver\":\"address that receives the minted LP tokens\",\"stable\":\"if true and assets.length==2, then the optimization for 2-asset stablecoin pools is activated\",\"swapFeePpm\":\"fee in parts-per-million, taken from swap input amounts before LMSR calculations\",\"symbol\":\"LP token symbol\",\"targetSlippage\":\"target slippage in 64.64 fixed-point (as used by LMSR)\",\"tokens\":\"token addresses (n)\",\"tradeFrac\":\"trade fraction in 64.64 fixed-point (as used by LMSR)\"},\"returns\":{\"lpAmount\":\"Amount of LP tokens minted to the receiver\",\"pool\":\"Address of the newly created and initialized PartyPool\"}},\"newPool(string,string,address[],int128,uint256,uint256,bool,address,address,uint256[],uint256,uint256)\":{\"params\":{\"deadline\":\"Reverts if nonzero and the current blocktime is later than the deadline\",\"flashFeePpm\":\"fee in parts-per-million, taken for flash loans\",\"initialDeposits\":\"amounts of each token to deposit initially\",\"kappa\":\"liquidity parameter \\u03ba in 64.64 fixed-point used to derive b = \\u03ba * S(q)\",\"name\":\"LP token name\",\"payer\":\"address that provides the initial token deposits\",\"receiver\":\"address that receives the minted LP tokens\",\"stable\":\"if true and assets.length==2, then the optimization for 2-asset stablecoin pools is activated\",\"swapFeePpm\":\"fee in parts-per-million, taken from swap input amounts before LMSR calculations\",\"symbol\":\"LP token symbol\",\"tokens\":\"token addresses (n)\"},\"returns\":{\"lpAmount\":\"Amount of LP tokens minted to the receiver\",\"pool\":\"Address of the newly created and initialized PartyPool\"}},\"poolCount()\":{\"returns\":{\"_0\":\"The total count of pools\"}},\"poolsByTokenCount(address)\":{\"params\":{\"token\":\"The token address to query\"},\"returns\":{\"_0\":\"The total count of pools containing the token\"}},\"tokenCount()\":{\"returns\":{\"_0\":\"The total count of unique tokens\"}}},\"title\":\"IPartyPlanner\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAllPools(uint256,uint256)\":{\"notice\":\"Retrieves a page of pool addresses\"},\"getAllTokens(uint256,uint256)\":{\"notice\":\"Retrieves a page of token addresses\"},\"getPoolSupported(address)\":{\"notice\":\"Checks if a pool is supported\"},\"getPoolsByToken(address,uint256,uint256)\":{\"notice\":\"Retrieves a page of pool addresses for a specific token\"},\"mintImpl()\":{\"notice\":\"Address of the mint implementation contract used by all pools created by this factory\"},\"newPool(string,string,address[],int128,int128,uint256,uint256,bool,address,address,uint256[],uint256,uint256)\":{\"notice\":\"Creates a new PartyPool instance and initializes it with initial deposits (legacy signature).\"},\"newPool(string,string,address[],int128,uint256,uint256,bool,address,address,uint256[],uint256,uint256)\":{\"notice\":\"Creates a new PartyPool instance and initializes it with initial deposits (kappa-based).\"},\"poolCount()\":{\"notice\":\"Returns the total number of pools created\"},\"poolsByTokenCount(address)\":{\"notice\":\"Returns the total number of pools for a specific token\"},\"swapImpl()\":{\"notice\":\"Address of the swap implementation contract used by all pools created by this factory\"},\"tokenCount()\":{\"notice\":\"Returns the total number of unique tokens\"}},\"notice\":\"Interface for factory contract for creating and tracking PartyPool instances\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IPartyPlanner.sol\":\"IPartyPlanner\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/abdk-libraries-solidity/ABDKMath64x64.sol\":{\"keccak256\":\"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97\",\"license\":\"BSD-4-Clause\",\"urls\":[\"bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7\",\"dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol\":{\"keccak256\":\"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd\",\"dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd\",\"dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168\",\"dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161\",\"dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"src/ERC20Internal.sol\":{\"keccak256\":\"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f\",\"dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk\"]},\"src/IOwnable.sol\":{\"keccak256\":\"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1\",\"dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9\"]},\"src/IPartyPlanner.sol\":{\"keccak256\":\"0x8f27d564f2c1fde267aa1fec970402e2da5b731ac97f4d5fe24f6ebab1fd03ff\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://399d21923fdbb6c3012f086c6de62bd4ea6648cf71a46e59beaad9a74d854025\",\"dweb:/ipfs/QmcS4qRFjUJ4JyeTnjDSnTzprSnrd8TTxF2gfZf2JBs1c6\"]},\"src/IPartyPool.sol\":{\"keccak256\":\"0x74b9531bdf2200f256cac6c2cd54c0efad7c1bdfbe694ee910df75448ffe93f4\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://aadd161d7e197b48e6be4198b0f4f81a10016b9904d024e0a361bf2d7f941475\",\"dweb:/ipfs/QmYuGyPZCigmt8va11oAHXPTpHFyF3d7ARDNacyr2jsDfa\"]},\"src/LMSRStabilized.sol\":{\"keccak256\":\"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3\",\"dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB\"]},\"src/NativeWrapper.sol\":{\"keccak256\":\"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238\",\"dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB\"]},\"src/OwnableInternal.sol\":{\"keccak256\":\"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca\",\"dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE\"]},\"src/PartyPoolBase.sol\":{\"keccak256\":\"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5\",\"dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5\"]},\"src/PartyPoolHelpers.sol\":{\"keccak256\":\"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5\",\"dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP\"]},\"src/PartyPoolMintImpl.sol\":{\"keccak256\":\"0xe9d9927cecd46a1f836b2c43e9d6184642b9e695c7462e5fb7c671a38aab7398\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8d821911d7982fc302929198539b27f72be100b91450c98d2e0081519f776499\",\"dweb:/ipfs/QmRChx1DPD1gKXwfD1m6aQ7pgh1aX6CvYLNX41ufdJteaJ\"]},\"src/PartyPoolSwapImpl.sol\":{\"keccak256\":\"0x71ecbd6d0fb106031baed7e4c21694ef24f0112af7d975325b98b1b0463ba5b2\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://64f8f8bae2f89ca495b9edacd012363b55e78a198f100650beb2b1238e8ef11f\",\"dweb:/ipfs/QmVfihiw9TqncuEfZKx7c6WEHiGFfRQyhtfdTGzfN7emNY\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"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":"contract IPartyPool","name":"pool","type":"address","indexed":true},{"internalType":"string","name":"name","type":"string","indexed":false},{"internalType":"string","name":"symbol","type":"string","indexed":false},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]","indexed":false}],"type":"event","name":"PartyStarted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"view","type":"function","name":"getAllPools","outputs":[{"internalType":"contract IPartyPool[]","name":"pools","type":"address[]"}]},{"inputs":[{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"view","type":"function","name":"getAllTokens","outputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"stateMutability":"view","type":"function","name":"getPoolSupported","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPoolsByToken","outputs":[{"internalType":"contract IPartyPool[]","name":"pools","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mintImpl","outputs":[{"internalType":"contract PartyPoolMintImpl","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"int128","name":"tradeFrac","type":"int128"},{"internalType":"int128","name":"targetSlippage","type":"int128"},{"internalType":"uint256","name":"swapFeePpm","type":"uint256"},{"internalType":"uint256","name":"flashFeePpm","type":"uint256"},{"internalType":"bool","name":"stable","type":"bool"},{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256[]","name":"initialDeposits","type":"uint256[]"},{"internalType":"uint256","name":"initialLpAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"newPool","outputs":[{"internalType":"contract IPartyPool","name":"pool","type":"address"},{"internalType":"uint256","name":"lpAmount","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"int128","name":"kappa","type":"int128"},{"internalType":"uint256","name":"swapFeePpm","type":"uint256"},{"internalType":"uint256","name":"flashFeePpm","type":"uint256"},{"internalType":"bool","name":"stable","type":"bool"},{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256[]","name":"initialDeposits","type":"uint256[]"},{"internalType":"uint256","name":"initialLpAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"newPool","outputs":[{"internalType":"contract IPartyPool","name":"pool","type":"address"},{"internalType":"uint256","name":"lpAmount","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"poolCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"poolsByTokenCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"swapImpl","outputs":[{"internalType":"contract PartyPoolSwapImpl","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"tokenCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"getAllPools(uint256,uint256)":{"params":{"limit":"Maximum number of items to return","offset":"Starting index for pagination"},"returns":{"pools":"Array of pool addresses for the requested page"}},"getAllTokens(uint256,uint256)":{"params":{"limit":"Maximum number of items to return","offset":"Starting index for pagination"},"returns":{"tokens":"Array of token addresses for the requested page"}},"getPoolSupported(address)":{"params":{"pool":"The pool address to check"},"returns":{"_0":"bool True if the pool is supported, false otherwise"}},"getPoolsByToken(address,uint256,uint256)":{"params":{"limit":"Maximum number of items to return","offset":"Starting index for pagination","token":"The token address to query pools for"},"returns":{"pools":"Array of pool addresses containing the specified token"}},"newPool(string,string,address[],int128,int128,uint256,uint256,bool,address,address,uint256[],uint256,uint256)":{"details":"Deprecated in favour of the kappa-based overload below; kept for backwards compatibility.","params":{"deadline":"Reverts if nonzero and the current blocktime is later than the deadline","flashFeePpm":"fee in parts-per-million, taken for flash loans","initialDeposits":"amounts of each token to deposit initially","name":"LP token name","payer":"address that provides the initial token deposits","receiver":"address that receives the minted LP tokens","stable":"if true and assets.length==2, then the optimization for 2-asset stablecoin pools is activated","swapFeePpm":"fee in parts-per-million, taken from swap input amounts before LMSR calculations","symbol":"LP token symbol","targetSlippage":"target slippage in 64.64 fixed-point (as used by LMSR)","tokens":"token addresses (n)","tradeFrac":"trade fraction in 64.64 fixed-point (as used by LMSR)"},"returns":{"lpAmount":"Amount of LP tokens minted to the receiver","pool":"Address of the newly created and initialized PartyPool"}},"newPool(string,string,address[],int128,uint256,uint256,bool,address,address,uint256[],uint256,uint256)":{"params":{"deadline":"Reverts if nonzero and the current blocktime is later than the deadline","flashFeePpm":"fee in parts-per-million, taken for flash loans","initialDeposits":"amounts of each token to deposit initially","kappa":"liquidity parameter κ in 64.64 fixed-point used to derive b = κ * S(q)","name":"LP token name","payer":"address that provides the initial token deposits","receiver":"address that receives the minted LP tokens","stable":"if true and assets.length==2, then the optimization for 2-asset stablecoin pools is activated","swapFeePpm":"fee in parts-per-million, taken from swap input amounts before LMSR calculations","symbol":"LP token symbol","tokens":"token addresses (n)"},"returns":{"lpAmount":"Amount of LP tokens minted to the receiver","pool":"Address of the newly created and initialized PartyPool"}},"poolCount()":{"returns":{"_0":"The total count of pools"}},"poolsByTokenCount(address)":{"params":{"token":"The token address to query"},"returns":{"_0":"The total count of pools containing the token"}},"tokenCount()":{"returns":{"_0":"The total count of unique tokens"}}},"version":1},"userdoc":{"kind":"user","methods":{"getAllPools(uint256,uint256)":{"notice":"Retrieves a page of pool addresses"},"getAllTokens(uint256,uint256)":{"notice":"Retrieves a page of token addresses"},"getPoolSupported(address)":{"notice":"Checks if a pool is supported"},"getPoolsByToken(address,uint256,uint256)":{"notice":"Retrieves a page of pool addresses for a specific token"},"mintImpl()":{"notice":"Address of the mint implementation contract used by all pools created by this factory"},"newPool(string,string,address[],int128,int128,uint256,uint256,bool,address,address,uint256[],uint256,uint256)":{"notice":"Creates a new PartyPool instance and initializes it with initial deposits (legacy signature)."},"newPool(string,string,address[],int128,uint256,uint256,bool,address,address,uint256[],uint256,uint256)":{"notice":"Creates a new PartyPool instance and initializes it with initial deposits (kappa-based)."},"poolCount()":{"notice":"Returns the total number of pools created"},"poolsByTokenCount(address)":{"notice":"Returns the total number of pools for a specific token"},"swapImpl()":{"notice":"Address of the swap implementation contract used by all pools created by this factory"},"tokenCount()":{"notice":"Returns the total number of unique tokens"}},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IPartyPlanner.sol":"IPartyPlanner"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/abdk-libraries-solidity/ABDKMath64x64.sol":{"keccak256":"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97","urls":["bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7","dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN"],"license":"BSD-4-Clause"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d","urls":["bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100","dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc","urls":["bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037","dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44","urls":["bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d","dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol":{"keccak256":"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e","urls":["bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd","dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86","urls":["bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd","dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9","urls":["bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168","dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol":{"keccak256":"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0","urls":["bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161","dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"},"src/ERC20Internal.sol":{"keccak256":"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36","urls":["bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f","dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk"],"license":"UNLICENSED"},"src/IOwnable.sol":{"keccak256":"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990","urls":["bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1","dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9"],"license":"MIT"},"src/IPartyPlanner.sol":{"keccak256":"0x8f27d564f2c1fde267aa1fec970402e2da5b731ac97f4d5fe24f6ebab1fd03ff","urls":["bzz-raw://399d21923fdbb6c3012f086c6de62bd4ea6648cf71a46e59beaad9a74d854025","dweb:/ipfs/QmcS4qRFjUJ4JyeTnjDSnTzprSnrd8TTxF2gfZf2JBs1c6"],"license":"UNLICENSED"},"src/IPartyPool.sol":{"keccak256":"0x74b9531bdf2200f256cac6c2cd54c0efad7c1bdfbe694ee910df75448ffe93f4","urls":["bzz-raw://aadd161d7e197b48e6be4198b0f4f81a10016b9904d024e0a361bf2d7f941475","dweb:/ipfs/QmYuGyPZCigmt8va11oAHXPTpHFyF3d7ARDNacyr2jsDfa"],"license":"UNLICENSED"},"src/LMSRStabilized.sol":{"keccak256":"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b","urls":["bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3","dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB"],"license":"UNLICENSED"},"src/NativeWrapper.sol":{"keccak256":"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579","urls":["bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238","dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB"],"license":"UNLICENSED"},"src/OwnableInternal.sol":{"keccak256":"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581","urls":["bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca","dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE"],"license":"MIT"},"src/PartyPoolBase.sol":{"keccak256":"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999","urls":["bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5","dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5"],"license":"UNLICENSED"},"src/PartyPoolHelpers.sol":{"keccak256":"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c","urls":["bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5","dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP"],"license":"UNLICENSED"},"src/PartyPoolMintImpl.sol":{"keccak256":"0xe9d9927cecd46a1f836b2c43e9d6184642b9e695c7462e5fb7c671a38aab7398","urls":["bzz-raw://8d821911d7982fc302929198539b27f72be100b91450c98d2e0081519f776499","dweb:/ipfs/QmRChx1DPD1gKXwfD1m6aQ7pgh1aX6CvYLNX41ufdJteaJ"],"license":"UNLICENSED"},"src/PartyPoolSwapImpl.sol":{"keccak256":"0x71ecbd6d0fb106031baed7e4c21694ef24f0112af7d975325b98b1b0463ba5b2","urls":["bzz-raw://64f8f8bae2f89ca495b9edacd012363b55e78a198f100650beb2b1238e8ef11f","dweb:/ipfs/QmVfihiw9TqncuEfZKx7c6WEHiGFfRQyhtfdTGzfN7emNY"],"license":"UNLICENSED"}},"version":1},"id":39} \ No newline at end of file diff --git a/deployment/11155111/v1/out/IPartyPool.sol/IPartyPool.json b/deployment/11155111/v1/out/IPartyPool.sol/IPartyPool.json index f7892e6..3c8a867 100644 --- a/deployment/11155111/v1/out/IPartyPool.sol/IPartyPool.json +++ b/deployment/11155111/v1/out/IPartyPool.sol/IPartyPool.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"LMSR","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct LMSRStabilized.State","components":[{"name":"kappa","type":"int128","internalType":"int128"},{"name":"qInternal","type":"int128[]","internalType":"int128[]"}]}],"stateMutability":"view"},{"type":"function","name":"allProtocolFeesOwed","inputs":[],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"allTokens","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"contract IERC20[]"}],"stateMutability":"view"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"lpAmount","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"unwrap","type":"bool","internalType":"bool"}],"outputs":[{"name":"withdrawAmounts","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"burnSwap","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"lpAmount","type":"uint256","internalType":"uint256"},{"name":"outputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"unwrap","type":"bool","internalType":"bool"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"outFee","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"collectProtocolFees","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"denominators","inputs":[],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"fee","inputs":[{"name":"i","type":"uint256","internalType":"uint256"},{"name":"j","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"fees","inputs":[],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"flashFeePpm","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"flashLoan","inputs":[{"name":"receiver","type":"address","internalType":"contract IERC3156FlashBorrower"},{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"getToken","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"initialMint","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"lpTokens","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"lpMinted","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"kappa","inputs":[],"outputs":[{"name":"","type":"int128","internalType":"int128"}],"stateMutability":"view"},{"type":"function","name":"kill","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"killed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"lpTokenAmount","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"lpMinted","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"numTokens","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":"protocolFeeAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"protocolFeePpm","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"swap","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"selector","type":"bytes4","internalType":"bytes4"},{"name":"receiver","type":"address","internalType":"address"},{"name":"inputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"outputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"maxAmountIn","type":"uint256","internalType":"uint256"},{"name":"limitPrice","type":"int128","internalType":"int128"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"unwrap","type":"bool","internalType":"bool"}],"outputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"inFee","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"swapAmounts","inputs":[{"name":"inputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"outputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"maxAmountIn","type":"uint256","internalType":"uint256"},{"name":"limitPrice","type":"int128","internalType":"int128"}],"outputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"inFee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"swapMint","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"inputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"maxAmountIn","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountInUsed","type":"uint256","internalType":"uint256"},{"name":"lpMinted","type":"uint256","internalType":"uint256"},{"name":"inFee","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"swapToLimit","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"inputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"outputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"limitPrice","type":"int128","internalType":"int128"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"unwrap","type":"bool","internalType":"bool"}],"outputs":[{"name":"amountInUsed","type":"uint256","internalType":"uint256"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"inFee","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"wrapperToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract NativeWrapper"}],"stateMutability":"view"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Burn","inputs":[{"name":"payer","type":"address","indexed":false,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"amounts","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"lpBurned","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BurnSwap","inputs":[{"name":"payer","type":"address","indexed":true,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"tokenOut","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lpFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Flash","inputs":[{"name":"initiator","type":"address","indexed":true,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"contract IERC3156FlashBorrower"},{"name":"token","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lpFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Killed","inputs":[],"anonymous":false},{"type":"event","name":"Mint","inputs":[{"name":"payer","type":"address","indexed":false,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"amounts","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"lpMinted","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":"ProtocolFeesCollected","inputs":[],"anonymous":false},{"type":"event","name":"Swap","inputs":[{"name":"payer","type":"address","indexed":false,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"tokenIn","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"tokenOut","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lpFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SwapMint","inputs":[{"name":"payer","type":"address","indexed":true,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"tokenIn","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lpFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"LMSR()":"476e44b6","allProtocolFeesOwed()":"017504b6","allTokens()":"6ff97f1d","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(address,address,uint256,uint256,bool)":"6863f5bc","burnSwap(address,address,uint256,uint256,uint256,bool)":"491e7998","collectProtocolFees()":"a1af5b9a","decimals()":"313ce567","denominators()":"017cf661","fee(uint256,uint256)":"939f5ea4","fees()":"9af1d35a","flashFeePpm()":"31596a6a","flashLoan(address,address,uint256,bytes)":"5cffe9de","getToken(uint256)":"e4b50cb8","initialMint(address,uint256)":"6d8d0ff3","kappa()":"6bba3f2f","kill()":"41c0e1b5","killed()":"1f3a0e41","mint(address,address,uint256,uint256)":"b3f1c93d","name()":"06fdde03","numTokens()":"8e499bcf","owner()":"8da5cb5b","protocolFeeAddress()":"cce516b7","protocolFeePpm()":"6b4082d1","renounceOwnership()":"715018a6","swap(address,bytes4,address,uint256,uint256,uint256,int128,uint256,bool)":"0eeee627","swapAmounts(uint256,uint256,uint256,int128)":"d516b8c6","swapMint(address,address,uint256,uint256,uint256)":"cb717f3a","swapToLimit(address,address,uint256,uint256,int128,uint256,bool)":"79a68d53","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b","wrapperToken()":"0d246214"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpBurned\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFee\",\"type\":\"uint256\"}],\"name\":\"BurnSwap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC3156FlashBorrower\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFee\",\"type\":\"uint256\"}],\"name\":\"Flash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Killed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpMinted\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"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\":[],\"name\":\"ProtocolFeesCollected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFee\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFee\",\"type\":\"uint256\"}],\"name\":\"SwapMint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"LMSR\",\"outputs\":[{\"components\":[{\"internalType\":\"int128\",\"name\":\"kappa\",\"type\":\"int128\"},{\"internalType\":\"int128[]\",\"name\":\"qInternal\",\"type\":\"int128[]\"}],\"internalType\":\"struct LMSRStabilized.State\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allProtocolFeesOwed\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allTokens\",\"outputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"withdrawAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"name\":\"burnSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outFee\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectProtocolFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"denominators\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"j\",\"type\":\"uint256\"}],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fees\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"flashFeePpm\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC3156FlashBorrower\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flashLoan\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpTokens\",\"type\":\"uint256\"}],\"name\":\"initialMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lpMinted\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kappa\",\"outputs\":[{\"internalType\":\"int128\",\"name\":\"\",\"type\":\"int128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kill\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpTokenAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lpMinted\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"numTokens\",\"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\":\"protocolFeeAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolFeePpm\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"int128\",\"name\":\"limitPrice\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inFee\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"inputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"int128\",\"name\":\"limitPrice\",\"type\":\"int128\"}],\"name\":\"swapAmounts\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountInUsed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lpMinted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inFee\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"int128\",\"name\":\"limitPrice\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"name\":\"swapToLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountInUsed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inFee\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wrapperToken\",\"outputs\":[{\"internalType\":\"contract NativeWrapper\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"The contract stores per-token uint \\\"_bases\\\" used to scale token units into the internal Q64.64 representation used by the LMSR library. Cached on-chain uint balances are kept to reduce balanceOf calls. The contract uses ceiling/floor rules described in function comments to bias rounding in favor of the pool (i.e., floor outputs to users, ceil inputs/fees where appropriate).\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"ProtocolFeesCollected()\":{\"details\":\"After collection, the protocolFee accounting array will be zeroed out.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"burn(address,address,uint256,uint256,bool)\":{\"details\":\"This function forwards the call to the burn implementation via delegatecall\",\"params\":{\"deadline\":\"timestamp after which the transaction will revert. Pass 0 to ignore.\",\"lpAmount\":\"amount of LP tokens to burn (proportional withdrawal)\",\"payer\":\"address that provides the LP tokens to burn\",\"receiver\":\"address that receives the withdrawn tokens\",\"unwrap\":\"if true and the native token is being withdrawn, it is unwraped and sent as native currency\"}},\"burnSwap(address,address,uint256,uint256,uint256,bool)\":{\"details\":\"The function burns LP tokens (authorization via allowance if needed), sends the single-asset payout and updates LMSR state.\",\"params\":{\"deadline\":\"optional deadline\",\"lpAmount\":\"amount of LP tokens to burn\",\"outputTokenIndex\":\"index of target asset to receive\",\"payer\":\"who burns LP tokens\",\"receiver\":\"who receives the single asset\"},\"returns\":{\"amountOut\":\"uint amount of asset outputTokenIndex sent to receiver\",\"outFee\":\"uint amount of output asset kept by the LP's and protocol as a fee\"}},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"denominators()\":{\"details\":\"denominators()[i] is the base for tokens[i]. These bases are chosen by deployer and must match token decimals.\"},\"flashLoan(address,address,uint256,bytes)\":{\"details\":\"Initiate a flash loan.\",\"params\":{\"amount\":\"The amount of tokens lent.\",\"data\":\"Arbitrary data structure, intended to contain user-defined parameters.\",\"receiver\":\"The receiver of the tokens in the loan, and the receiver of the callback.\",\"token\":\"The loan currency.\"}},\"getToken(uint256)\":{\"details\":\"tokens[i] corresponds to the i-th asset and maps to index i in the internal LMSR arrays.\"},\"initialMint(address,uint256)\":{\"details\":\"Assumes tokens have already been transferred to the pool prior to calling. Can only be called when the pool is uninitialized (totalSupply() == 0 or _lmsr.nAssets == 0).\",\"params\":{\"lpTokens\":\"The number of LP tokens to issue for this mint. If 0, then the number of tokens returned will equal the LMSR internal q total\",\"receiver\":\"address that receives the LP tokens\"}},\"kappa()\":{\"details\":\"Pools are constructed with a \\u03ba value; this getter exposes the \\u03ba used by the pool.\"},\"mint(address,address,uint256,uint256)\":{\"details\":\"- For initial supply: assumes tokens have already been transferred to the pool prior to calling. - For subsequent mints: payer must approve the required token amounts before calling. Rounds follow the pool-favorable conventions documented in helpers (ceil inputs, floor outputs).\",\"params\":{\"deadline\":\"timestamp after which the transaction will revert. Pass 0 to ignore.\",\"lpTokenAmount\":\"desired amount of LP tokens to mint (ignored for initial deposit)\",\"payer\":\"address that provides the input tokens (ignored for initial deposit)\",\"receiver\":\"address that receives the LP tokens\"},\"returns\":{\"lpMinted\":\"the actual amount of lpToken minted\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"protocolFeePpm()\":{\"details\":\"This is the fraction (in ppm) of the pool-collected fees that are owed to the protocol.\"},\"swap(address,bytes4,address,uint256,uint256,uint256,int128,uint256,bool)\":{\"details\":\"This function transfers the exact gross input (including fee) from payer and sends the computed output to receiver. Non-standard tokens (fee-on-transfer, rebasers) are rejected via balance checks.\",\"params\":{\"deadline\":\"timestamp after which the transaction will revert. Pass 0 to ignore.\",\"inputTokenIndex\":\"index of input asset\",\"limitPrice\":\"maximum acceptable marginal price (64.64 fixed point). Pass 0 to ignore.\",\"maxAmountIn\":\"maximum amount of token inputTokenIndex (uint256) to transfer in (inclusive of fees)\",\"outputTokenIndex\":\"index of output asset\",\"payer\":\"address of the account that pays for the swap\",\"receiver\":\"address that will receive the output tokens\",\"selector\":\"If zero, then regular ERC20 approvals must be given by the payere to the pool to move the required input amount. If this selector is nonzero, then a callback style funding mechanism is used where the given selector is invoked on the payer, passing the arguments of (address inputToken, uint256 inputAmount). The callback function must send the given amount of input coin to the pool in ordr to continue the swap transaction, otherwise \\\"Insufficient funds\\\" is thrown.\"},\"returns\":{\"amountIn\":\"actual input used (uint256), amountOut actual output sent (uint256), inFee fee taken from the input (uint256)\"}},\"swapAmounts(uint256,uint256,uint256,int128)\":{\"params\":{\"inputTokenIndex\":\"index of input token\",\"limitPrice\":\"maximum acceptable marginal price (pass 0 to ignore)\",\"maxAmountIn\":\"maximum gross input allowed (inclusive of fee)\",\"outputTokenIndex\":\"index of output token\"},\"returns\":{\"amountIn\":\"gross input amount to transfer (includes fee), amountOut output amount user would receive, inFee fee taken from input amount\"}},\"swapMint(address,address,uint256,uint256,uint256)\":{\"details\":\"swapMint executes as an exact-in planned swap followed by proportional scaling of qInternal. The function emits SwapMint (gross, net, fee) and also emits Mint for LP issuance.\",\"params\":{\"deadline\":\"optional deadline\",\"inputTokenIndex\":\"index of the input token\",\"maxAmountIn\":\"maximum uint token input (inclusive of fee)\",\"payer\":\"who transfers the input token\",\"receiver\":\"who receives the minted LP tokens\"},\"returns\":{\"amountInUsed\":\"actual input used (uint256), lpMinted actual LP minted (uint256), inFee fee taken from the input (uint256)\"}},\"swapToLimit(address,address,uint256,uint256,int128,uint256,bool)\":{\"details\":\"If balances prevent fully reaching the limit, the function caps and returns actuals. The payer must transfer the exact gross input computed by the view.\",\"params\":{\"deadline\":\"timestamp after which the transaction will revert. Pass 0 to ignore.\",\"inputTokenIndex\":\"index of input asset\",\"limitPrice\":\"target marginal price to reach (must be > 0)\",\"outputTokenIndex\":\"index of output asset\",\"payer\":\"address of the account that pays for the swap\",\"receiver\":\"address that will receive the output tokens\"},\"returns\":{\"amountInUsed\":\"actual input used excluding fee (uint256), amountOut actual output sent (uint256), inFee fee taken from the input (uint256)\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"title\":\"PartyPool - LMSR-backed multi-asset pool with LP ERC20 token\",\"version\":1},\"userdoc\":{\"events\":{\"BurnSwap(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted instead of Burn when a burnSwap is executed.\"},\"ProtocolFeesCollected()\":{\"notice\":\"Emitted when protocol fees are collected from this pool.\"},\"SwapMint(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted instead of Swap when a single-token swapMint is executed.\"}},\"kind\":\"user\",\"methods\":{\"allProtocolFeesOwed()\":{\"notice\":\"Protocol fee ledger accessor. Returns tokens owed (raw uint token units) from this pool as protocol fees that have not yet been transferred out.\"},\"allTokens()\":{\"notice\":\"Returns the list of all token addresses in the pool (copy).\"},\"burn(address,address,uint256,uint256,bool)\":{\"notice\":\"Burn LP tokens and withdraw the proportional basket to receiver.\"},\"burnSwap(address,address,uint256,uint256,uint256,bool)\":{\"notice\":\"Burn LP tokens then swap the redeemed proportional basket into a single asset `outputTokenIndex` and send to receiver.\"},\"collectProtocolFees()\":{\"notice\":\"Callable by anyone, sends any owed protocol fees to the protocol fee address.\"},\"denominators()\":{\"notice\":\"Per-token uint base denominators used to convert uint token amounts <-> internal Q64.64 representation.\"},\"fee(uint256,uint256)\":{\"notice\":\"Effective combined fee in ppm for the given asset pair (i as input, j as output).\"},\"fees()\":{\"notice\":\"Per-asset swap fees in ppm. Fees are applied on input; for asset-to-asset swaps, the effective pair fee is 1 - (1 - f_i)(1 - f_j).\"},\"flashFeePpm()\":{\"notice\":\"Flash-loan fee in parts-per-million (ppm) applied to flash borrow amounts.\"},\"getToken(uint256)\":{\"notice\":\"Token addresses comprising the pool. Effectively immutable after construction.\"},\"initialMint(address,uint256)\":{\"notice\":\"Initial mint to set up pool for the first time.\"},\"kappa()\":{\"notice\":\"Liquidity parameter \\u03ba (Q64.64) used by the LMSR kernel: b = \\u03ba * S(q)\"},\"kill()\":{\"notice\":\"If a security problem is found, the vault owner may call this function to permanently disable swap and mint functionality, leaving only burns (withdrawals) working.\"},\"mint(address,address,uint256,uint256)\":{\"notice\":\"Proportional mint (or initial supply if first call).\"},\"numTokens()\":{\"notice\":\"Returns the number of tokens (n) in the pool.\"},\"protocolFeeAddress()\":{\"notice\":\"Address that will receive collected protocol tokens when collectProtocolFees() is called.\"},\"protocolFeePpm()\":{\"notice\":\"Protocol fee share (ppm) applied to fees collected by the pool (floored when accrued)\"},\"swap(address,bytes4,address,uint256,uint256,uint256,int128,uint256,bool)\":{\"notice\":\"Swap input token inputTokenIndex -> token outputTokenIndex. Payer must approve token inputTokenIndex.\"},\"swapAmounts(uint256,uint256,uint256,int128)\":{\"notice\":\"External view to quote exact-in swap amounts (gross input incl. fee and output), matching swap() computations\"},\"swapMint(address,address,uint256,uint256,uint256)\":{\"notice\":\"Single-token mint: deposit a single token, charge swap-LMSR cost, and mint LP.\"},\"swapToLimit(address,address,uint256,uint256,int128,uint256,bool)\":{\"notice\":\"Swap up to the price limit; computes max input to reach limit then performs swap.\"},\"wrapperToken()\":{\"notice\":\"Token contract used for wrapping native currency\"}},\"notice\":\"A multi-asset liquidity pool backed by the LMSRStabilized pricing model. The pool issues an ERC20 LP token representing proportional ownership. It supports: - Proportional minting and burning of LP _tokens, - Single-token mint (swapMint) and single-asset withdrawal (burnSwap), - Exact-input swaps and swaps-to-price-limits, - Flash loans via a callback interface.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IPartyPool.sol\":\"IPartyPool\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/abdk-libraries-solidity/ABDKMath64x64.sol\":{\"keccak256\":\"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97\",\"license\":\"BSD-4-Clause\",\"urls\":[\"bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7\",\"dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol\":{\"keccak256\":\"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd\",\"dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"src/IOwnable.sol\":{\"keccak256\":\"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1\",\"dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9\"]},\"src/IPartyPool.sol\":{\"keccak256\":\"0x55d3656b1a4c75801852066b7ba871212e5e807917b3b9029349349fae39375c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://009b67ccf1d28a04a2407a05ddda8f954033b7ac70f7fd5cbedbf779e867df9f\",\"dweb:/ipfs/QmS5vQcfma6PN28Q6qQwqa7KmUKu2KST72jwF8ffsj6Bw2\"]},\"src/LMSRStabilized.sol\":{\"keccak256\":\"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3\",\"dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB\"]},\"src/NativeWrapper.sol\":{\"keccak256\":\"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238\",\"dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":false},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"uint256[]","name":"amounts","type":"uint256[]","indexed":false},{"internalType":"uint256","name":"lpBurned","type":"uint256","indexed":false}],"type":"event","name":"Burn","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":true},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"contract IERC20","name":"tokenOut","type":"address","indexed":true},{"internalType":"uint256","name":"amountIn","type":"uint256","indexed":false},{"internalType":"uint256","name":"amountOut","type":"uint256","indexed":false},{"internalType":"uint256","name":"lpFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolFee","type":"uint256","indexed":false}],"type":"event","name":"BurnSwap","anonymous":false},{"inputs":[{"internalType":"address","name":"initiator","type":"address","indexed":true},{"internalType":"contract IERC3156FlashBorrower","name":"receiver","type":"address","indexed":true},{"internalType":"contract IERC20","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"lpFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolFee","type":"uint256","indexed":false}],"type":"event","name":"Flash","anonymous":false},{"inputs":[],"type":"event","name":"Killed","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":false},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"uint256[]","name":"amounts","type":"uint256[]","indexed":false},{"internalType":"uint256","name":"lpMinted","type":"uint256","indexed":false}],"type":"event","name":"Mint","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":[],"type":"event","name":"ProtocolFeesCollected","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":false},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"contract IERC20","name":"tokenIn","type":"address","indexed":true},{"internalType":"contract IERC20","name":"tokenOut","type":"address","indexed":true},{"internalType":"uint256","name":"amountIn","type":"uint256","indexed":false},{"internalType":"uint256","name":"amountOut","type":"uint256","indexed":false},{"internalType":"uint256","name":"lpFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolFee","type":"uint256","indexed":false}],"type":"event","name":"Swap","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":true},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"contract IERC20","name":"tokenIn","type":"address","indexed":true},{"internalType":"uint256","name":"amountIn","type":"uint256","indexed":false},{"internalType":"uint256","name":"amountOut","type":"uint256","indexed":false},{"internalType":"uint256","name":"lpFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolFee","type":"uint256","indexed":false}],"type":"event","name":"SwapMint","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"LMSR","outputs":[{"internalType":"struct LMSRStabilized.State","name":"","type":"tuple","components":[{"internalType":"int128","name":"kappa","type":"int128"},{"internalType":"int128[]","name":"qInternal","type":"int128[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"allProtocolFeesOwed","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"allTokens","outputs":[{"internalType":"contract IERC20[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"lpAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"unwrap","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"burn","outputs":[{"internalType":"uint256[]","name":"withdrawAmounts","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"lpAmount","type":"uint256"},{"internalType":"uint256","name":"outputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"unwrap","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"burnSwap","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"outFee","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"collectProtocolFees"},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"denominators","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"i","type":"uint256"},{"internalType":"uint256","name":"j","type":"uint256"}],"stateMutability":"view","type":"function","name":"fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"fees","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"flashFeePpm","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"contract IERC3156FlashBorrower","name":"receiver","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"flashLoan","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"getToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"lpTokens","type":"uint256"}],"stateMutability":"payable","type":"function","name":"initialMint","outputs":[{"internalType":"uint256","name":"lpMinted","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"kappa","outputs":[{"internalType":"int128","name":"","type":"int128"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"kill"},{"inputs":[],"stateMutability":"view","type":"function","name":"killed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"lpTokenAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"payable","type":"function","name":"mint","outputs":[{"internalType":"uint256","name":"lpMinted","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"numTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"protocolFeeAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"protocolFeePpm","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"bytes4","name":"selector","type":"bytes4"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"inputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"outputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"int128","name":"limitPrice","type":"int128"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"unwrap","type":"bool"}],"stateMutability":"payable","type":"function","name":"swap","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"inFee","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"inputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"outputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"int128","name":"limitPrice","type":"int128"}],"stateMutability":"view","type":"function","name":"swapAmounts","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"inFee","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"inputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"payable","type":"function","name":"swapMint","outputs":[{"internalType":"uint256","name":"amountInUsed","type":"uint256"},{"internalType":"uint256","name":"lpMinted","type":"uint256"},{"internalType":"uint256","name":"inFee","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"inputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"outputTokenIndex","type":"uint256"},{"internalType":"int128","name":"limitPrice","type":"int128"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"unwrap","type":"bool"}],"stateMutability":"payable","type":"function","name":"swapToLimit","outputs":[{"internalType":"uint256","name":"amountInUsed","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"inFee","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"wrapperToken","outputs":[{"internalType":"contract NativeWrapper","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"burn(address,address,uint256,uint256,bool)":{"details":"This function forwards the call to the burn implementation via delegatecall","params":{"deadline":"timestamp after which the transaction will revert. Pass 0 to ignore.","lpAmount":"amount of LP tokens to burn (proportional withdrawal)","payer":"address that provides the LP tokens to burn","receiver":"address that receives the withdrawn tokens","unwrap":"if true and the native token is being withdrawn, it is unwraped and sent as native currency"}},"burnSwap(address,address,uint256,uint256,uint256,bool)":{"details":"The function burns LP tokens (authorization via allowance if needed), sends the single-asset payout and updates LMSR state.","params":{"deadline":"optional deadline","lpAmount":"amount of LP tokens to burn","outputTokenIndex":"index of target asset to receive","payer":"who burns LP tokens","receiver":"who receives the single asset"},"returns":{"amountOut":"uint amount of asset outputTokenIndex sent to receiver","outFee":"uint amount of output asset kept by the LP's and protocol as a fee"}},"decimals()":{"details":"Returns the decimals places of the token."},"denominators()":{"details":"denominators()[i] is the base for tokens[i]. These bases are chosen by deployer and must match token decimals."},"flashLoan(address,address,uint256,bytes)":{"details":"Initiate a flash loan.","params":{"amount":"The amount of tokens lent.","data":"Arbitrary data structure, intended to contain user-defined parameters.","receiver":"The receiver of the tokens in the loan, and the receiver of the callback.","token":"The loan currency."}},"getToken(uint256)":{"details":"tokens[i] corresponds to the i-th asset and maps to index i in the internal LMSR arrays."},"initialMint(address,uint256)":{"details":"Assumes tokens have already been transferred to the pool prior to calling. Can only be called when the pool is uninitialized (totalSupply() == 0 or _lmsr.nAssets == 0).","params":{"lpTokens":"The number of LP tokens to issue for this mint. If 0, then the number of tokens returned will equal the LMSR internal q total","receiver":"address that receives the LP tokens"}},"kappa()":{"details":"Pools are constructed with a κ value; this getter exposes the κ used by the pool."},"mint(address,address,uint256,uint256)":{"details":"- For initial supply: assumes tokens have already been transferred to the pool prior to calling. - For subsequent mints: payer must approve the required token amounts before calling. Rounds follow the pool-favorable conventions documented in helpers (ceil inputs, floor outputs).","params":{"deadline":"timestamp after which the transaction will revert. Pass 0 to ignore.","lpTokenAmount":"desired amount of LP tokens to mint (ignored for initial deposit)","payer":"address that provides the input tokens (ignored for initial deposit)","receiver":"address that receives the LP tokens"},"returns":{"lpMinted":"the actual amount of lpToken minted"}},"name()":{"details":"Returns the name of the token."},"protocolFeePpm()":{"details":"This is the fraction (in ppm) of the pool-collected fees that are owed to the protocol."},"swap(address,bytes4,address,uint256,uint256,uint256,int128,uint256,bool)":{"details":"This function transfers the exact gross input (including fee) from payer and sends the computed output to receiver. Non-standard tokens (fee-on-transfer, rebasers) are rejected via balance checks.","params":{"deadline":"timestamp after which the transaction will revert. Pass 0 to ignore.","inputTokenIndex":"index of input asset","limitPrice":"maximum acceptable marginal price (64.64 fixed point). Pass 0 to ignore.","maxAmountIn":"maximum amount of token inputTokenIndex (uint256) to transfer in (inclusive of fees)","outputTokenIndex":"index of output asset","payer":"address of the account that pays for the swap","receiver":"address that will receive the output tokens","selector":"If zero, then regular ERC20 approvals must be given by the payere to the pool to move the required input amount. If this selector is nonzero, then a callback style funding mechanism is used where the given selector is invoked on the payer, passing the arguments of (address inputToken, uint256 inputAmount). The callback function must send the given amount of input coin to the pool in ordr to continue the swap transaction, otherwise \"Insufficient funds\" is thrown."},"returns":{"amountIn":"actual input used (uint256), amountOut actual output sent (uint256), inFee fee taken from the input (uint256)"}},"swapAmounts(uint256,uint256,uint256,int128)":{"params":{"inputTokenIndex":"index of input token","limitPrice":"maximum acceptable marginal price (pass 0 to ignore)","maxAmountIn":"maximum gross input allowed (inclusive of fee)","outputTokenIndex":"index of output token"},"returns":{"amountIn":"gross input amount to transfer (includes fee), amountOut output amount user would receive, inFee fee taken from input amount"}},"swapMint(address,address,uint256,uint256,uint256)":{"details":"swapMint executes as an exact-in planned swap followed by proportional scaling of qInternal. The function emits SwapMint (gross, net, fee) and also emits Mint for LP issuance.","params":{"deadline":"optional deadline","inputTokenIndex":"index of the input token","maxAmountIn":"maximum uint token input (inclusive of fee)","payer":"who transfers the input token","receiver":"who receives the minted LP tokens"},"returns":{"amountInUsed":"actual input used (uint256), lpMinted actual LP minted (uint256), inFee fee taken from the input (uint256)"}},"swapToLimit(address,address,uint256,uint256,int128,uint256,bool)":{"details":"If balances prevent fully reaching the limit, the function caps and returns actuals. The payer must transfer the exact gross input computed by the view.","params":{"deadline":"timestamp after which the transaction will revert. Pass 0 to ignore.","inputTokenIndex":"index of input asset","limitPrice":"target marginal price to reach (must be > 0)","outputTokenIndex":"index of output asset","payer":"address of the account that pays for the swap","receiver":"address that will receive the output tokens"},"returns":{"amountInUsed":"actual input used excluding fee (uint256), amountOut actual output sent (uint256), inFee fee taken from the input (uint256)"}},"symbol()":{"details":"Returns the symbol of the token."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{"allProtocolFeesOwed()":{"notice":"Protocol fee ledger accessor. Returns tokens owed (raw uint token units) from this pool as protocol fees that have not yet been transferred out."},"allTokens()":{"notice":"Returns the list of all token addresses in the pool (copy)."},"burn(address,address,uint256,uint256,bool)":{"notice":"Burn LP tokens and withdraw the proportional basket to receiver."},"burnSwap(address,address,uint256,uint256,uint256,bool)":{"notice":"Burn LP tokens then swap the redeemed proportional basket into a single asset `outputTokenIndex` and send to receiver."},"collectProtocolFees()":{"notice":"Callable by anyone, sends any owed protocol fees to the protocol fee address."},"denominators()":{"notice":"Per-token uint base denominators used to convert uint token amounts <-> internal Q64.64 representation."},"fee(uint256,uint256)":{"notice":"Effective combined fee in ppm for the given asset pair (i as input, j as output)."},"fees()":{"notice":"Per-asset swap fees in ppm. Fees are applied on input; for asset-to-asset swaps, the effective pair fee is 1 - (1 - f_i)(1 - f_j)."},"flashFeePpm()":{"notice":"Flash-loan fee in parts-per-million (ppm) applied to flash borrow amounts."},"getToken(uint256)":{"notice":"Token addresses comprising the pool. Effectively immutable after construction."},"initialMint(address,uint256)":{"notice":"Initial mint to set up pool for the first time."},"kappa()":{"notice":"Liquidity parameter κ (Q64.64) used by the LMSR kernel: b = κ * S(q)"},"kill()":{"notice":"If a security problem is found, the vault owner may call this function to permanently disable swap and mint functionality, leaving only burns (withdrawals) working."},"mint(address,address,uint256,uint256)":{"notice":"Proportional mint (or initial supply if first call)."},"numTokens()":{"notice":"Returns the number of tokens (n) in the pool."},"protocolFeeAddress()":{"notice":"Address that will receive collected protocol tokens when collectProtocolFees() is called."},"protocolFeePpm()":{"notice":"Protocol fee share (ppm) applied to fees collected by the pool (floored when accrued)"},"swap(address,bytes4,address,uint256,uint256,uint256,int128,uint256,bool)":{"notice":"Swap input token inputTokenIndex -> token outputTokenIndex. Payer must approve token inputTokenIndex."},"swapAmounts(uint256,uint256,uint256,int128)":{"notice":"External view to quote exact-in swap amounts (gross input incl. fee and output), matching swap() computations"},"swapMint(address,address,uint256,uint256,uint256)":{"notice":"Single-token mint: deposit a single token, charge swap-LMSR cost, and mint LP."},"swapToLimit(address,address,uint256,uint256,int128,uint256,bool)":{"notice":"Swap up to the price limit; computes max input to reach limit then performs swap."},"wrapperToken()":{"notice":"Token contract used for wrapping native currency"}},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IPartyPool.sol":"IPartyPool"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/abdk-libraries-solidity/ABDKMath64x64.sol":{"keccak256":"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97","urls":["bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7","dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN"],"license":"BSD-4-Clause"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol":{"keccak256":"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e","urls":["bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd","dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"src/IOwnable.sol":{"keccak256":"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990","urls":["bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1","dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9"],"license":"MIT"},"src/IPartyPool.sol":{"keccak256":"0x55d3656b1a4c75801852066b7ba871212e5e807917b3b9029349349fae39375c","urls":["bzz-raw://009b67ccf1d28a04a2407a05ddda8f954033b7ac70f7fd5cbedbf779e867df9f","dweb:/ipfs/QmS5vQcfma6PN28Q6qQwqa7KmUKu2KST72jwF8ffsj6Bw2"],"license":"UNLICENSED"},"src/LMSRStabilized.sol":{"keccak256":"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b","urls":["bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3","dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB"],"license":"UNLICENSED"},"src/NativeWrapper.sol":{"keccak256":"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579","urls":["bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238","dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB"],"license":"UNLICENSED"}},"version":1},"id":41} \ No newline at end of file +{"abi":[{"type":"function","name":"LMSR","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct LMSRStabilized.State","components":[{"name":"kappa","type":"int128","internalType":"int128"},{"name":"qInternal","type":"int128[]","internalType":"int128[]"}]}],"stateMutability":"view"},{"type":"function","name":"allProtocolFeesOwed","inputs":[],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"allTokens","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"contract IERC20[]"}],"stateMutability":"view"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"lpAmount","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"unwrap","type":"bool","internalType":"bool"}],"outputs":[{"name":"withdrawAmounts","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"burnSwap","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"lpAmount","type":"uint256","internalType":"uint256"},{"name":"outputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"unwrap","type":"bool","internalType":"bool"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"outFee","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"collectProtocolFees","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"denominators","inputs":[],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"fee","inputs":[{"name":"i","type":"uint256","internalType":"uint256"},{"name":"j","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"fees","inputs":[],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"flashFeePpm","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"flashLoan","inputs":[{"name":"receiver","type":"address","internalType":"contract IERC3156FlashBorrower"},{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"getToken","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"initialMint","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"lpTokens","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"lpMinted","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"kappa","inputs":[],"outputs":[{"name":"","type":"int128","internalType":"int128"}],"stateMutability":"view"},{"type":"function","name":"kill","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"killed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"lpTokenAmount","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"lpMinted","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"numTokens","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":"protocolFeeAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"protocolFeePpm","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"swap","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"fundingSelector","type":"bytes4","internalType":"bytes4"},{"name":"receiver","type":"address","internalType":"address"},{"name":"inputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"outputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"maxAmountIn","type":"uint256","internalType":"uint256"},{"name":"limitPrice","type":"int128","internalType":"int128"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"unwrap","type":"bool","internalType":"bool"}],"outputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"inFee","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"swapAmounts","inputs":[{"name":"inputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"outputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"maxAmountIn","type":"uint256","internalType":"uint256"},{"name":"limitPrice","type":"int128","internalType":"int128"}],"outputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"inFee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"swapMint","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"inputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"maxAmountIn","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountInUsed","type":"uint256","internalType":"uint256"},{"name":"lpMinted","type":"uint256","internalType":"uint256"},{"name":"inFee","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"swapToLimit","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"inputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"outputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"limitPrice","type":"int128","internalType":"int128"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"unwrap","type":"bool","internalType":"bool"}],"outputs":[{"name":"amountInUsed","type":"uint256","internalType":"uint256"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"inFee","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"wrapperToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract NativeWrapper"}],"stateMutability":"view"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Burn","inputs":[{"name":"payer","type":"address","indexed":false,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"amounts","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"lpBurned","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BurnSwap","inputs":[{"name":"payer","type":"address","indexed":true,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"tokenOut","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lpFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Flash","inputs":[{"name":"initiator","type":"address","indexed":true,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"contract IERC3156FlashBorrower"},{"name":"token","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lpFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Killed","inputs":[],"anonymous":false},{"type":"event","name":"Mint","inputs":[{"name":"payer","type":"address","indexed":false,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"amounts","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"lpMinted","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":"ProtocolFeesCollected","inputs":[],"anonymous":false},{"type":"event","name":"Swap","inputs":[{"name":"payer","type":"address","indexed":false,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"tokenIn","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"tokenOut","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lpFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SwapMint","inputs":[{"name":"payer","type":"address","indexed":true,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"tokenIn","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lpFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"LMSR()":"476e44b6","allProtocolFeesOwed()":"017504b6","allTokens()":"6ff97f1d","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(address,address,uint256,uint256,bool)":"6863f5bc","burnSwap(address,address,uint256,uint256,uint256,bool)":"491e7998","collectProtocolFees()":"a1af5b9a","decimals()":"313ce567","denominators()":"017cf661","fee(uint256,uint256)":"939f5ea4","fees()":"9af1d35a","flashFeePpm()":"31596a6a","flashLoan(address,address,uint256,bytes)":"5cffe9de","getToken(uint256)":"e4b50cb8","initialMint(address,uint256)":"6d8d0ff3","kappa()":"6bba3f2f","kill()":"41c0e1b5","killed()":"1f3a0e41","mint(address,address,uint256,uint256)":"b3f1c93d","name()":"06fdde03","numTokens()":"8e499bcf","owner()":"8da5cb5b","protocolFeeAddress()":"cce516b7","protocolFeePpm()":"6b4082d1","renounceOwnership()":"715018a6","swap(address,bytes4,address,uint256,uint256,uint256,int128,uint256,bool)":"0eeee627","swapAmounts(uint256,uint256,uint256,int128)":"d516b8c6","swapMint(address,address,uint256,uint256,uint256)":"cb717f3a","swapToLimit(address,address,uint256,uint256,int128,uint256,bool)":"79a68d53","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b","wrapperToken()":"0d246214"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpBurned\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFee\",\"type\":\"uint256\"}],\"name\":\"BurnSwap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC3156FlashBorrower\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFee\",\"type\":\"uint256\"}],\"name\":\"Flash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Killed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpMinted\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"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\":[],\"name\":\"ProtocolFeesCollected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFee\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFee\",\"type\":\"uint256\"}],\"name\":\"SwapMint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"LMSR\",\"outputs\":[{\"components\":[{\"internalType\":\"int128\",\"name\":\"kappa\",\"type\":\"int128\"},{\"internalType\":\"int128[]\",\"name\":\"qInternal\",\"type\":\"int128[]\"}],\"internalType\":\"struct LMSRStabilized.State\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allProtocolFeesOwed\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allTokens\",\"outputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"withdrawAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"name\":\"burnSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outFee\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectProtocolFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"denominators\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"j\",\"type\":\"uint256\"}],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fees\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"flashFeePpm\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC3156FlashBorrower\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flashLoan\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpTokens\",\"type\":\"uint256\"}],\"name\":\"initialMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lpMinted\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kappa\",\"outputs\":[{\"internalType\":\"int128\",\"name\":\"\",\"type\":\"int128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kill\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpTokenAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lpMinted\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"numTokens\",\"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\":\"protocolFeeAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolFeePpm\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"fundingSelector\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"int128\",\"name\":\"limitPrice\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inFee\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"inputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"int128\",\"name\":\"limitPrice\",\"type\":\"int128\"}],\"name\":\"swapAmounts\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountInUsed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lpMinted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inFee\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"int128\",\"name\":\"limitPrice\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"name\":\"swapToLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountInUsed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inFee\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wrapperToken\",\"outputs\":[{\"internalType\":\"contract NativeWrapper\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"The contract stores per-token uint \\\"_bases\\\" used to scale token units into the internal Q64.64 representation used by the LMSR library. Cached on-chain uint balances are kept to reduce balanceOf calls. The contract uses ceiling/floor rules described in function comments to bias rounding in favor of the pool (i.e., floor outputs to users, ceil inputs/fees where appropriate).\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"ProtocolFeesCollected()\":{\"details\":\"After collection, the protocolFee accounting array will be zeroed out.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"burn(address,address,uint256,uint256,bool)\":{\"details\":\"This function forwards the call to the burn implementation via delegatecall\",\"params\":{\"deadline\":\"timestamp after which the transaction will revert. Pass 0 to ignore.\",\"lpAmount\":\"amount of LP tokens to burn (proportional withdrawal)\",\"payer\":\"address that provides the LP tokens to burn\",\"receiver\":\"address that receives the withdrawn tokens\",\"unwrap\":\"if true and the native token is being withdrawn, it is unwraped and sent as native currency\"}},\"burnSwap(address,address,uint256,uint256,uint256,bool)\":{\"details\":\"The function burns LP tokens (authorization via allowance if needed), sends the single-asset payout and updates LMSR state.\",\"params\":{\"deadline\":\"optional deadline\",\"lpAmount\":\"amount of LP tokens to burn\",\"outputTokenIndex\":\"index of target asset to receive\",\"payer\":\"who burns LP tokens\",\"receiver\":\"who receives the single asset\"},\"returns\":{\"amountOut\":\"uint amount of asset outputTokenIndex sent to receiver\",\"outFee\":\"uint amount of output asset kept by the LP's and protocol as a fee\"}},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"denominators()\":{\"details\":\"denominators()[i] is the base for tokens[i]. These bases are chosen by deployer and must match token decimals.\"},\"flashLoan(address,address,uint256,bytes)\":{\"details\":\"Initiate a flash loan.\",\"params\":{\"amount\":\"The amount of tokens lent.\",\"data\":\"Arbitrary data structure, intended to contain user-defined parameters.\",\"receiver\":\"The receiver of the tokens in the loan, and the receiver of the callback.\",\"token\":\"The loan currency.\"}},\"getToken(uint256)\":{\"details\":\"tokens[i] corresponds to the i-th asset and maps to index i in the internal LMSR arrays.\"},\"initialMint(address,uint256)\":{\"details\":\"Assumes tokens have already been transferred to the pool prior to calling. Can only be called when the pool is uninitialized (totalSupply() == 0 or _lmsr.nAssets == 0).\",\"params\":{\"lpTokens\":\"The number of LP tokens to issue for this mint. If 0, then the number of tokens returned will equal the LMSR internal q total\",\"receiver\":\"address that receives the LP tokens\"}},\"kappa()\":{\"details\":\"Pools are constructed with a \\u03ba value; this getter exposes the \\u03ba used by the pool.\"},\"mint(address,address,uint256,uint256)\":{\"details\":\"- For initial supply: assumes tokens have already been transferred to the pool prior to calling. - For subsequent mints: payer must approve the required token amounts before calling. Rounds follow the pool-favorable conventions documented in helpers (ceil inputs, floor outputs).\",\"params\":{\"deadline\":\"timestamp after which the transaction will revert. Pass 0 to ignore.\",\"lpTokenAmount\":\"desired amount of LP tokens to mint (ignored for initial deposit)\",\"payer\":\"address that provides the input tokens (ignored for initial deposit)\",\"receiver\":\"address that receives the LP tokens\"},\"returns\":{\"lpMinted\":\"the actual amount of lpToken minted\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"protocolFeePpm()\":{\"details\":\"This is the fraction (in ppm) of the pool-collected fees that are owed to the protocol.\"},\"swap(address,bytes4,address,uint256,uint256,uint256,int128,uint256,bool)\":{\"details\":\"This function transfers the exact gross input (including fee) from payer and sends the computed output to receiver. Non-standard tokens (fee-on-transfer, rebasers) are rejected via balance checks.\",\"params\":{\"deadline\":\"timestamp after which the transaction will revert. Pass 0 to ignore.\",\"fundingSelector\":\"If set to USE_APPROVALS, then the payer must use regular ERC20 approvals to authorize the pool to move the required input amount. If this fundingSelector is USE_PREFUNDING, then all of the input amount is expected to have already been sent to the pool and no additional transfers are needed. Refunds of excess input amount are NOT provided and it is illegal to use this funding method with a limit price. Otherwise, for any other fundingSelector value, a callback style funding mechanism is used where the given selector is invoked on the payer, passing the arguments of (address inputToken, uint256 inputAmount). The callback function must send the given amount of input coin to the pool in order to continue the swap transaction, otherwise \\\"Insufficient funds\\\" is thrown.\",\"inputTokenIndex\":\"index of input asset\",\"limitPrice\":\"maximum acceptable marginal price (64.64 fixed point). Pass 0 to ignore.\",\"maxAmountIn\":\"maximum amount of token inputTokenIndex (uint256) to transfer in (inclusive of fees)\",\"outputTokenIndex\":\"index of output asset\",\"payer\":\"address of the account that pays for the swap\",\"receiver\":\"address that will receive the output tokens\"},\"returns\":{\"amountIn\":\"actual input used (uint256), amountOut actual output sent (uint256), inFee fee taken from the input (uint256)\"}},\"swapAmounts(uint256,uint256,uint256,int128)\":{\"params\":{\"inputTokenIndex\":\"index of input token\",\"limitPrice\":\"maximum acceptable marginal price (pass 0 to ignore)\",\"maxAmountIn\":\"maximum gross input allowed (inclusive of fee)\",\"outputTokenIndex\":\"index of output token\"},\"returns\":{\"amountIn\":\"gross input amount to transfer (includes fee), amountOut output amount user would receive, inFee fee taken from input amount\"}},\"swapMint(address,address,uint256,uint256,uint256)\":{\"details\":\"swapMint executes as an exact-in planned swap followed by proportional scaling of qInternal. The function emits SwapMint (gross, net, fee) and also emits Mint for LP issuance.\",\"params\":{\"deadline\":\"optional deadline\",\"inputTokenIndex\":\"index of the input token\",\"maxAmountIn\":\"maximum uint token input (inclusive of fee)\",\"payer\":\"who transfers the input token\",\"receiver\":\"who receives the minted LP tokens\"},\"returns\":{\"amountInUsed\":\"actual input used (uint256), lpMinted actual LP minted (uint256), inFee fee taken from the input (uint256)\"}},\"swapToLimit(address,address,uint256,uint256,int128,uint256,bool)\":{\"details\":\"If balances prevent fully reaching the limit, the function caps and returns actuals. The payer must transfer the exact gross input computed by the view.\",\"params\":{\"deadline\":\"timestamp after which the transaction will revert. Pass 0 to ignore.\",\"inputTokenIndex\":\"index of input asset\",\"limitPrice\":\"target marginal price to reach (must be > 0)\",\"outputTokenIndex\":\"index of output asset\",\"payer\":\"address of the account that pays for the swap\",\"receiver\":\"address that will receive the output tokens\"},\"returns\":{\"amountInUsed\":\"actual input used excluding fee (uint256), amountOut actual output sent (uint256), inFee fee taken from the input (uint256)\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"title\":\"PartyPool - LMSR-backed multi-asset pool with LP ERC20 token\",\"version\":1},\"userdoc\":{\"events\":{\"BurnSwap(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted instead of Burn when a burnSwap is executed.\"},\"ProtocolFeesCollected()\":{\"notice\":\"Emitted when protocol fees are collected from this pool.\"},\"SwapMint(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted instead of Swap when a single-token swapMint is executed.\"}},\"kind\":\"user\",\"methods\":{\"allProtocolFeesOwed()\":{\"notice\":\"Protocol fee ledger accessor. Returns tokens owed (raw uint token units) from this pool as protocol fees that have not yet been transferred out.\"},\"allTokens()\":{\"notice\":\"Returns the list of all token addresses in the pool (copy).\"},\"burn(address,address,uint256,uint256,bool)\":{\"notice\":\"Burn LP tokens and withdraw the proportional basket to receiver.\"},\"burnSwap(address,address,uint256,uint256,uint256,bool)\":{\"notice\":\"Burn LP tokens then swap the redeemed proportional basket into a single asset `outputTokenIndex` and send to receiver.\"},\"collectProtocolFees()\":{\"notice\":\"Callable by anyone, sends any owed protocol fees to the protocol fee address.\"},\"denominators()\":{\"notice\":\"Per-token uint base denominators used to convert uint token amounts <-> internal Q64.64 representation.\"},\"fee(uint256,uint256)\":{\"notice\":\"Effective combined fee in ppm for the given asset pair (i as input, j as output).\"},\"fees()\":{\"notice\":\"Per-asset swap fees in ppm. Fees are applied on input; for asset-to-asset swaps, the effective pair fee is 1 - (1 - f_i)(1 - f_j).\"},\"flashFeePpm()\":{\"notice\":\"Flash-loan fee in parts-per-million (ppm) applied to flash borrow amounts.\"},\"getToken(uint256)\":{\"notice\":\"Token addresses comprising the pool. Effectively immutable after construction.\"},\"initialMint(address,uint256)\":{\"notice\":\"Initial mint to set up pool for the first time.\"},\"kappa()\":{\"notice\":\"Liquidity parameter \\u03ba (Q64.64) used by the LMSR kernel: b = \\u03ba * S(q)\"},\"kill()\":{\"notice\":\"If a security problem is found, the vault owner may call this function to permanently disable swap and mint functionality, leaving only burns (withdrawals) working.\"},\"mint(address,address,uint256,uint256)\":{\"notice\":\"Proportional mint (or initial supply if first call).\"},\"numTokens()\":{\"notice\":\"Returns the number of tokens (n) in the pool.\"},\"protocolFeeAddress()\":{\"notice\":\"Address that will receive collected protocol tokens when collectProtocolFees() is called.\"},\"protocolFeePpm()\":{\"notice\":\"Protocol fee share (ppm) applied to fees collected by the pool (floored when accrued)\"},\"swap(address,bytes4,address,uint256,uint256,uint256,int128,uint256,bool)\":{\"notice\":\"Swap input token inputTokenIndex -> token outputTokenIndex. Payer must approve token inputTokenIndex.\"},\"swapAmounts(uint256,uint256,uint256,int128)\":{\"notice\":\"External view to quote exact-in swap amounts (gross input incl. fee and output), matching swap() computations\"},\"swapMint(address,address,uint256,uint256,uint256)\":{\"notice\":\"Single-token mint: deposit a single token, charge swap-LMSR cost, and mint LP.\"},\"swapToLimit(address,address,uint256,uint256,int128,uint256,bool)\":{\"notice\":\"Swap up to the price limit; computes max input to reach limit then performs swap.\"},\"wrapperToken()\":{\"notice\":\"Token contract used for wrapping native currency\"}},\"notice\":\"A multi-asset liquidity pool backed by the LMSRStabilized pricing model. The pool issues an ERC20 LP token representing proportional ownership. It supports: - Proportional minting and burning of LP _tokens, - Single-token mint (swapMint) and single-asset withdrawal (burnSwap), - Exact-input swaps and swaps-to-price-limits, - Flash loans via a callback interface.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IPartyPool.sol\":\"IPartyPool\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/abdk-libraries-solidity/ABDKMath64x64.sol\":{\"keccak256\":\"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97\",\"license\":\"BSD-4-Clause\",\"urls\":[\"bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7\",\"dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol\":{\"keccak256\":\"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd\",\"dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"src/IOwnable.sol\":{\"keccak256\":\"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1\",\"dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9\"]},\"src/IPartyPool.sol\":{\"keccak256\":\"0x74b9531bdf2200f256cac6c2cd54c0efad7c1bdfbe694ee910df75448ffe93f4\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://aadd161d7e197b48e6be4198b0f4f81a10016b9904d024e0a361bf2d7f941475\",\"dweb:/ipfs/QmYuGyPZCigmt8va11oAHXPTpHFyF3d7ARDNacyr2jsDfa\"]},\"src/LMSRStabilized.sol\":{\"keccak256\":\"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3\",\"dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB\"]},\"src/NativeWrapper.sol\":{\"keccak256\":\"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238\",\"dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":false},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"uint256[]","name":"amounts","type":"uint256[]","indexed":false},{"internalType":"uint256","name":"lpBurned","type":"uint256","indexed":false}],"type":"event","name":"Burn","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":true},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"contract IERC20","name":"tokenOut","type":"address","indexed":true},{"internalType":"uint256","name":"amountIn","type":"uint256","indexed":false},{"internalType":"uint256","name":"amountOut","type":"uint256","indexed":false},{"internalType":"uint256","name":"lpFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolFee","type":"uint256","indexed":false}],"type":"event","name":"BurnSwap","anonymous":false},{"inputs":[{"internalType":"address","name":"initiator","type":"address","indexed":true},{"internalType":"contract IERC3156FlashBorrower","name":"receiver","type":"address","indexed":true},{"internalType":"contract IERC20","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"lpFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolFee","type":"uint256","indexed":false}],"type":"event","name":"Flash","anonymous":false},{"inputs":[],"type":"event","name":"Killed","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":false},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"uint256[]","name":"amounts","type":"uint256[]","indexed":false},{"internalType":"uint256","name":"lpMinted","type":"uint256","indexed":false}],"type":"event","name":"Mint","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":[],"type":"event","name":"ProtocolFeesCollected","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":false},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"contract IERC20","name":"tokenIn","type":"address","indexed":true},{"internalType":"contract IERC20","name":"tokenOut","type":"address","indexed":true},{"internalType":"uint256","name":"amountIn","type":"uint256","indexed":false},{"internalType":"uint256","name":"amountOut","type":"uint256","indexed":false},{"internalType":"uint256","name":"lpFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolFee","type":"uint256","indexed":false}],"type":"event","name":"Swap","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":true},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"contract IERC20","name":"tokenIn","type":"address","indexed":true},{"internalType":"uint256","name":"amountIn","type":"uint256","indexed":false},{"internalType":"uint256","name":"amountOut","type":"uint256","indexed":false},{"internalType":"uint256","name":"lpFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolFee","type":"uint256","indexed":false}],"type":"event","name":"SwapMint","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"LMSR","outputs":[{"internalType":"struct LMSRStabilized.State","name":"","type":"tuple","components":[{"internalType":"int128","name":"kappa","type":"int128"},{"internalType":"int128[]","name":"qInternal","type":"int128[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"allProtocolFeesOwed","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"allTokens","outputs":[{"internalType":"contract IERC20[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"lpAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"unwrap","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"burn","outputs":[{"internalType":"uint256[]","name":"withdrawAmounts","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"lpAmount","type":"uint256"},{"internalType":"uint256","name":"outputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"unwrap","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"burnSwap","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"outFee","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"collectProtocolFees"},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"denominators","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"i","type":"uint256"},{"internalType":"uint256","name":"j","type":"uint256"}],"stateMutability":"view","type":"function","name":"fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"fees","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"flashFeePpm","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"contract IERC3156FlashBorrower","name":"receiver","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"flashLoan","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"getToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"lpTokens","type":"uint256"}],"stateMutability":"payable","type":"function","name":"initialMint","outputs":[{"internalType":"uint256","name":"lpMinted","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"kappa","outputs":[{"internalType":"int128","name":"","type":"int128"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"kill"},{"inputs":[],"stateMutability":"view","type":"function","name":"killed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"lpTokenAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"payable","type":"function","name":"mint","outputs":[{"internalType":"uint256","name":"lpMinted","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"numTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"protocolFeeAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"protocolFeePpm","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"bytes4","name":"fundingSelector","type":"bytes4"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"inputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"outputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"int128","name":"limitPrice","type":"int128"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"unwrap","type":"bool"}],"stateMutability":"payable","type":"function","name":"swap","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"inFee","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"inputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"outputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"int128","name":"limitPrice","type":"int128"}],"stateMutability":"view","type":"function","name":"swapAmounts","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"inFee","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"inputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"payable","type":"function","name":"swapMint","outputs":[{"internalType":"uint256","name":"amountInUsed","type":"uint256"},{"internalType":"uint256","name":"lpMinted","type":"uint256"},{"internalType":"uint256","name":"inFee","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"inputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"outputTokenIndex","type":"uint256"},{"internalType":"int128","name":"limitPrice","type":"int128"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"unwrap","type":"bool"}],"stateMutability":"payable","type":"function","name":"swapToLimit","outputs":[{"internalType":"uint256","name":"amountInUsed","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"inFee","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"wrapperToken","outputs":[{"internalType":"contract NativeWrapper","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"burn(address,address,uint256,uint256,bool)":{"details":"This function forwards the call to the burn implementation via delegatecall","params":{"deadline":"timestamp after which the transaction will revert. Pass 0 to ignore.","lpAmount":"amount of LP tokens to burn (proportional withdrawal)","payer":"address that provides the LP tokens to burn","receiver":"address that receives the withdrawn tokens","unwrap":"if true and the native token is being withdrawn, it is unwraped and sent as native currency"}},"burnSwap(address,address,uint256,uint256,uint256,bool)":{"details":"The function burns LP tokens (authorization via allowance if needed), sends the single-asset payout and updates LMSR state.","params":{"deadline":"optional deadline","lpAmount":"amount of LP tokens to burn","outputTokenIndex":"index of target asset to receive","payer":"who burns LP tokens","receiver":"who receives the single asset"},"returns":{"amountOut":"uint amount of asset outputTokenIndex sent to receiver","outFee":"uint amount of output asset kept by the LP's and protocol as a fee"}},"decimals()":{"details":"Returns the decimals places of the token."},"denominators()":{"details":"denominators()[i] is the base for tokens[i]. These bases are chosen by deployer and must match token decimals."},"flashLoan(address,address,uint256,bytes)":{"details":"Initiate a flash loan.","params":{"amount":"The amount of tokens lent.","data":"Arbitrary data structure, intended to contain user-defined parameters.","receiver":"The receiver of the tokens in the loan, and the receiver of the callback.","token":"The loan currency."}},"getToken(uint256)":{"details":"tokens[i] corresponds to the i-th asset and maps to index i in the internal LMSR arrays."},"initialMint(address,uint256)":{"details":"Assumes tokens have already been transferred to the pool prior to calling. Can only be called when the pool is uninitialized (totalSupply() == 0 or _lmsr.nAssets == 0).","params":{"lpTokens":"The number of LP tokens to issue for this mint. If 0, then the number of tokens returned will equal the LMSR internal q total","receiver":"address that receives the LP tokens"}},"kappa()":{"details":"Pools are constructed with a κ value; this getter exposes the κ used by the pool."},"mint(address,address,uint256,uint256)":{"details":"- For initial supply: assumes tokens have already been transferred to the pool prior to calling. - For subsequent mints: payer must approve the required token amounts before calling. Rounds follow the pool-favorable conventions documented in helpers (ceil inputs, floor outputs).","params":{"deadline":"timestamp after which the transaction will revert. Pass 0 to ignore.","lpTokenAmount":"desired amount of LP tokens to mint (ignored for initial deposit)","payer":"address that provides the input tokens (ignored for initial deposit)","receiver":"address that receives the LP tokens"},"returns":{"lpMinted":"the actual amount of lpToken minted"}},"name()":{"details":"Returns the name of the token."},"protocolFeePpm()":{"details":"This is the fraction (in ppm) of the pool-collected fees that are owed to the protocol."},"swap(address,bytes4,address,uint256,uint256,uint256,int128,uint256,bool)":{"details":"This function transfers the exact gross input (including fee) from payer and sends the computed output to receiver. Non-standard tokens (fee-on-transfer, rebasers) are rejected via balance checks.","params":{"deadline":"timestamp after which the transaction will revert. Pass 0 to ignore.","fundingSelector":"If set to USE_APPROVALS, then the payer must use regular ERC20 approvals to authorize the pool to move the required input amount. If this fundingSelector is USE_PREFUNDING, then all of the input amount is expected to have already been sent to the pool and no additional transfers are needed. Refunds of excess input amount are NOT provided and it is illegal to use this funding method with a limit price. Otherwise, for any other fundingSelector value, a callback style funding mechanism is used where the given selector is invoked on the payer, passing the arguments of (address inputToken, uint256 inputAmount). The callback function must send the given amount of input coin to the pool in order to continue the swap transaction, otherwise \"Insufficient funds\" is thrown.","inputTokenIndex":"index of input asset","limitPrice":"maximum acceptable marginal price (64.64 fixed point). Pass 0 to ignore.","maxAmountIn":"maximum amount of token inputTokenIndex (uint256) to transfer in (inclusive of fees)","outputTokenIndex":"index of output asset","payer":"address of the account that pays for the swap","receiver":"address that will receive the output tokens"},"returns":{"amountIn":"actual input used (uint256), amountOut actual output sent (uint256), inFee fee taken from the input (uint256)"}},"swapAmounts(uint256,uint256,uint256,int128)":{"params":{"inputTokenIndex":"index of input token","limitPrice":"maximum acceptable marginal price (pass 0 to ignore)","maxAmountIn":"maximum gross input allowed (inclusive of fee)","outputTokenIndex":"index of output token"},"returns":{"amountIn":"gross input amount to transfer (includes fee), amountOut output amount user would receive, inFee fee taken from input amount"}},"swapMint(address,address,uint256,uint256,uint256)":{"details":"swapMint executes as an exact-in planned swap followed by proportional scaling of qInternal. The function emits SwapMint (gross, net, fee) and also emits Mint for LP issuance.","params":{"deadline":"optional deadline","inputTokenIndex":"index of the input token","maxAmountIn":"maximum uint token input (inclusive of fee)","payer":"who transfers the input token","receiver":"who receives the minted LP tokens"},"returns":{"amountInUsed":"actual input used (uint256), lpMinted actual LP minted (uint256), inFee fee taken from the input (uint256)"}},"swapToLimit(address,address,uint256,uint256,int128,uint256,bool)":{"details":"If balances prevent fully reaching the limit, the function caps and returns actuals. The payer must transfer the exact gross input computed by the view.","params":{"deadline":"timestamp after which the transaction will revert. Pass 0 to ignore.","inputTokenIndex":"index of input asset","limitPrice":"target marginal price to reach (must be > 0)","outputTokenIndex":"index of output asset","payer":"address of the account that pays for the swap","receiver":"address that will receive the output tokens"},"returns":{"amountInUsed":"actual input used excluding fee (uint256), amountOut actual output sent (uint256), inFee fee taken from the input (uint256)"}},"symbol()":{"details":"Returns the symbol of the token."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{"allProtocolFeesOwed()":{"notice":"Protocol fee ledger accessor. Returns tokens owed (raw uint token units) from this pool as protocol fees that have not yet been transferred out."},"allTokens()":{"notice":"Returns the list of all token addresses in the pool (copy)."},"burn(address,address,uint256,uint256,bool)":{"notice":"Burn LP tokens and withdraw the proportional basket to receiver."},"burnSwap(address,address,uint256,uint256,uint256,bool)":{"notice":"Burn LP tokens then swap the redeemed proportional basket into a single asset `outputTokenIndex` and send to receiver."},"collectProtocolFees()":{"notice":"Callable by anyone, sends any owed protocol fees to the protocol fee address."},"denominators()":{"notice":"Per-token uint base denominators used to convert uint token amounts <-> internal Q64.64 representation."},"fee(uint256,uint256)":{"notice":"Effective combined fee in ppm for the given asset pair (i as input, j as output)."},"fees()":{"notice":"Per-asset swap fees in ppm. Fees are applied on input; for asset-to-asset swaps, the effective pair fee is 1 - (1 - f_i)(1 - f_j)."},"flashFeePpm()":{"notice":"Flash-loan fee in parts-per-million (ppm) applied to flash borrow amounts."},"getToken(uint256)":{"notice":"Token addresses comprising the pool. Effectively immutable after construction."},"initialMint(address,uint256)":{"notice":"Initial mint to set up pool for the first time."},"kappa()":{"notice":"Liquidity parameter κ (Q64.64) used by the LMSR kernel: b = κ * S(q)"},"kill()":{"notice":"If a security problem is found, the vault owner may call this function to permanently disable swap and mint functionality, leaving only burns (withdrawals) working."},"mint(address,address,uint256,uint256)":{"notice":"Proportional mint (or initial supply if first call)."},"numTokens()":{"notice":"Returns the number of tokens (n) in the pool."},"protocolFeeAddress()":{"notice":"Address that will receive collected protocol tokens when collectProtocolFees() is called."},"protocolFeePpm()":{"notice":"Protocol fee share (ppm) applied to fees collected by the pool (floored when accrued)"},"swap(address,bytes4,address,uint256,uint256,uint256,int128,uint256,bool)":{"notice":"Swap input token inputTokenIndex -> token outputTokenIndex. Payer must approve token inputTokenIndex."},"swapAmounts(uint256,uint256,uint256,int128)":{"notice":"External view to quote exact-in swap amounts (gross input incl. fee and output), matching swap() computations"},"swapMint(address,address,uint256,uint256,uint256)":{"notice":"Single-token mint: deposit a single token, charge swap-LMSR cost, and mint LP."},"swapToLimit(address,address,uint256,uint256,int128,uint256,bool)":{"notice":"Swap up to the price limit; computes max input to reach limit then performs swap."},"wrapperToken()":{"notice":"Token contract used for wrapping native currency"}},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IPartyPool.sol":"IPartyPool"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/abdk-libraries-solidity/ABDKMath64x64.sol":{"keccak256":"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97","urls":["bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7","dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN"],"license":"BSD-4-Clause"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol":{"keccak256":"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e","urls":["bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd","dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"src/IOwnable.sol":{"keccak256":"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990","urls":["bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1","dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9"],"license":"MIT"},"src/IPartyPool.sol":{"keccak256":"0x74b9531bdf2200f256cac6c2cd54c0efad7c1bdfbe694ee910df75448ffe93f4","urls":["bzz-raw://aadd161d7e197b48e6be4198b0f4f81a10016b9904d024e0a361bf2d7f941475","dweb:/ipfs/QmYuGyPZCigmt8va11oAHXPTpHFyF3d7ARDNacyr2jsDfa"],"license":"UNLICENSED"},"src/LMSRStabilized.sol":{"keccak256":"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b","urls":["bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3","dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB"],"license":"UNLICENSED"},"src/NativeWrapper.sol":{"keccak256":"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579","urls":["bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238","dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB"],"license":"UNLICENSED"}},"version":1},"id":40} \ No newline at end of file diff --git a/deployment/11155111/v1/out/LMSRStabilized.sol/LMSRStabilized.json b/deployment/11155111/v1/out/LMSRStabilized.sol/LMSRStabilized.json index a5aeb25..3ffde65 100644 --- a/deployment/11155111/v1/out/LMSRStabilized.sol/LMSRStabilized.json +++ b/deployment/11155111/v1/out/LMSRStabilized.sol/LMSRStabilized.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea264697066735822122043a81c5a8112d10309d1ad8e6f619479e20ed7226ff1858199395f0823c2442864736f6c634300081e0033","sourceMap":"552:41558:42:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea264697066735822122043a81c5a8112d10309d1ad8e6f619479e20ed7226ff1858199395f0823c2442864736f6c634300081e0033","sourceMap":"552:41558:42:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Stabilized LMSR library with incremental exp(z) caching for gas efficiency. - Stores b (64.64), M (shift), Z = sum exp(z_i), z[i] = (q_i / b) - M - Caches e[i] = exp(z[i]) so we avoid recomputing exp() for every asset on each trade. - Provides closed-form \\u0394C on deposit, amount-out for asset->asset, and incremental applyDeposit/applyWithdraw that update e[i] and Z in O(1).\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/LMSRStabilized.sol\":\"LMSRStabilized\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/abdk-libraries-solidity/ABDKMath64x64.sol\":{\"keccak256\":\"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97\",\"license\":\"BSD-4-Clause\",\"urls\":[\"bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7\",\"dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN\"]},\"src/LMSRStabilized.sol\":{\"keccak256\":\"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3\",\"dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/LMSRStabilized.sol":"LMSRStabilized"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/abdk-libraries-solidity/ABDKMath64x64.sol":{"keccak256":"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97","urls":["bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7","dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN"],"license":"BSD-4-Clause"},"src/LMSRStabilized.sol":{"keccak256":"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b","urls":["bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3","dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB"],"license":"UNLICENSED"}},"version":1},"id":42} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea264697066735822122043a81c5a8112d10309d1ad8e6f619479e20ed7226ff1858199395f0823c2442864736f6c634300081e0033","sourceMap":"552:41558:41:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea264697066735822122043a81c5a8112d10309d1ad8e6f619479e20ed7226ff1858199395f0823c2442864736f6c634300081e0033","sourceMap":"552:41558:41:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Stabilized LMSR library with incremental exp(z) caching for gas efficiency. - Stores b (64.64), M (shift), Z = sum exp(z_i), z[i] = (q_i / b) - M - Caches e[i] = exp(z[i]) so we avoid recomputing exp() for every asset on each trade. - Provides closed-form \\u0394C on deposit, amount-out for asset->asset, and incremental applyDeposit/applyWithdraw that update e[i] and Z in O(1).\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/LMSRStabilized.sol\":\"LMSRStabilized\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/abdk-libraries-solidity/ABDKMath64x64.sol\":{\"keccak256\":\"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97\",\"license\":\"BSD-4-Clause\",\"urls\":[\"bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7\",\"dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN\"]},\"src/LMSRStabilized.sol\":{\"keccak256\":\"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3\",\"dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/LMSRStabilized.sol":"LMSRStabilized"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/abdk-libraries-solidity/ABDKMath64x64.sol":{"keccak256":"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97","urls":["bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7","dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN"],"license":"BSD-4-Clause"},"src/LMSRStabilized.sol":{"keccak256":"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b","urls":["bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3","dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB"],"license":"UNLICENSED"}},"version":1},"id":41} \ No newline at end of file diff --git a/deployment/11155111/v1/out/LMSRStabilizedBalancedPair.sol/LMSRStabilizedBalancedPair.json b/deployment/11155111/v1/out/LMSRStabilizedBalancedPair.sol/LMSRStabilizedBalancedPair.json index e3db5aa..08cefb6 100644 --- a/deployment/11155111/v1/out/LMSRStabilizedBalancedPair.sol/LMSRStabilizedBalancedPair.json +++ b/deployment/11155111/v1/out/LMSRStabilizedBalancedPair.sol/LMSRStabilizedBalancedPair.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea26469706673582212207b738d2a73692c4ef9caa0271e6969b1039466e2d67d251b700fd148ddd9dc3e64736f6c634300081e0033","sourceMap":"265:8588:43:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea26469706673582212207b738d2a73692c4ef9caa0271e6969b1039466e2d67d251b700fd148ddd9dc3e64736f6c634300081e0033","sourceMap":"265:8588:43:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Specialized functions for the 2-asset stablecoin case\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/LMSRStabilizedBalancedPair.sol\":\"LMSRStabilizedBalancedPair\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/abdk-libraries-solidity/ABDKMath64x64.sol\":{\"keccak256\":\"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97\",\"license\":\"BSD-4-Clause\",\"urls\":[\"bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7\",\"dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN\"]},\"src/LMSRStabilized.sol\":{\"keccak256\":\"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3\",\"dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB\"]},\"src/LMSRStabilizedBalancedPair.sol\":{\"keccak256\":\"0x782f3baf92f74152c0b93b95199abbb3a36c75c921454260c8b0237f91d7c59d\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://04d463c4fdcb6c8e2ebf9aed649ff21cca759ba73a4c93659e30c7df25e26c81\",\"dweb:/ipfs/QmUxmWytiw5VYJRUrFbSGm1oWmDPQ4q23pnkmK1q9P4apN\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/LMSRStabilizedBalancedPair.sol":"LMSRStabilizedBalancedPair"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/abdk-libraries-solidity/ABDKMath64x64.sol":{"keccak256":"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97","urls":["bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7","dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN"],"license":"BSD-4-Clause"},"src/LMSRStabilized.sol":{"keccak256":"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b","urls":["bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3","dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB"],"license":"UNLICENSED"},"src/LMSRStabilizedBalancedPair.sol":{"keccak256":"0x782f3baf92f74152c0b93b95199abbb3a36c75c921454260c8b0237f91d7c59d","urls":["bzz-raw://04d463c4fdcb6c8e2ebf9aed649ff21cca759ba73a4c93659e30c7df25e26c81","dweb:/ipfs/QmUxmWytiw5VYJRUrFbSGm1oWmDPQ4q23pnkmK1q9P4apN"],"license":"UNLICENSED"}},"version":1},"id":43} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea26469706673582212207b738d2a73692c4ef9caa0271e6969b1039466e2d67d251b700fd148ddd9dc3e64736f6c634300081e0033","sourceMap":"265:8588:42:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea26469706673582212207b738d2a73692c4ef9caa0271e6969b1039466e2d67d251b700fd148ddd9dc3e64736f6c634300081e0033","sourceMap":"265:8588:42:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Specialized functions for the 2-asset stablecoin case\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/LMSRStabilizedBalancedPair.sol\":\"LMSRStabilizedBalancedPair\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/abdk-libraries-solidity/ABDKMath64x64.sol\":{\"keccak256\":\"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97\",\"license\":\"BSD-4-Clause\",\"urls\":[\"bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7\",\"dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN\"]},\"src/LMSRStabilized.sol\":{\"keccak256\":\"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3\",\"dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB\"]},\"src/LMSRStabilizedBalancedPair.sol\":{\"keccak256\":\"0x782f3baf92f74152c0b93b95199abbb3a36c75c921454260c8b0237f91d7c59d\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://04d463c4fdcb6c8e2ebf9aed649ff21cca759ba73a4c93659e30c7df25e26c81\",\"dweb:/ipfs/QmUxmWytiw5VYJRUrFbSGm1oWmDPQ4q23pnkmK1q9P4apN\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/LMSRStabilizedBalancedPair.sol":"LMSRStabilizedBalancedPair"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/abdk-libraries-solidity/ABDKMath64x64.sol":{"keccak256":"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97","urls":["bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7","dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN"],"license":"BSD-4-Clause"},"src/LMSRStabilized.sol":{"keccak256":"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b","urls":["bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3","dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB"],"license":"UNLICENSED"},"src/LMSRStabilizedBalancedPair.sol":{"keccak256":"0x782f3baf92f74152c0b93b95199abbb3a36c75c921454260c8b0237f91d7c59d","urls":["bzz-raw://04d463c4fdcb6c8e2ebf9aed649ff21cca759ba73a4c93659e30c7df25e26c81","dweb:/ipfs/QmUxmWytiw5VYJRUrFbSGm1oWmDPQ4q23pnkmK1q9P4apN"],"license":"UNLICENSED"}},"version":1},"id":42} \ No newline at end of file diff --git a/deployment/11155111/v1/out/LowLevelCall.sol/LowLevelCall.json b/deployment/11155111/v1/out/LowLevelCall.sol/LowLevelCall.json index 13a3970..45a034c 100644 --- a/deployment/11155111/v1/out/LowLevelCall.sol/LowLevelCall.json +++ b/deployment/11155111/v1/out/LowLevelCall.sol/LowLevelCall.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220ff1724fa31d9e324ea702ba224919eb915aeafa31fa3c696ca265c0e46de134064736f6c634300081e0033","sourceMap":"348:5083:30:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea2646970667358221220ff1724fa31d9e324ea702ba224919eb915aeafa31fa3c696ca265c0e46de134064736f6c634300081e0033","sourceMap":"348:5083:30:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library of low level call functions that implement different calling strategies to deal with the return data. WARNING: Using this library requires an advanced understanding of Solidity and how the EVM works. It is recommended to use the {Address} library instead.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol\":\"LowLevelCall\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x50e81a8b089e3f382b6c915aa0166773de64ea4756e8f9479d9943a5f956ddf5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bfeb96a150537222e2191c03887127499a4f21dfb5f9a7211da4d81749b52848\",\"dweb:/ipfs/QmYR75ECbsBuxSiXmGvGfNKJRLoK5MdLUZL1bd8SixzxL4\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol":"LowLevelCall"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol":{"keccak256":"0x50e81a8b089e3f382b6c915aa0166773de64ea4756e8f9479d9943a5f956ddf5","urls":["bzz-raw://bfeb96a150537222e2191c03887127499a4f21dfb5f9a7211da4d81749b52848","dweb:/ipfs/QmYR75ECbsBuxSiXmGvGfNKJRLoK5MdLUZL1bd8SixzxL4"],"license":"MIT"}},"version":1},"id":30} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220ff1724fa31d9e324ea702ba224919eb915aeafa31fa3c696ca265c0e46de134064736f6c634300081e0033","sourceMap":"348:5083:28:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea2646970667358221220ff1724fa31d9e324ea702ba224919eb915aeafa31fa3c696ca265c0e46de134064736f6c634300081e0033","sourceMap":"348:5083:28:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library of low level call functions that implement different calling strategies to deal with the return data. WARNING: Using this library requires an advanced understanding of Solidity and how the EVM works. It is recommended to use the {Address} library instead.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol\":\"LowLevelCall\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x50e81a8b089e3f382b6c915aa0166773de64ea4756e8f9479d9943a5f956ddf5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bfeb96a150537222e2191c03887127499a4f21dfb5f9a7211da4d81749b52848\",\"dweb:/ipfs/QmYR75ECbsBuxSiXmGvGfNKJRLoK5MdLUZL1bd8SixzxL4\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol":"LowLevelCall"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol":{"keccak256":"0x50e81a8b089e3f382b6c915aa0166773de64ea4756e8f9479d9943a5f956ddf5","urls":["bzz-raw://bfeb96a150537222e2191c03887127499a4f21dfb5f9a7211da4d81749b52848","dweb:/ipfs/QmYR75ECbsBuxSiXmGvGfNKJRLoK5MdLUZL1bd8SixzxL4"],"license":"MIT"}},"version":1},"id":28} \ No newline at end of file diff --git a/deployment/11155111/v1/out/MockERC20.sol/MockERC20.json b/deployment/11155111/v1/out/MockERC20.sol/MockERC20.json index 0aa0672..5e05549 100644 --- a/deployment/11155111/v1/out/MockERC20.sol/MockERC20.json +++ b/deployment/11155111/v1/out/MockERC20.sol/MockERC20.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"symbol","type":"string","internalType":"string"},{"name":"decimals_","type":"uint8","internalType":"uint8"}],"stateMutability":"nonpayable"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60a06040523461033057610f158038038061001981610334565b9283398101906060818303126103305780516001600160401b0381116103305782610045918301610359565b60208201519092906001600160401b03811161033057604091610069918401610359565b91015160ff811681036103305782516001600160401b03811161024157600354600181811c91168015610326575b602082101461022357601f81116102c3575b506020601f821160011461026057819293945f92610255575b50508160011b915f199060031b1c1916176003555b81516001600160401b03811161024157600454600181811c91168015610237575b602082101461022357601f81116101c0575b50602092601f821160011461015f57928192935f92610154575b50508160011b915f199060031b1c1916176004555b608052604051610b6a90816103ab82396080518161060b0152f35b015190505f80610124565b601f1982169360045f52805f20915f5b8681106101a85750836001959610610190575b505050811b01600455610139565b01515f1960f88460031b161c191690555f8080610182565b9192602060018192868501518155019401920161016f565b60045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c81019160208410610219575b601f0160051c01905b81811061020e575061010a565b5f8155600101610201565b90915081906101f8565b634e487b7160e01b5f52602260045260245ffd5b90607f16906100f8565b634e487b7160e01b5f52604160045260245ffd5b015190505f806100c2565b601f1982169060035f52805f20915f5b8181106102ab57509583600195969710610293575b505050811b016003556100d7565b01515f1960f88460031b161c191690555f8080610285565b9192602060018192868b015181550194019201610270565b60035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f830160051c8101916020841061031c575b601f0160051c01905b81811061031157506100a9565b5f8155600101610304565b90915081906102fb565b90607f1690610097565b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761024157604052565b81601f82011215610330578051906001600160401b03821161024157610388601f8301601f1916602001610334565b928284526020838301011161033057815f9260208093018386015e830101529056fe6080806040526004361015610012575f80fd5b5f3560e01c90816306fdde03146108ab57508063095ea7b3146107fe57806318160ddd146107c357806323b872dd1461062f578063313ce567146105d457806340c10f19146104d557806370a082311461047357806395d89b41146102805780639dc29fac14610174578063a9059cbb146101255763dd62ed3e14610095575f80fd5b346101215760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610121576100cc610a24565b73ffffffffffffffffffffffffffffffffffffffff6100e9610a47565b91165f52600160205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060405f2054604051908152f35b5f80fd5b346101215760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101215761016961015f610a24565b6024359033610a6a565b602060405160018152f35b346101215760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610121576101ab610a24565b73ffffffffffffffffffffffffffffffffffffffff6024359116801561025457805f525f60205260405f2054828110610222576020835f947fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587528684520360408620558060025403600255604051908152a3005b907fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b34610121575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610121576040515f600454908160011c60018316928315610469575b60208210841461043c5781855284939081156103dc5750600114610362575b5003601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681019067ffffffffffffffff82118183101761033557610331829182604052826109dc565b0390f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60045f90815291507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b8183106103c057505081016020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06102e5565b602091935080600191548385880101520191019091839261038c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208581019190915291151560051b840190910191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090506102e5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b90607f16906102c6565b346101215760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101215773ffffffffffffffffffffffffffffffffffffffff6104bf610a24565b165f525f602052602060405f2054604051908152f35b346101215760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101215761050c610a24565b73ffffffffffffffffffffffffffffffffffffffff1660243581156105a8576002549080820180921161057b5760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef915f9360025584845283825260408420818154019055604051908152a3005b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b34610121575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101215760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012157610666610a24565b61066e610a47565b6044359073ffffffffffffffffffffffffffffffffffffffff831692835f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f20547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81106106ea575b506101699350610a6a565b83811061078f57841561076357331561073757610169945f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f526020528360405f2091039055846106df565b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b83907ffb8f41b2000000000000000000000000000000000000000000000000000000005f523360045260245260445260645ffd5b34610121575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610121576020600254604051908152f35b346101215760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012157610835610a24565b6024359033156107635773ffffffffffffffffffffffffffffffffffffffff1690811561073757335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b34610121575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610121575f600354908160011c600183169283156109d2575b60208210841461043c5781855284939081156103dc5750600114610958575003601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681019067ffffffffffffffff82118183101761033557610331829182604052826109dc565b60035f90815291507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b8183106109b657505081016020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06102e5565b6020919350806001915483858801015201910190918392610982565b90607f16906108ee565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361012157565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361012157565b73ffffffffffffffffffffffffffffffffffffffff169081156102545773ffffffffffffffffffffffffffffffffffffffff169182156105a857815f525f60205260405f2054818110610b0257817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffdfea2646970667358221220f2b47661898a48e4ea1cef6728d72eb6ad5b0e4151cfef076f1504e3a44e54c664736f6c634300081e0033","sourceMap":"135:450:56:-:0;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;135:450:56;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;135:450:56;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;135:450:56;;;;1648:13:23;135:450:56;;;;;;;;;;;-1:-1:-1;135:450:56;;;;;;;;;;;-1:-1:-1;135:450:56;;;;;;;;;;;;;-1:-1:-1;135:450:56;;;;;;;;;;;;;1648:13:23;135:450:56;;;;;1648:13:23;135:450:56;;;;-1:-1:-1;;;;;135:450:56;;;;1671:17:23;135:450:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;135:450:56;;;;;;;;;;;;;1648:13:23;135:450:56;;;;;1671:17:23;135:450:56;;300:20;;135:450;;;;;;;;300:20;135:450;;;;;;;;;;-1:-1:-1;135:450:56;;;;;;;;;;1671:17:23;-1:-1:-1;135:450:56;;-1:-1:-1;135:450:56;;-1:-1:-1;135:450:56;;;;;;;;;;;;;;;;;;;;;1671:17:23;135:450:56;;;;;;;;;;1648:13:23;135:450:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1671:17:23;-1:-1:-1;135:450:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;135:450:56;;;;;;;;;-1:-1:-1;135:450:56;;;;;;;;-1:-1:-1;135:450:56;;1671:17:23;135:450:56;;-1:-1:-1;135:450:56;;;;;;;;;;;;-1:-1:-1;135:450:56;;1671:17:23;135:450:56;;-1:-1:-1;135:450:56;;;;;-1:-1:-1;135:450:56;;;;;;;;;;1648:13:23;-1:-1:-1;135:450:56;;-1:-1:-1;135:450:56;;-1:-1:-1;135:450:56;;;;;;;;;;;;;;;;;;;;;;;1648:13:23;135:450:56;;;;;;;;;;1648:13:23;135:450:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1648:13:23;-1:-1:-1;135:450:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;135:450:56;;;;;;;;;-1:-1:-1;135:450:56;;;;;;;;;;;;-1:-1:-1;135:450:56;;;;;;;;;-1:-1:-1;;135:450:56;;;-1:-1:-1;;;;;135:450:56;;;;;;;;;;:::o;:::-;;;;;;;;;;;;-1:-1:-1;;;;;135:450:56;;;;;;;;-1:-1:-1;;135:450:56;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;135:450:56;;;;;;;;;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f3560e01c90816306fdde03146108ab57508063095ea7b3146107fe57806318160ddd146107c357806323b872dd1461062f578063313ce567146105d457806340c10f19146104d557806370a082311461047357806395d89b41146102805780639dc29fac14610174578063a9059cbb146101255763dd62ed3e14610095575f80fd5b346101215760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610121576100cc610a24565b73ffffffffffffffffffffffffffffffffffffffff6100e9610a47565b91165f52600160205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060405f2054604051908152f35b5f80fd5b346101215760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101215761016961015f610a24565b6024359033610a6a565b602060405160018152f35b346101215760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610121576101ab610a24565b73ffffffffffffffffffffffffffffffffffffffff6024359116801561025457805f525f60205260405f2054828110610222576020835f947fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587528684520360408620558060025403600255604051908152a3005b907fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b34610121575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610121576040515f600454908160011c60018316928315610469575b60208210841461043c5781855284939081156103dc5750600114610362575b5003601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681019067ffffffffffffffff82118183101761033557610331829182604052826109dc565b0390f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60045f90815291507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b8183106103c057505081016020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06102e5565b602091935080600191548385880101520191019091839261038c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208581019190915291151560051b840190910191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090506102e5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b90607f16906102c6565b346101215760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101215773ffffffffffffffffffffffffffffffffffffffff6104bf610a24565b165f525f602052602060405f2054604051908152f35b346101215760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101215761050c610a24565b73ffffffffffffffffffffffffffffffffffffffff1660243581156105a8576002549080820180921161057b5760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef915f9360025584845283825260408420818154019055604051908152a3005b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b34610121575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101215760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012157610666610a24565b61066e610a47565b6044359073ffffffffffffffffffffffffffffffffffffffff831692835f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f20547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81106106ea575b506101699350610a6a565b83811061078f57841561076357331561073757610169945f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f526020528360405f2091039055846106df565b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b83907ffb8f41b2000000000000000000000000000000000000000000000000000000005f523360045260245260445260645ffd5b34610121575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610121576020600254604051908152f35b346101215760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012157610835610a24565b6024359033156107635773ffffffffffffffffffffffffffffffffffffffff1690811561073757335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b34610121575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610121575f600354908160011c600183169283156109d2575b60208210841461043c5781855284939081156103dc5750600114610958575003601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681019067ffffffffffffffff82118183101761033557610331829182604052826109dc565b60035f90815291507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b8183106109b657505081016020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06102e5565b6020919350806001915483858801015201910190918392610982565b90607f16906108ee565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361012157565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361012157565b73ffffffffffffffffffffffffffffffffffffffff169081156102545773ffffffffffffffffffffffffffffffffffffffff169182156105a857815f525f60205260405f2054818110610b0257817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffdfea2646970667358221220f2b47661898a48e4ea1cef6728d72eb6ad5b0e4151cfef076f1504e3a44e54c664736f6c634300081e0033","sourceMap":"135:450:56:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;3561:11:23;135:450:56;;;;;;3561:27:23;135:450:56;-1:-1:-1;135:450:56;;;;;-1:-1:-1;135:450:56;;;;;;;;;;;;;;;;;;;;;;;3388:5:23;135:450:56;;:::i;:::-;;;735:10:28;;3388:5:23;:::i;:::-;135:450:56;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;7958:21:23;;7954:89;;135:450:56;;;;;;;;;;6244:19:23;;;6240:115;;135:450:56;;;;6987:25:23;135:450:56;;;;;;;;;;;;;6714:21:23;135:450:56;;6714:21:23;135:450:56;;;;;;6987:25:23;135:450:56;6240:115:23;6290:50;;135:450:56;6290:50:23;135:450:56;;;;;;;;6290:50:23;7954:89;8002:30;135:450:56;8002:30:23;135:450:56;;;;;8002:30:23;135:450:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;135:450:56;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;135:450:56;;;;;;;-1:-1:-1;;135:450:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;135:450:56;;-1:-1:-1;135:450:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;7432:21:23;;7428:91;;6137:21;135:450:56;;;;;;;;;;;6987:25:23;135:450:56;;;6137:21:23;135:450:56;;;;;;;;;;;;;;;;;;;;;6987:25:23;135:450:56;;;;;;;;;;;7428:91:23;7476:32;135:450:56;7476:32:23;135:450:56;;;;;7476:32:23;135:450:56;;;;;;;;;;;;;;;401:8;135:450;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;735:10:28;135:450:56;-1:-1:-1;135:450:56;;;;-1:-1:-1;135:450:56;;10505:17:23;10486:36;;10482:309;;135:450:56;4890:5:23;;;;;:::i;10482:309::-;10542:24;;;10538:130;;9719:19;;9715:89;;735:10:28;9817:21:23;9813:90;;4890:5;135:450:56;;;;;;;;;;735:10:28;135:450:56;-1:-1:-1;135:450:56;;;;;-1:-1:-1;135:450:56;;;;;10482:309:23;;;9813:90;9861:31;135:450:56;9861:31:23;135:450:56;;;;;9861:31:23;9715:89;9761:32;135:450:56;9761:32:23;135:450:56;;;;;9761:32:23;10538:130;10593:60;;;135:450:56;10593:60:23;735:10:28;135:450:56;;;;;;;;10593:60:23;135:450:56;;;;;;;;;;;;2881:12:23;135:450:56;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;735:10:28;;9719:19:23;9715:89;;135:450:56;;9817:21:23;;;9813:90;;735:10:28;135:450:56;;;;;;;;;-1:-1:-1;135:450:56;;;;;-1:-1:-1;135:450:56;;;;;;;9991:31:23;135:450:56;735:10:28;9991:31:23;;135:450:56;;;;;;;;;;;;;;;;;;;1837:5:23;135:450:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;135:450:56;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1837:5:23;135:450:56;;;;;-1:-1:-1;135:450:56;;;;;;;-1:-1:-1;;135:450:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;5297:300:23:-;135:450:56;;5380:18:23;;;5376:86;;135:450:56;;5475:16:23;;;5471:86;;135:450:56;5396:1:23;135:450:56;5396:1:23;135:450:56;;;5396:1:23;135:450:56;;6244:19:23;;;6240:115;;135:450:56;6987:25:23;135:450:56;;;;5396:1:23;135:450:56;5396:1:23;135:450:56;;;;5396:1:23;135:450:56;;;5396:1:23;135:450:56;5396:1:23;135:450:56;;;5396:1:23;135:450:56;;;;;;;;;;;;6987:25:23;5297:300::o;6240:115::-;6290:50;;5396:1;6290:50;;135:450:56;;;;;;5396:1:23;6290:50","linkReferences":{},"immutableReferences":{"53560":[{"start":1547,"length":32}]}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(address,uint256)":"9dc29fac","decimals()":"313ce567","mint(address,uint256)":"40c10f19","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/MockERC20.sol\":\"MockERC20\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd\",\"dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x3ce148ed98f31ec9c463b32ee66f96194f0de89e41d7da3ef9e084f0effce06e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3939cd40f5bf5ea382e5af5c5011c1b998bb88b4872774aa0de0071cb0c0d49e\",\"dweb:/ipfs/QmWtEDNECUaeYYAQoP6epe4TGYphAbbfG7aEmKVhLHq451\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"test/MockERC20.sol\":{\"keccak256\":\"0x0bc6f65e240dafff70f1f2d9069163c38b7f18f2b9f719c348b2525a3f3862de\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f52582fc050d9b461de199c55e270df101cc88d515f063db84f1f7250d9fe470\",\"dweb:/ipfs/QmPNhnGkM4Fw9EQoZT1ivMymeBjTKHkv2UzSK83WQPMwc6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burn"},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/MockERC20.sol":"MockERC20"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86","urls":["bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd","dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0x3ce148ed98f31ec9c463b32ee66f96194f0de89e41d7da3ef9e084f0effce06e","urls":["bzz-raw://3939cd40f5bf5ea382e5af5c5011c1b998bb88b4872774aa0de0071cb0c0d49e","dweb:/ipfs/QmWtEDNECUaeYYAQoP6epe4TGYphAbbfG7aEmKVhLHq451"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"test/MockERC20.sol":{"keccak256":"0x0bc6f65e240dafff70f1f2d9069163c38b7f18f2b9f719c348b2525a3f3862de","urls":["bzz-raw://f52582fc050d9b461de199c55e270df101cc88d515f063db84f1f7250d9fe470","dweb:/ipfs/QmPNhnGkM4Fw9EQoZT1ivMymeBjTKHkv2UzSK83WQPMwc6"],"license":"UNLICENSED"}},"version":1},"id":56} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"symbol","type":"string","internalType":"string"},{"name":"decimals_","type":"uint8","internalType":"uint8"}],"stateMutability":"nonpayable"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60a06040523461033057610f158038038061001981610334565b9283398101906060818303126103305780516001600160401b0381116103305782610045918301610359565b60208201519092906001600160401b03811161033057604091610069918401610359565b91015160ff811681036103305782516001600160401b03811161024157600354600181811c91168015610326575b602082101461022357601f81116102c3575b506020601f821160011461026057819293945f92610255575b50508160011b915f199060031b1c1916176003555b81516001600160401b03811161024157600454600181811c91168015610237575b602082101461022357601f81116101c0575b50602092601f821160011461015f57928192935f92610154575b50508160011b915f199060031b1c1916176004555b608052604051610b6a90816103ab82396080518161060b0152f35b015190505f80610124565b601f1982169360045f52805f20915f5b8681106101a85750836001959610610190575b505050811b01600455610139565b01515f1960f88460031b161c191690555f8080610182565b9192602060018192868501518155019401920161016f565b60045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c81019160208410610219575b601f0160051c01905b81811061020e575061010a565b5f8155600101610201565b90915081906101f8565b634e487b7160e01b5f52602260045260245ffd5b90607f16906100f8565b634e487b7160e01b5f52604160045260245ffd5b015190505f806100c2565b601f1982169060035f52805f20915f5b8181106102ab57509583600195969710610293575b505050811b016003556100d7565b01515f1960f88460031b161c191690555f8080610285565b9192602060018192868b015181550194019201610270565b60035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f830160051c8101916020841061031c575b601f0160051c01905b81811061031157506100a9565b5f8155600101610304565b90915081906102fb565b90607f1690610097565b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761024157604052565b81601f82011215610330578051906001600160401b03821161024157610388601f8301601f1916602001610334565b928284526020838301011161033057815f9260208093018386015e830101529056fe6080806040526004361015610012575f80fd5b5f3560e01c90816306fdde03146108ab57508063095ea7b3146107fe57806318160ddd146107c357806323b872dd1461062f578063313ce567146105d457806340c10f19146104d557806370a082311461047357806395d89b41146102805780639dc29fac14610174578063a9059cbb146101255763dd62ed3e14610095575f80fd5b346101215760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610121576100cc610a24565b73ffffffffffffffffffffffffffffffffffffffff6100e9610a47565b91165f52600160205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060405f2054604051908152f35b5f80fd5b346101215760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101215761016961015f610a24565b6024359033610a6a565b602060405160018152f35b346101215760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610121576101ab610a24565b73ffffffffffffffffffffffffffffffffffffffff6024359116801561025457805f525f60205260405f2054828110610222576020835f947fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587528684520360408620558060025403600255604051908152a3005b907fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b34610121575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610121576040515f600454908160011c60018316928315610469575b60208210841461043c5781855284939081156103dc5750600114610362575b5003601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681019067ffffffffffffffff82118183101761033557610331829182604052826109dc565b0390f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60045f90815291507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b8183106103c057505081016020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06102e5565b602091935080600191548385880101520191019091839261038c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208581019190915291151560051b840190910191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090506102e5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b90607f16906102c6565b346101215760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101215773ffffffffffffffffffffffffffffffffffffffff6104bf610a24565b165f525f602052602060405f2054604051908152f35b346101215760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101215761050c610a24565b73ffffffffffffffffffffffffffffffffffffffff1660243581156105a8576002549080820180921161057b5760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef915f9360025584845283825260408420818154019055604051908152a3005b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b34610121575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101215760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012157610666610a24565b61066e610a47565b6044359073ffffffffffffffffffffffffffffffffffffffff831692835f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f20547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81106106ea575b506101699350610a6a565b83811061078f57841561076357331561073757610169945f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f526020528360405f2091039055846106df565b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b83907ffb8f41b2000000000000000000000000000000000000000000000000000000005f523360045260245260445260645ffd5b34610121575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610121576020600254604051908152f35b346101215760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012157610835610a24565b6024359033156107635773ffffffffffffffffffffffffffffffffffffffff1690811561073757335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b34610121575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610121575f600354908160011c600183169283156109d2575b60208210841461043c5781855284939081156103dc5750600114610958575003601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681019067ffffffffffffffff82118183101761033557610331829182604052826109dc565b60035f90815291507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b8183106109b657505081016020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06102e5565b6020919350806001915483858801015201910190918392610982565b90607f16906108ee565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361012157565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361012157565b73ffffffffffffffffffffffffffffffffffffffff169081156102545773ffffffffffffffffffffffffffffffffffffffff169182156105a857815f525f60205260405f2054818110610b0257817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffdfea2646970667358221220f2b47661898a48e4ea1cef6728d72eb6ad5b0e4151cfef076f1504e3a44e54c664736f6c634300081e0033","sourceMap":"135:450:55:-:0;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;135:450:55;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;135:450:55;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;135:450:55;;;;1648:13:21;135:450:55;;;;;;;;;;;-1:-1:-1;135:450:55;;;;;;;;;;;-1:-1:-1;135:450:55;;;;;;;;;;;;;-1:-1:-1;135:450:55;;;;;;;;;;;;;1648:13:21;135:450:55;;;;;1648:13:21;135:450:55;;;;-1:-1:-1;;;;;135:450:55;;;;1671:17:21;135:450:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;135:450:55;;;;;;;;;;;;;1648:13:21;135:450:55;;;;;1671:17:21;135:450:55;;300:20;;135:450;;;;;;;;300:20;135:450;;;;;;;;;;-1:-1:-1;135:450:55;;;;;;;;;;1671:17:21;-1:-1:-1;135:450:55;;-1:-1:-1;135:450:55;;-1:-1:-1;135:450:55;;;;;;;;;;;;;;;;;;;;;1671:17:21;135:450:55;;;;;;;;;;1648:13:21;135:450:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1671:17:21;-1:-1:-1;135:450:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;135:450:55;;;;;;;;;-1:-1:-1;135:450:55;;;;;;;;-1:-1:-1;135:450:55;;1671:17:21;135:450:55;;-1:-1:-1;135:450:55;;;;;;;;;;;;-1:-1:-1;135:450:55;;1671:17:21;135:450:55;;-1:-1:-1;135:450:55;;;;;-1:-1:-1;135:450:55;;;;;;;;;;1648:13:21;-1:-1:-1;135:450:55;;-1:-1:-1;135:450:55;;-1:-1:-1;135:450:55;;;;;;;;;;;;;;;;;;;;;;;1648:13:21;135:450:55;;;;;;;;;;1648:13:21;135:450:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1648:13:21;-1:-1:-1;135:450:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;135:450:55;;;;;;;;;-1:-1:-1;135:450:55;;;;;;;;;;;;-1:-1:-1;135:450:55;;;;;;;;;-1:-1:-1;;135:450:55;;;-1:-1:-1;;;;;135:450:55;;;;;;;;;;:::o;:::-;;;;;;;;;;;;-1:-1:-1;;;;;135:450:55;;;;;;;;-1:-1:-1;;135:450:55;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;135:450:55;;;;;;;;;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f3560e01c90816306fdde03146108ab57508063095ea7b3146107fe57806318160ddd146107c357806323b872dd1461062f578063313ce567146105d457806340c10f19146104d557806370a082311461047357806395d89b41146102805780639dc29fac14610174578063a9059cbb146101255763dd62ed3e14610095575f80fd5b346101215760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610121576100cc610a24565b73ffffffffffffffffffffffffffffffffffffffff6100e9610a47565b91165f52600160205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060405f2054604051908152f35b5f80fd5b346101215760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101215761016961015f610a24565b6024359033610a6a565b602060405160018152f35b346101215760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610121576101ab610a24565b73ffffffffffffffffffffffffffffffffffffffff6024359116801561025457805f525f60205260405f2054828110610222576020835f947fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587528684520360408620558060025403600255604051908152a3005b907fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b34610121575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610121576040515f600454908160011c60018316928315610469575b60208210841461043c5781855284939081156103dc5750600114610362575b5003601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681019067ffffffffffffffff82118183101761033557610331829182604052826109dc565b0390f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60045f90815291507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b8183106103c057505081016020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06102e5565b602091935080600191548385880101520191019091839261038c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208581019190915291151560051b840190910191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090506102e5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b90607f16906102c6565b346101215760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101215773ffffffffffffffffffffffffffffffffffffffff6104bf610a24565b165f525f602052602060405f2054604051908152f35b346101215760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101215761050c610a24565b73ffffffffffffffffffffffffffffffffffffffff1660243581156105a8576002549080820180921161057b5760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef915f9360025584845283825260408420818154019055604051908152a3005b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b34610121575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101215760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012157610666610a24565b61066e610a47565b6044359073ffffffffffffffffffffffffffffffffffffffff831692835f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f20547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81106106ea575b506101699350610a6a565b83811061078f57841561076357331561073757610169945f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f526020528360405f2091039055846106df565b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b83907ffb8f41b2000000000000000000000000000000000000000000000000000000005f523360045260245260445260645ffd5b34610121575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610121576020600254604051908152f35b346101215760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012157610835610a24565b6024359033156107635773ffffffffffffffffffffffffffffffffffffffff1690811561073757335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b34610121575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610121575f600354908160011c600183169283156109d2575b60208210841461043c5781855284939081156103dc5750600114610958575003601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681019067ffffffffffffffff82118183101761033557610331829182604052826109dc565b60035f90815291507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b8183106109b657505081016020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06102e5565b6020919350806001915483858801015201910190918392610982565b90607f16906108ee565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361012157565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361012157565b73ffffffffffffffffffffffffffffffffffffffff169081156102545773ffffffffffffffffffffffffffffffffffffffff169182156105a857815f525f60205260405f2054818110610b0257817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffdfea2646970667358221220f2b47661898a48e4ea1cef6728d72eb6ad5b0e4151cfef076f1504e3a44e54c664736f6c634300081e0033","sourceMap":"135:450:55:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;3561:11:21;135:450:55;;;;;;3561:27:21;135:450:55;-1:-1:-1;135:450:55;;;;;-1:-1:-1;135:450:55;;;;;;;;;;;;;;;;;;;;;;;3388:5:21;135:450:55;;:::i;:::-;;;735:10:26;;3388:5:21;:::i;:::-;135:450:55;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;7958:21:21;;7954:89;;135:450:55;;;;;;;;;;6244:19:21;;;6240:115;;135:450:55;;;;6987:25:21;135:450:55;;;;;;;;;;;;;6714:21:21;135:450:55;;6714:21:21;135:450:55;;;;;;6987:25:21;135:450:55;6240:115:21;6290:50;;135:450:55;6290:50:21;135:450:55;;;;;;;;6290:50:21;7954:89;8002:30;135:450:55;8002:30:21;135:450:55;;;;;8002:30:21;135:450:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;135:450:55;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;135:450:55;;;;;;;-1:-1:-1;;135:450:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;135:450:55;;-1:-1:-1;135:450:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;7432:21:21;;7428:91;;6137:21;135:450:55;;;;;;;;;;;6987:25:21;135:450:55;;;6137:21:21;135:450:55;;;;;;;;;;;;;;;;;;;;;6987:25:21;135:450:55;;;;;;;;;;;7428:91:21;7476:32;135:450:55;7476:32:21;135:450:55;;;;;7476:32:21;135:450:55;;;;;;;;;;;;;;;401:8;135:450;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;735:10:26;135:450:55;-1:-1:-1;135:450:55;;;;-1:-1:-1;135:450:55;;10505:17:21;10486:36;;10482:309;;135:450:55;4890:5:21;;;;;:::i;10482:309::-;10542:24;;;10538:130;;9719:19;;9715:89;;735:10:26;9817:21:21;9813:90;;4890:5;135:450:55;;;;;;;;;;735:10:26;135:450:55;-1:-1:-1;135:450:55;;;;;-1:-1:-1;135:450:55;;;;;10482:309:21;;;9813:90;9861:31;135:450:55;9861:31:21;135:450:55;;;;;9861:31:21;9715:89;9761:32;135:450:55;9761:32:21;135:450:55;;;;;9761:32:21;10538:130;10593:60;;;135:450:55;10593:60:21;735:10:26;135:450:55;;;;;;;;10593:60:21;135:450:55;;;;;;;;;;;;2881:12:21;135:450:55;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;735:10:26;;9719:19:21;9715:89;;135:450:55;;9817:21:21;;;9813:90;;735:10:26;135:450:55;;;;;;;;;-1:-1:-1;135:450:55;;;;;-1:-1:-1;135:450:55;;;;;;;9991:31:21;135:450:55;735:10:26;9991:31:21;;135:450:55;;;;;;;;;;;;;;;;;;;1837:5:21;135:450:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;135:450:55;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1837:5:21;135:450:55;;;;;-1:-1:-1;135:450:55;;;;;;;-1:-1:-1;;135:450:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;5297:300:21:-;135:450:55;;5380:18:21;;;5376:86;;135:450:55;;5475:16:21;;;5471:86;;135:450:55;5396:1:21;135:450:55;5396:1:21;135:450:55;;;5396:1:21;135:450:55;;6244:19:21;;;6240:115;;135:450:55;6987:25:21;135:450:55;;;;5396:1:21;135:450:55;5396:1:21;135:450:55;;;;5396:1:21;135:450:55;;;5396:1:21;135:450:55;5396:1:21;135:450:55;;;5396:1:21;135:450:55;;;;;;;;;;;;6987:25:21;5297:300::o;6240:115::-;6290:50;;5396:1;6290:50;;135:450:55;;;;;;5396:1:21;6290:50","linkReferences":{},"immutableReferences":{"53535":[{"start":1547,"length":32}]}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(address,uint256)":"9dc29fac","decimals()":"313ce567","mint(address,uint256)":"40c10f19","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/MockERC20.sol\":\"MockERC20\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd\",\"dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x3ce148ed98f31ec9c463b32ee66f96194f0de89e41d7da3ef9e084f0effce06e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3939cd40f5bf5ea382e5af5c5011c1b998bb88b4872774aa0de0071cb0c0d49e\",\"dweb:/ipfs/QmWtEDNECUaeYYAQoP6epe4TGYphAbbfG7aEmKVhLHq451\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"test/MockERC20.sol\":{\"keccak256\":\"0x0bc6f65e240dafff70f1f2d9069163c38b7f18f2b9f719c348b2525a3f3862de\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f52582fc050d9b461de199c55e270df101cc88d515f063db84f1f7250d9fe470\",\"dweb:/ipfs/QmPNhnGkM4Fw9EQoZT1ivMymeBjTKHkv2UzSK83WQPMwc6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burn"},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"test/MockERC20.sol":"MockERC20"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86","urls":["bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd","dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0x3ce148ed98f31ec9c463b32ee66f96194f0de89e41d7da3ef9e084f0effce06e","urls":["bzz-raw://3939cd40f5bf5ea382e5af5c5011c1b998bb88b4872774aa0de0071cb0c0d49e","dweb:/ipfs/QmWtEDNECUaeYYAQoP6epe4TGYphAbbfG7aEmKVhLHq451"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"test/MockERC20.sol":{"keccak256":"0x0bc6f65e240dafff70f1f2d9069163c38b7f18f2b9f719c348b2525a3f3862de","urls":["bzz-raw://f52582fc050d9b461de199c55e270df101cc88d515f063db84f1f7250d9fe470","dweb:/ipfs/QmPNhnGkM4Fw9EQoZT1ivMymeBjTKHkv2UzSK83WQPMwc6"],"license":"UNLICENSED"}},"version":1},"id":55} \ No newline at end of file diff --git a/deployment/11155111/v1/out/NativeWrapper.sol/NativeWrapper.json b/deployment/11155111/v1/out/NativeWrapper.sol/NativeWrapper.json index dd02e9a..885a6af 100644 --- a/deployment/11155111/v1/out/NativeWrapper.sol/NativeWrapper.json +++ b/deployment/11155111/v1/out/NativeWrapper.sol/NativeWrapper.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"deposit","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"withdraw","inputs":[{"name":"wad","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","deposit()":"d0e30db0","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(uint256)":"2e1a7d4d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/NativeWrapper.sol\":\"NativeWrapper\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"src/NativeWrapper.sol\":{\"keccak256\":\"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238\",\"dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"payable","type":"function","name":"deposit"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"wad","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdraw"}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"decimals()":{"details":"Returns the decimals places of the token."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/NativeWrapper.sol":"NativeWrapper"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"src/NativeWrapper.sol":{"keccak256":"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579","urls":["bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238","dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB"],"license":"UNLICENSED"}},"version":1},"id":44} \ No newline at end of file +{"abi":[{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"deposit","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"withdraw","inputs":[{"name":"wad","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","deposit()":"d0e30db0","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(uint256)":"2e1a7d4d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/NativeWrapper.sol\":\"NativeWrapper\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"src/NativeWrapper.sol\":{\"keccak256\":\"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238\",\"dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"payable","type":"function","name":"deposit"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"wad","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdraw"}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"decimals()":{"details":"Returns the decimals places of the token."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/NativeWrapper.sol":"NativeWrapper"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"src/NativeWrapper.sol":{"keccak256":"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579","urls":["bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238","dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB"],"license":"UNLICENSED"}},"version":1},"id":43} \ No newline at end of file diff --git a/deployment/11155111/v1/out/OwnableExternal.sol/OwnableExternal.json b/deployment/11155111/v1/out/OwnableExternal.sol/OwnableExternal.json index 580bfe9..6036463 100644 --- a/deployment/11155111/v1/out/OwnableExternal.sol/OwnableExternal.json +++ b/deployment/11155111/v1/out/OwnableExternal.sol/OwnableExternal.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. The initial owner is set to the address provided by the deployer. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the address provided by the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/OwnableExternal.sol\":\"OwnableExternal\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"src/IOwnable.sol\":{\"keccak256\":\"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1\",\"dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9\"]},\"src/OwnableExternal.sol\":{\"keccak256\":\"0x0a0199368ad20a31e7169b3e56449bf022c9d680e0d487c118608a7f14cb7efb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3348a063649e01acf9c6aa6b7ce2ecf62ace8c6f1467477de7d605996f08ec64\",\"dweb:/ipfs/QmSoxb35FFsNCgXgWn91CupvjpGmyM31wcfxAVpVFFPecX\"]},\"src/OwnableInternal.sol\":{\"keccak256\":\"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca\",\"dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"constructor":{"details":"Initializes the contract setting the address provided by the deployer as the initial owner."},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/OwnableExternal.sol":"OwnableExternal"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"src/IOwnable.sol":{"keccak256":"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990","urls":["bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1","dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9"],"license":"MIT"},"src/OwnableExternal.sol":{"keccak256":"0x0a0199368ad20a31e7169b3e56449bf022c9d680e0d487c118608a7f14cb7efb","urls":["bzz-raw://3348a063649e01acf9c6aa6b7ce2ecf62ace8c6f1467477de7d605996f08ec64","dweb:/ipfs/QmSoxb35FFsNCgXgWn91CupvjpGmyM31wcfxAVpVFFPecX"],"license":"MIT"},"src/OwnableInternal.sol":{"keccak256":"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581","urls":["bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca","dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE"],"license":"MIT"}},"version":1},"id":45} \ No newline at end of file +{"abi":[{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. The initial owner is set to the address provided by the deployer. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the address provided by the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/OwnableExternal.sol\":\"OwnableExternal\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"src/IOwnable.sol\":{\"keccak256\":\"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1\",\"dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9\"]},\"src/OwnableExternal.sol\":{\"keccak256\":\"0x0a0199368ad20a31e7169b3e56449bf022c9d680e0d487c118608a7f14cb7efb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3348a063649e01acf9c6aa6b7ce2ecf62ace8c6f1467477de7d605996f08ec64\",\"dweb:/ipfs/QmSoxb35FFsNCgXgWn91CupvjpGmyM31wcfxAVpVFFPecX\"]},\"src/OwnableInternal.sol\":{\"keccak256\":\"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca\",\"dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"constructor":{"details":"Initializes the contract setting the address provided by the deployer as the initial owner."},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/OwnableExternal.sol":"OwnableExternal"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"src/IOwnable.sol":{"keccak256":"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990","urls":["bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1","dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9"],"license":"MIT"},"src/OwnableExternal.sol":{"keccak256":"0x0a0199368ad20a31e7169b3e56449bf022c9d680e0d487c118608a7f14cb7efb","urls":["bzz-raw://3348a063649e01acf9c6aa6b7ce2ecf62ace8c6f1467477de7d605996f08ec64","dweb:/ipfs/QmSoxb35FFsNCgXgWn91CupvjpGmyM31wcfxAVpVFFPecX"],"license":"MIT"},"src/OwnableInternal.sol":{"keccak256":"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581","urls":["bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca","dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE"],"license":"MIT"}},"version":1},"id":44} \ No newline at end of file diff --git a/deployment/11155111/v1/out/OwnableInternal.sol/OwnableInternal.json b/deployment/11155111/v1/out/OwnableInternal.sol/OwnableInternal.json index 3f77f71..38ba306 100644 --- a/deployment/11155111/v1/out/OwnableInternal.sol/OwnableInternal.json +++ b/deployment/11155111/v1/out/OwnableInternal.sol/OwnableInternal.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"OpenZeppelin's Ownable contract, split into internal and external parts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/OwnableInternal.sol\":\"OwnableInternal\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"src/IOwnable.sol\":{\"keccak256\":\"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1\",\"dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9\"]},\"src/OwnableInternal.sol\":{\"keccak256\":\"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca\",\"dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/OwnableInternal.sol":"OwnableInternal"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"src/IOwnable.sol":{"keccak256":"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990","urls":["bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1","dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9"],"license":"MIT"},"src/OwnableInternal.sol":{"keccak256":"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581","urls":["bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca","dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE"],"license":"MIT"}},"version":1},"id":46} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"OpenZeppelin's Ownable contract, split into internal and external parts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/OwnableInternal.sol\":\"OwnableInternal\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"src/IOwnable.sol\":{\"keccak256\":\"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1\",\"dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9\"]},\"src/OwnableInternal.sol\":{\"keccak256\":\"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca\",\"dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/OwnableInternal.sol":"OwnableInternal"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"src/IOwnable.sol":{"keccak256":"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990","urls":["bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1","dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9"],"license":"MIT"},"src/OwnableInternal.sol":{"keccak256":"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581","urls":["bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca","dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE"],"license":"MIT"}},"version":1},"id":45} \ No newline at end of file diff --git a/deployment/11155111/v1/out/PartyPlanner.sol/PartyPlanner.json b/deployment/11155111/v1/out/PartyPlanner.sol/PartyPlanner.json index c265beb..ca36b41 100644 --- a/deployment/11155111/v1/out/PartyPlanner.sol/PartyPlanner.json +++ b/deployment/11155111/v1/out/PartyPlanner.sol/PartyPlanner.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"owner_","type":"address","internalType":"address"},{"name":"wrapper_","type":"address","internalType":"contract NativeWrapper"},{"name":"swapImpl_","type":"address","internalType":"contract PartyPoolSwapImpl"},{"name":"mintImpl_","type":"address","internalType":"contract PartyPoolMintImpl"},{"name":"deployer_","type":"address","internalType":"contract IPartyPoolDeployer"},{"name":"balancedPairDeployer_","type":"address","internalType":"contract IPartyPoolDeployer"},{"name":"protocolFeePpm_","type":"uint256","internalType":"uint256"},{"name":"protocolFeeAddress_","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"getAllPools","inputs":[{"name":"offset","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"pools","type":"address[]","internalType":"contract IPartyPool[]"}],"stateMutability":"view"},{"type":"function","name":"getAllTokens","inputs":[{"name":"offset","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getPoolSupported","inputs":[{"name":"pool","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getPoolsByToken","inputs":[{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"offset","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"pools","type":"address[]","internalType":"contract IPartyPool[]"}],"stateMutability":"view"},{"type":"function","name":"mintImpl","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract PartyPoolMintImpl"}],"stateMutability":"view"},{"type":"function","name":"newPool","inputs":[{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"},{"name":"tokens_","type":"address[]","internalType":"contract IERC20[]"},{"name":"kappa_","type":"int128","internalType":"int128"},{"name":"swapFeesPpm_","type":"uint256[]","internalType":"uint256[]"},{"name":"flashFeePpm_","type":"uint256","internalType":"uint256"},{"name":"stable_","type":"bool","internalType":"bool"},{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"initialDeposits","type":"uint256[]","internalType":"uint256[]"},{"name":"initialLpAmount","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"pool","type":"address","internalType":"contract IPartyPool"},{"name":"lpAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"newPool","inputs":[{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"},{"name":"tokens_","type":"address[]","internalType":"contract IERC20[]"},{"name":"tradeFrac_","type":"int128","internalType":"int128"},{"name":"targetSlippage_","type":"int128","internalType":"int128"},{"name":"swapFeePpm_","type":"uint256","internalType":"uint256"},{"name":"flashFeePpm_","type":"uint256","internalType":"uint256"},{"name":"stable_","type":"bool","internalType":"bool"},{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"initialDeposits","type":"uint256[]","internalType":"uint256[]"},{"name":"initialLpAmount","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"pool","type":"address","internalType":"contract IPartyPool"},{"name":"lpAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"newPool","inputs":[{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"},{"name":"tokens_","type":"address[]","internalType":"contract IERC20[]"},{"name":"kappa_","type":"int128","internalType":"int128"},{"name":"swapFeePpm_","type":"uint256","internalType":"uint256"},{"name":"flashFeePpm_","type":"uint256","internalType":"uint256"},{"name":"stable_","type":"bool","internalType":"bool"},{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"initialDeposits","type":"uint256[]","internalType":"uint256[]"},{"name":"initialLpAmount","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"pool","type":"address","internalType":"contract IPartyPool"},{"name":"lpAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"poolCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"poolsByTokenCount","inputs":[{"name":"token","type":"address","internalType":"contract IERC20"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"protocolFeeAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"protocolFeePpm","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setProtocolFeeAddress","inputs":[{"name":"feeAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"swapImpl","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract PartyPoolSwapImpl"}],"stateMutability":"view"},{"type":"function","name":"tokenCount","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":"wrapper","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract NativeWrapper"}],"stateMutability":"view"},{"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":"PartyStarted","inputs":[{"name":"pool","type":"address","indexed":true,"internalType":"contract IPartyPool"},{"name":"name","type":"string","indexed":false,"internalType":"string"},{"name":"symbol","type":"string","indexed":false,"internalType":"string"},{"name":"tokens","type":"address[]","indexed":false,"internalType":"contract IERC20[]"}],"anonymous":false},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x610140346103f557601f6136f238819003918201601f19168301916001600160401b038311848410176103f957808492610100946040528339810103126103f5576100498161040d565b60208201519091906001600160a01b03811681036103f55760408201516001600160a01b03811691908281036103f5576060840151906001600160a01b038216908183036103f55761009d6080870161040d565b936100aa60a0880161040d565b956100bc60e060c08a0151990161040d565b986001600160a01b03169182156103e2575f80546001600160a01b031981168517825560405194916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a360e0521561038f575060a05215610339576080526001600160a01b038116156102e357610100526001600160a01b038116156102785761012052620f42408110156102335760c052600180546001600160a01b0319166001600160a01b03929092169190911790556040516132d09081610422823960805181818161052101528181610f5d015281816117490152612683015260a0518181816104f80152818161101c01528181611720015261265a015260c0518181816104a2015281816116ca015281816122fe0152612604015260e0518181816104cf0152818161108a015281816116f70152612631015261010051818181610a7b01528181611bb40152612a760152610120518181816103310152818161155901526124970152f35b60405162461bcd60e51b815260206004820152601c60248201527f506c616e6e65723a2070726f746f636f6c20666565203e3d2070706d000000006044820152606490fd5b60405162461bcd60e51b815260206004820152603660248201527f506c616e6e65723a2062616c616e6365642070616972206465706c6f7965722060448201527f616464726573732063616e6e6f74206265207a65726f000000000000000000006064820152608490fd5b60405162461bcd60e51b815260206004820152602860248201527f506c616e6e65723a206465706c6f79657220616464726573732063616e6e6f74604482015267206265207a65726f60c01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602860248201527f506c616e6e65723a206d696e74496d706c20616464726573732063616e6e6f74604482015267206265207a65726f60c01b6064820152608490fd5b62461bcd60e51b815260206004820152602860248201527f506c616e6e65723a2073776170496d706c20616464726573732063616e6e6f74604482015267206265207a65726f60c01b6064820152608490fd5b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036103f55756fe60806040526004361015610011575f80fd5b5f3560e01c806314c870c014612ab157806360cf7d4a146123215780636b4082d1146122c95780636b7b911214612247578063715018a6146121ad5780638da5cb5b1461215d5780639a043832146120ec5780639f181b5e146120b1578063a4689b24146110d4578063a7753f09146110ae578063ac210cc714611040578063c405e44214610fd2578063cce516b714610f81578063f0d1ae4f14610f13578063f2fde38b14610e27578063f317672514610dbf578063f525cb6814610d84578063f63772fc146101515763f70a3a17146100ea575f80fd5b3461014d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5773ffffffffffffffffffffffffffffffffffffffff610136612afb565b165f526006602052602060405f2054604051908152f35b5f80fd5b3461014d576101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5760043567ffffffffffffffff811161014d576101a1903690600401612bae565b60243567ffffffffffffffff811161014d576101c1903690600401612bae565b9060443567ffffffffffffffff811161014d576101e2903690600401612c3a565b906101eb612cb5565b926101f4612d22565b906101fd612d31565b93610206612d54565b956101243567ffffffffffffffff811161014d5761022b909695963690600401612cc5565b61016435966102386131d5565b83519861025d6102478b612c22565b9a6102556040519c8d612b6d565b808c52612c22565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe060208c01910136823760843560011c985f5b87518110156102af57808b6102a88f93600194612e6f565b5201610290565b50908b918b6102bc6131d5565b8015908115610d79575b5015610d1b578751865103610c975773ffffffffffffffffffffffffffffffffffffffff16928315610c135773ffffffffffffffffffffffffffffffffffffffff16958615610b8f57600f0b985f8a1315610b31578251885103610aad5780610aa2575b15610a79577f00000000000000000000000000000000000000000000000000000000000000009198905b5f5473ffffffffffffffffffffffffffffffffffffffff169160015473ffffffffffffffffffffffffffffffffffffffff16906040519b8c947f6ae73ce3000000000000000000000000000000000000000000000000000000008652600486015260248501610180905261018485016103cd9089612f54565b8581037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc016044870152610401908d612f54565b8581037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc016064870152610435908c612f97565b9160848601528482037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0160a4860152519081815260200192905f5b818110610a60575050505f73ffffffffffffffffffffffffffffffffffffffff8460209694819460a43560c48401527f000000000000000000000000000000000000000000000000000000000000000060e4840152610104830152827f000000000000000000000000000000000000000000000000000000000000000016610124830152827f000000000000000000000000000000000000000000000000000000000000000016610144830152827f0000000000000000000000000000000000000000000000000000000000000000166101648301520393165af1968715610904575f97610a0f575b5061056487612fe0565b73ffffffffffffffffffffffffffffffffffffffff871691825f52600460205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790555f5b86518110156106d05773ffffffffffffffffffffffffffffffffffffffff6105db8289612e6f565b511690815f52600560205260ff60405f20541615610611575b6001915f52600660205261060b8a60405f20613050565b016105b3565b60035491680100000000000000008310156106a3578061066661063b856001809701600355612e15565b819391549073ffffffffffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b9055805f52600560205260405f20837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905591506105f4565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b509087837ff45e30d37dc5ef98e17708308b886213b8f485ea52d495067eed8d4977423f2261071589956107316107238d604051948594606086526060860190612f54565b908482036020860152612f54565b828103604084015288612f97565b0390a25f5b835181101561095b576107498187612e6f565b51610757575b600101610736565b73ffffffffffffffffffffffffffffffffffffffff6107768286612e6f565b51166107828288612e6f565b51604051907f23b872dd000000000000000000000000000000000000000000000000000000005f52856004528760245260445260205f60648180865af19060015f511482161561093a575b6040525f6060521561090f57506024602073ffffffffffffffffffffffffffffffffffffffff6107fd8488612e6f565b5116604051928380927f70a082310000000000000000000000000000000000000000000000000000000082528a60048301525afa908115610904575f916108d3575b5061084a8288612e6f565b511461074f5760846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f6665652d6f6e2d7472616e7366657220746f6b656e73206e6f7420737570706f60448201527f72746564000000000000000000000000000000000000000000000000000000006064820152fd5b90506020813d82116108fc575b816108ed60209383612b6d565b8101031261014d57518861083f565b3d91506108e0565b6040513d5f823e3d90fd5b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b90600181151661095257823b15153d151616906107cd565b503d5f823e3d90fd5b6040517f6d8d0ff300000000000000000000000000000000000000000000000000000000815260048101889052610144356024820152826020826044815f8b5af1918215610904575f926109db575b506040805173ffffffffffffffffffffffffffffffffffffffff9092168252602082019290925290819081015b0390f35b9091506020813d602011610a07575b816109f760209383612b6d565b8101031261014d575190826109aa565b3d91506109ea565b9096506020813d602011610a58575b81610a2b60209383612b6d565b8101031261014d575173ffffffffffffffffffffffffffffffffffffffff8116810361014d57958761055a565b3d9150610a1e565b825185528d955060209485019490920191600101610471565b7f0000000000000000000000000000000000000000000000000000000000000000919890610354565b50600287511461032a565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f506c616e6e65723a206665657320616e6420746f6b656e73206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f506c616e6e65723a206b61707061206d757374206265203e20300000000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f506c616e6e65723a2072656365697665722063616e6e6f74206265207a65726f60448201527f20616464726573730000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f506c616e6e65723a2070617965722063616e6e6f74206265207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f506c616e6e65723a20746f6b656e7320616e64206465706f73697473206c656e60448201527f677468206d69736d6174636800000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f506c616e6e65723a20646561646c696e652065786365656465640000000000006044820152fd5b90504211158b6102c6565b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d576020600254604051908152f35b3461014d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5773ffffffffffffffffffffffffffffffffffffffff610e0b612afb565b165f526004602052602060ff60405f2054166040519015158152f35b3461014d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5773ffffffffffffffffffffffffffffffffffffffff610e73612afb565b610e7b6131d5565b168015610ee75773ffffffffffffffffffffffffffffffffffffffff5f54827fffffffffffffffffffffffff00000000000000000000000000000000000000008216175f55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b7f1e4fbdf7000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461014d576109d76110c86110c236612d78565b9061312b565b60405191829182612b1e565b3461014d576101a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5760043567ffffffffffffffff811161014d57611124903690600401612bae565b60243567ffffffffffffffff811161014d57611144903690600401612bae565b9060443567ffffffffffffffff811161014d57611165903690600401612c3a565b9161116e612cb5565b916084359182600f0b80930361014d5760e43594851515860361014d57611193612d54565b94610124359073ffffffffffffffffffffffffffffffffffffffff821680920361014d576101443567ffffffffffffffff811161014d576111d8903690600401612cc5565b9061018435966111e66131d5565b81600f0b906801000000000000000082121561202d5768010000000000000000811215611fa9578551916001831115611f4b575f1215611eed578068010000000000000000017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580611ed3575b1561014d57600f0b9061126883613221565b927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908111611ea65761129c90613221565b600f0b0260401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580611e8c575b1561014d57600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580611e72575b1561014d57600f90810b92900b8112611e03575f821315611da55761132e91613239565b600f0b5f81138080611d93575b15611d35571561014d575f908068010000000000000000821215611d28575b806401000000006002921215611d1c575b62010000811215611d10575b610100811215611d04575b6010811215611cf8575b6004811215611ced575b1215611ce3575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f8313611cc757506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082600f0b1461014d5761142f915f03600f0b613239565b600f0b5f811315611c6957801561014d57700100000000000000000000000000000000057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580611c4f575b1561014d57600f0b945f861315611bf1576114999796976131d5565b8351986114a86102478b612c22565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe060208c01910136823760a43560011c985f5b87518110156114fa57808b6114f38f93600194612e6f565b52016114db565b50908b918b6115076131d5565b8015908115611be6575b5015610d1b578751865103610c975773ffffffffffffffffffffffffffffffffffffffff16928315610c13578615610b8f578251885103610aad5780611bdb575b15611bb2577f00000000000000000000000000000000000000000000000000000000000000009198905b5f5473ffffffffffffffffffffffffffffffffffffffff169160015473ffffffffffffffffffffffffffffffffffffffff16906040519b8c947f6ae73ce3000000000000000000000000000000000000000000000000000000008652600486015260248501610180905261018485016115f59089612f54565b8581037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc016044870152611629908d612f54565b8581037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01606487015261165d908c612f97565b9160848601528482037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0160a4860152519081815260200192905f5b818110611b99575050505f73ffffffffffffffffffffffffffffffffffffffff8460209694819460c43560c48401527f000000000000000000000000000000000000000000000000000000000000000060e4840152610104830152827f000000000000000000000000000000000000000000000000000000000000000016610124830152827f000000000000000000000000000000000000000000000000000000000000000016610144830152827f0000000000000000000000000000000000000000000000000000000000000000166101648301520393165af1968715610904575f97611b48575b5061178c87612fe0565b73ffffffffffffffffffffffffffffffffffffffff871691825f52600460205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790555f5b86518110156118a05773ffffffffffffffffffffffffffffffffffffffff6118038289612e6f565b511690815f52600560205260ff60405f20541615611839575b6001915f5260066020526118338a60405f20613050565b016117db565b60035491680100000000000000008310156106a3578061186361063b856001809701600355612e15565b9055805f52600560205260405f20837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055915061181c565b509087837ff45e30d37dc5ef98e17708308b886213b8f485ea52d495067eed8d4977423f2261071589956118e56107238d604051948594606086526060860190612f54565b0390a25f5b8351811015611ad0576118fd8187612e6f565b5161190b575b6001016118ea565b73ffffffffffffffffffffffffffffffffffffffff61192a8286612e6f565b51166119368288612e6f565b51604051907f23b872dd000000000000000000000000000000000000000000000000000000005f52856004528760245260445260205f60648180865af19060015f5114821615611ab8575b6040525f6060521561090f57506024602073ffffffffffffffffffffffffffffffffffffffff6119b18488612e6f565b5116604051928380927f70a082310000000000000000000000000000000000000000000000000000000082528a60048301525afa908115610904575f91611a87575b506119fe8288612e6f565b51146119035760846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f6665652d6f6e2d7472616e7366657220746f6b656e73206e6f7420737570706f60448201527f72746564000000000000000000000000000000000000000000000000000000006064820152fd5b90506020813d8211611ab0575b81611aa160209383612b6d565b8101031261014d5751886119f3565b3d9150611a94565b90600181151661095257823b15153d15161690611981565b6040517f6d8d0ff300000000000000000000000000000000000000000000000000000000815260048101889052610164356024820152826020826044815f8b5af1918215610904575f926109db57506040805173ffffffffffffffffffffffffffffffffffffffff9290921682526020820192909252f35b9096506020813d602011611b91575b81611b6460209383612b6d565b8101031261014d575173ffffffffffffffffffffffffffffffffffffffff8116810361014d579587611782565b3d9150611b57565b825185528d955060209485019490920191600101611699565b7f000000000000000000000000000000000000000000000000000000000000000091989061157c565b506002875114611552565b90504211158b611511565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4d53523a206b617070613c3d300000000000000000000000000000000000006044820152fd5b506f7fffffffffffffffffffffffffffffff81131561147d565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4c4d53523a20793c3d30000000000000000000000000000000000000000000006044820152fd5b8002908160ff1c9182607f011c918302019160011d91906113d4565b906001019061139d565b92810192811d611396565b6004938401931d61138c565b6008938401931d611382565b6010938401931d611377565b6020938401931d61136b565b506040915080821d61135a565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4c4d53523a20626164204520726174696f0000000000000000000000000000006044820152fd5b5068010000000000000000821261133b565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4c4d53523a207320746f6f206c6172676520666f72206e0000000000000000006044820152fd5b5f821315611e145761132e91613239565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4c4d53523a2062616420736c697070616765206f72206e0000000000000000006044820152fd5b506f7fffffffffffffffffffffffffffffff81131561130a565b506f7fffffffffffffffffffffffffffffff8113156112cd565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b506f7fffffffffffffffffffffffffffffff811315611256565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4c4d53523a20663d3000000000000000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4c4d53523a206e3e3120726571756972656400000000000000000000000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f506c616e6e65723a20746172676574536c697070616765206d7573742062652060448201527f3c2031202836342e3634290000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f506c616e6e65723a20747261646546726163206d757374206265203c2031202860448201527f36342e36342900000000000000000000000000000000000000000000000000006064820152fd5b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d576020600354604051908152f35b3461014d576121036120fd36612d78565b9061308b565b6040518091602082016020835281518091526020604084019201905f5b81811061212e575050500390f35b825173ffffffffffffffffffffffffffffffffffffffff16845285945060209384019390920191600101612120565b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d576121e36131d5565b5f73ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461014d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5773ffffffffffffffffffffffffffffffffffffffff612293612afb565b61229b6131d5565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060015416176001555f80f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461014d576101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5760043567ffffffffffffffff811161014d57612371903690600401612bae565b60243567ffffffffffffffff811161014d57612391903690600401612bae565b60443567ffffffffffffffff811161014d576123b1903690600401612c3a565b6123b9612cb5565b60843567ffffffffffffffff811161014d576123d9903690600401612cc5565b6123e1612d22565b946123ea612d31565b916123f3612d54565b906101243567ffffffffffffffff811161014d57612415903690600401612cc5565b93610164356124226131d5565b8015908115612aa6575b5015610d1b578651855103610c975773ffffffffffffffffffffffffffffffffffffffff16918215610c135773ffffffffffffffffffffffffffffffffffffffff16948515610b8f57600f0b975f891315610b31578151875103610aad5780612a9b575b15612a74577f0000000000000000000000000000000000000000000000000000000000000000905b73ffffffffffffffffffffffffffffffffffffffff5f54169073ffffffffffffffffffffffffffffffffffffffff600154166040519a8b937f6ae73ce30000000000000000000000000000000000000000000000000000000085526004850152610180602485015261259461256461253461018487018a612f54565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8782030160448801528d612f54565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8682030160648701528b612f97565b9060848501527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8482030160a4850152602080845192838152019301905f5b818110612a5b575050505f73ffffffffffffffffffffffffffffffffffffffff8460209694819460a43560c48401527f000000000000000000000000000000000000000000000000000000000000000060e4840152610104830152827f000000000000000000000000000000000000000000000000000000000000000016610124830152827f000000000000000000000000000000000000000000000000000000000000000016610144830152827f0000000000000000000000000000000000000000000000000000000000000000166101648301520393165af1968715610904575f97612a0a575b506126c687612fe0565b73ffffffffffffffffffffffffffffffffffffffff871691825f52600460205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790555f5b86518110156127da5773ffffffffffffffffffffffffffffffffffffffff61273d8289612e6f565b511690815f52600560205260ff60405f20541615612773575b6001915f52600660205261276d8a60405f20613050565b01612715565b60035491680100000000000000008310156106a3578061279d61063b856001809701600355612e15565b9055805f52600560205260405f20837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790559150612756565b509087837ff45e30d37dc5ef98e17708308b886213b8f485ea52d495067eed8d4977423f22610715899561281f6107238d604051948594606086526060860190612f54565b0390a25f5b835181101561095b576128378187612e6f565b51612845575b600101612824565b73ffffffffffffffffffffffffffffffffffffffff6128648286612e6f565b51166128708288612e6f565b51604051907f23b872dd000000000000000000000000000000000000000000000000000000005f52856004528760245260445260205f60648180865af19060015f51148216156129f2575b6040525f6060521561090f57506024602073ffffffffffffffffffffffffffffffffffffffff6128eb8488612e6f565b5116604051928380927f70a082310000000000000000000000000000000000000000000000000000000082528a60048301525afa908115610904575f916129c1575b506129388288612e6f565b511461283d5760846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f6665652d6f6e2d7472616e7366657220746f6b656e73206e6f7420737570706f60448201527f72746564000000000000000000000000000000000000000000000000000000006064820152fd5b90506020813d82116129ea575b816129db60209383612b6d565b8101031261014d57518861292d565b3d91506129ce565b90600181151661095257823b15153d151616906128bb565b9096506020813d602011612a53575b81612a2660209383612b6d565b8101031261014d575173ffffffffffffffffffffffffffffffffffffffff8116810361014d5795876126bc565b3d9150612a19565b825185528d9550602094850194909201916001016125d3565b7f0000000000000000000000000000000000000000000000000000000000000000906124b8565b506002865114612490565b90504211158a61242c565b3461014d5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d576109d76110c8612aee612afb565b6044359060243590612e83565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361014d57565b60206040818301928281528451809452019201905f5b818110612b415750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101612b34565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176106a357604052565b81601f8201121561014d5780359067ffffffffffffffff82116106a35760405192612c0160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601160185612b6d565b8284526020838301011161014d57815f926020809301838601378301015290565b67ffffffffffffffff81116106a35760051b60200190565b9080601f8301121561014d57813590612c5282612c22565b92612c606040519485612b6d565b82845260208085019360051b82010191821161014d57602001915b818310612c885750505090565b823573ffffffffffffffffffffffffffffffffffffffff8116810361014d57815260209283019201612c7b565b6064359081600f0b820361014d57565b9080601f8301121561014d578135612cdc81612c22565b92612cea6040519485612b6d565b81845260208085019260051b82010192831161014d57602001905b828210612d125750505090565b8135815260209182019101612d05565b60c43590811515820361014d57565b60e4359073ffffffffffffffffffffffffffffffffffffffff8216820361014d57565b610104359073ffffffffffffffffffffffffffffffffffffffff8216820361014d57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc604091011261014d576004359060243590565b90612db682612c22565b612dc36040519182612b6d565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0612df18294612c22565b0190602036910137565b91908201809211611ea657565b91908203918211611ea657565b600354811015612e2d5760035f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8054821015612e2d575f5260205f2001905f90565b8051821015612e2d5760209160051b010190565b73ffffffffffffffffffffffffffffffffffffffff90929192165f52600660205260405f2090815480841015612f3857808491612ec08484612dfb565b1115612f3057612ed09250612e08565b905b612edb82612dac565b925f5b838110612eec575050505090565b8073ffffffffffffffffffffffffffffffffffffffff612f17612f1160019486612dfb565b86612e5a565b90549060031b1c16612f298288612e6f565b5201612ede565b505090612ed2565b50505050604051612f4a602082612b6d565b5f81525f36813790565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b90602080835192838152019201905f5b818110612fb45750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101612fa7565b600254680100000000000000008110156106a35773ffffffffffffffffffffffffffffffffffffffff61301e82600161304c94016002556002612e5a565b919093169083549073ffffffffffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b9055565b8054680100000000000000008110156106a35761301e8161304c93600173ffffffffffffffffffffffffffffffffffffffff94018155612e5a565b919060035480841015613119578084916130a58484612dfb565b1115613112576130b59250612e08565b6130be81612dac565b905f5b8181106130cf575090925050565b8073ffffffffffffffffffffffffffffffffffffffff6130f96130f460019489612dfb565b612e15565b90549060031b1c1661310b8286612e6f565b52016130c1565b50506130b5565b50509050604051612f4a602082612b6d565b90600254808310156131c4578083916131448484612dfb565b11156131bc576131549250612e08565b905b61315f82612dac565b915f91600254925b828110613175575050505090565b61317f8183612dfb565b9084821015612e2d5773ffffffffffffffffffffffffffffffffffffffff60019260025f5260205f200154166131b58288612e6f565b5201613167565b505090613156565b505050604051612f4a602082612b6d565b73ffffffffffffffffffffffffffffffffffffffff5f541633036131f557565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b677fffffffffffffff811161014d5760401b600f0b90565b90600f0b90811561014d5760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613280575b1561014d57600f0b90565b506f7fffffffffffffffffffffffffffffff81131561327556fea2646970667358221220c43e3b538be70614df138fb93465096e6d629b1716664b5620affbf747d33b3e64736f6c634300081e0033","sourceMap":"839:12537:48:-:0;;;;;;;;;;;;;-1:-1:-1;;839:12537:48;;;;-1:-1:-1;;;;;839:12537:48;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;839:12537:48;;;;;;;;;;-1:-1:-1;;;;;839:12537:48;;;;;;;;;;;;;;-1:-1:-1;;;;;839:12537:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;839:12537:48;;1018:26:45;;1014:95;;-1:-1:-1;839:12537:48;;-1:-1:-1;;;;;;839:12537:48;;;;;;;;;;-1:-1:-1;;;;;839:12537:48;;;;1104:49:46;;-1:-1:-1;1104:49:46;839:12537:48;3429:18;3465:32;839:12537;;3552:21;839:12537;3552:21;3591:32;839:12537;;;3678:21;-1:-1:-1;;;;;839:12537:48;;3717:32;839:12537;;;3804:32;-1:-1:-1;;;;;839:12537:48;;3854:44;839:12537;;3967:46;;4050:9;4032:27;;839:12537;;;;4102:34;839:12537;;;-1:-1:-1;;;;;;839:12537:48;-1:-1:-1;;;;;839:12537:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3967:46;839:12537;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;839:12537:48;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;839:12537:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;839:12537:48;;;;;;;;;;;;;;;;;-1:-1:-1;;;839:12537:48;;;;;;;;;;-1:-1:-1;;;839:12537:48;;;;;;;;;;;;;;;;;-1:-1:-1;;;839:12537:48;;;;;;;;-1:-1:-1;;;839:12537:48;;;;;;;;;;;;;;;;;-1:-1:-1;;;839:12537:48;;;;;;;1014:95:45;1067:31;;;-1:-1:-1;1067:31:45;-1:-1:-1;1067:31:45;839:12537:48;;-1:-1:-1;1067:31:45;839:12537:48;-1:-1:-1;839:12537:48;;;;;;-1:-1:-1;839:12537:48;;;;;-1:-1:-1;839:12537:48;;;;-1:-1:-1;;;;;839:12537:48;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806314c870c014612ab157806360cf7d4a146123215780636b4082d1146122c95780636b7b911214612247578063715018a6146121ad5780638da5cb5b1461215d5780639a043832146120ec5780639f181b5e146120b1578063a4689b24146110d4578063a7753f09146110ae578063ac210cc714611040578063c405e44214610fd2578063cce516b714610f81578063f0d1ae4f14610f13578063f2fde38b14610e27578063f317672514610dbf578063f525cb6814610d84578063f63772fc146101515763f70a3a17146100ea575f80fd5b3461014d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5773ffffffffffffffffffffffffffffffffffffffff610136612afb565b165f526006602052602060405f2054604051908152f35b5f80fd5b3461014d576101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5760043567ffffffffffffffff811161014d576101a1903690600401612bae565b60243567ffffffffffffffff811161014d576101c1903690600401612bae565b9060443567ffffffffffffffff811161014d576101e2903690600401612c3a565b906101eb612cb5565b926101f4612d22565b906101fd612d31565b93610206612d54565b956101243567ffffffffffffffff811161014d5761022b909695963690600401612cc5565b61016435966102386131d5565b83519861025d6102478b612c22565b9a6102556040519c8d612b6d565b808c52612c22565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe060208c01910136823760843560011c985f5b87518110156102af57808b6102a88f93600194612e6f565b5201610290565b50908b918b6102bc6131d5565b8015908115610d79575b5015610d1b578751865103610c975773ffffffffffffffffffffffffffffffffffffffff16928315610c135773ffffffffffffffffffffffffffffffffffffffff16958615610b8f57600f0b985f8a1315610b31578251885103610aad5780610aa2575b15610a79577f00000000000000000000000000000000000000000000000000000000000000009198905b5f5473ffffffffffffffffffffffffffffffffffffffff169160015473ffffffffffffffffffffffffffffffffffffffff16906040519b8c947f6ae73ce3000000000000000000000000000000000000000000000000000000008652600486015260248501610180905261018485016103cd9089612f54565b8581037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc016044870152610401908d612f54565b8581037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc016064870152610435908c612f97565b9160848601528482037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0160a4860152519081815260200192905f5b818110610a60575050505f73ffffffffffffffffffffffffffffffffffffffff8460209694819460a43560c48401527f000000000000000000000000000000000000000000000000000000000000000060e4840152610104830152827f000000000000000000000000000000000000000000000000000000000000000016610124830152827f000000000000000000000000000000000000000000000000000000000000000016610144830152827f0000000000000000000000000000000000000000000000000000000000000000166101648301520393165af1968715610904575f97610a0f575b5061056487612fe0565b73ffffffffffffffffffffffffffffffffffffffff871691825f52600460205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790555f5b86518110156106d05773ffffffffffffffffffffffffffffffffffffffff6105db8289612e6f565b511690815f52600560205260ff60405f20541615610611575b6001915f52600660205261060b8a60405f20613050565b016105b3565b60035491680100000000000000008310156106a3578061066661063b856001809701600355612e15565b819391549073ffffffffffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b9055805f52600560205260405f20837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905591506105f4565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b509087837ff45e30d37dc5ef98e17708308b886213b8f485ea52d495067eed8d4977423f2261071589956107316107238d604051948594606086526060860190612f54565b908482036020860152612f54565b828103604084015288612f97565b0390a25f5b835181101561095b576107498187612e6f565b51610757575b600101610736565b73ffffffffffffffffffffffffffffffffffffffff6107768286612e6f565b51166107828288612e6f565b51604051907f23b872dd000000000000000000000000000000000000000000000000000000005f52856004528760245260445260205f60648180865af19060015f511482161561093a575b6040525f6060521561090f57506024602073ffffffffffffffffffffffffffffffffffffffff6107fd8488612e6f565b5116604051928380927f70a082310000000000000000000000000000000000000000000000000000000082528a60048301525afa908115610904575f916108d3575b5061084a8288612e6f565b511461074f5760846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f6665652d6f6e2d7472616e7366657220746f6b656e73206e6f7420737570706f60448201527f72746564000000000000000000000000000000000000000000000000000000006064820152fd5b90506020813d82116108fc575b816108ed60209383612b6d565b8101031261014d57518861083f565b3d91506108e0565b6040513d5f823e3d90fd5b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b90600181151661095257823b15153d151616906107cd565b503d5f823e3d90fd5b6040517f6d8d0ff300000000000000000000000000000000000000000000000000000000815260048101889052610144356024820152826020826044815f8b5af1918215610904575f926109db575b506040805173ffffffffffffffffffffffffffffffffffffffff9092168252602082019290925290819081015b0390f35b9091506020813d602011610a07575b816109f760209383612b6d565b8101031261014d575190826109aa565b3d91506109ea565b9096506020813d602011610a58575b81610a2b60209383612b6d565b8101031261014d575173ffffffffffffffffffffffffffffffffffffffff8116810361014d57958761055a565b3d9150610a1e565b825185528d955060209485019490920191600101610471565b7f0000000000000000000000000000000000000000000000000000000000000000919890610354565b50600287511461032a565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f506c616e6e65723a206665657320616e6420746f6b656e73206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f506c616e6e65723a206b61707061206d757374206265203e20300000000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f506c616e6e65723a2072656365697665722063616e6e6f74206265207a65726f60448201527f20616464726573730000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f506c616e6e65723a2070617965722063616e6e6f74206265207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f506c616e6e65723a20746f6b656e7320616e64206465706f73697473206c656e60448201527f677468206d69736d6174636800000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f506c616e6e65723a20646561646c696e652065786365656465640000000000006044820152fd5b90504211158b6102c6565b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d576020600254604051908152f35b3461014d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5773ffffffffffffffffffffffffffffffffffffffff610e0b612afb565b165f526004602052602060ff60405f2054166040519015158152f35b3461014d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5773ffffffffffffffffffffffffffffffffffffffff610e73612afb565b610e7b6131d5565b168015610ee75773ffffffffffffffffffffffffffffffffffffffff5f54827fffffffffffffffffffffffff00000000000000000000000000000000000000008216175f55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b7f1e4fbdf7000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461014d576109d76110c86110c236612d78565b9061312b565b60405191829182612b1e565b3461014d576101a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5760043567ffffffffffffffff811161014d57611124903690600401612bae565b60243567ffffffffffffffff811161014d57611144903690600401612bae565b9060443567ffffffffffffffff811161014d57611165903690600401612c3a565b9161116e612cb5565b916084359182600f0b80930361014d5760e43594851515860361014d57611193612d54565b94610124359073ffffffffffffffffffffffffffffffffffffffff821680920361014d576101443567ffffffffffffffff811161014d576111d8903690600401612cc5565b9061018435966111e66131d5565b81600f0b906801000000000000000082121561202d5768010000000000000000811215611fa9578551916001831115611f4b575f1215611eed578068010000000000000000017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580611ed3575b1561014d57600f0b9061126883613221565b927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908111611ea65761129c90613221565b600f0b0260401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580611e8c575b1561014d57600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580611e72575b1561014d57600f90810b92900b8112611e03575f821315611da55761132e91613239565b600f0b5f81138080611d93575b15611d35571561014d575f908068010000000000000000821215611d28575b806401000000006002921215611d1c575b62010000811215611d10575b610100811215611d04575b6010811215611cf8575b6004811215611ced575b1215611ce3575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f8313611cc757506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082600f0b1461014d5761142f915f03600f0b613239565b600f0b5f811315611c6957801561014d57700100000000000000000000000000000000057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580611c4f575b1561014d57600f0b945f861315611bf1576114999796976131d5565b8351986114a86102478b612c22565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe060208c01910136823760a43560011c985f5b87518110156114fa57808b6114f38f93600194612e6f565b52016114db565b50908b918b6115076131d5565b8015908115611be6575b5015610d1b578751865103610c975773ffffffffffffffffffffffffffffffffffffffff16928315610c13578615610b8f578251885103610aad5780611bdb575b15611bb2577f00000000000000000000000000000000000000000000000000000000000000009198905b5f5473ffffffffffffffffffffffffffffffffffffffff169160015473ffffffffffffffffffffffffffffffffffffffff16906040519b8c947f6ae73ce3000000000000000000000000000000000000000000000000000000008652600486015260248501610180905261018485016115f59089612f54565b8581037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc016044870152611629908d612f54565b8581037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01606487015261165d908c612f97565b9160848601528482037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0160a4860152519081815260200192905f5b818110611b99575050505f73ffffffffffffffffffffffffffffffffffffffff8460209694819460c43560c48401527f000000000000000000000000000000000000000000000000000000000000000060e4840152610104830152827f000000000000000000000000000000000000000000000000000000000000000016610124830152827f000000000000000000000000000000000000000000000000000000000000000016610144830152827f0000000000000000000000000000000000000000000000000000000000000000166101648301520393165af1968715610904575f97611b48575b5061178c87612fe0565b73ffffffffffffffffffffffffffffffffffffffff871691825f52600460205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790555f5b86518110156118a05773ffffffffffffffffffffffffffffffffffffffff6118038289612e6f565b511690815f52600560205260ff60405f20541615611839575b6001915f5260066020526118338a60405f20613050565b016117db565b60035491680100000000000000008310156106a3578061186361063b856001809701600355612e15565b9055805f52600560205260405f20837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055915061181c565b509087837ff45e30d37dc5ef98e17708308b886213b8f485ea52d495067eed8d4977423f2261071589956118e56107238d604051948594606086526060860190612f54565b0390a25f5b8351811015611ad0576118fd8187612e6f565b5161190b575b6001016118ea565b73ffffffffffffffffffffffffffffffffffffffff61192a8286612e6f565b51166119368288612e6f565b51604051907f23b872dd000000000000000000000000000000000000000000000000000000005f52856004528760245260445260205f60648180865af19060015f5114821615611ab8575b6040525f6060521561090f57506024602073ffffffffffffffffffffffffffffffffffffffff6119b18488612e6f565b5116604051928380927f70a082310000000000000000000000000000000000000000000000000000000082528a60048301525afa908115610904575f91611a87575b506119fe8288612e6f565b51146119035760846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f6665652d6f6e2d7472616e7366657220746f6b656e73206e6f7420737570706f60448201527f72746564000000000000000000000000000000000000000000000000000000006064820152fd5b90506020813d8211611ab0575b81611aa160209383612b6d565b8101031261014d5751886119f3565b3d9150611a94565b90600181151661095257823b15153d15161690611981565b6040517f6d8d0ff300000000000000000000000000000000000000000000000000000000815260048101889052610164356024820152826020826044815f8b5af1918215610904575f926109db57506040805173ffffffffffffffffffffffffffffffffffffffff9290921682526020820192909252f35b9096506020813d602011611b91575b81611b6460209383612b6d565b8101031261014d575173ffffffffffffffffffffffffffffffffffffffff8116810361014d579587611782565b3d9150611b57565b825185528d955060209485019490920191600101611699565b7f000000000000000000000000000000000000000000000000000000000000000091989061157c565b506002875114611552565b90504211158b611511565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4d53523a206b617070613c3d300000000000000000000000000000000000006044820152fd5b506f7fffffffffffffffffffffffffffffff81131561147d565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4c4d53523a20793c3d30000000000000000000000000000000000000000000006044820152fd5b8002908160ff1c9182607f011c918302019160011d91906113d4565b906001019061139d565b92810192811d611396565b6004938401931d61138c565b6008938401931d611382565b6010938401931d611377565b6020938401931d61136b565b506040915080821d61135a565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4c4d53523a20626164204520726174696f0000000000000000000000000000006044820152fd5b5068010000000000000000821261133b565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4c4d53523a207320746f6f206c6172676520666f72206e0000000000000000006044820152fd5b5f821315611e145761132e91613239565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4c4d53523a2062616420736c697070616765206f72206e0000000000000000006044820152fd5b506f7fffffffffffffffffffffffffffffff81131561130a565b506f7fffffffffffffffffffffffffffffff8113156112cd565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b506f7fffffffffffffffffffffffffffffff811315611256565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4c4d53523a20663d3000000000000000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4c4d53523a206e3e3120726571756972656400000000000000000000000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f506c616e6e65723a20746172676574536c697070616765206d7573742062652060448201527f3c2031202836342e3634290000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f506c616e6e65723a20747261646546726163206d757374206265203c2031202860448201527f36342e36342900000000000000000000000000000000000000000000000000006064820152fd5b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d576020600354604051908152f35b3461014d576121036120fd36612d78565b9061308b565b6040518091602082016020835281518091526020604084019201905f5b81811061212e575050500390f35b825173ffffffffffffffffffffffffffffffffffffffff16845285945060209384019390920191600101612120565b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d576121e36131d5565b5f73ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461014d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5773ffffffffffffffffffffffffffffffffffffffff612293612afb565b61229b6131d5565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060015416176001555f80f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461014d576101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5760043567ffffffffffffffff811161014d57612371903690600401612bae565b60243567ffffffffffffffff811161014d57612391903690600401612bae565b60443567ffffffffffffffff811161014d576123b1903690600401612c3a565b6123b9612cb5565b60843567ffffffffffffffff811161014d576123d9903690600401612cc5565b6123e1612d22565b946123ea612d31565b916123f3612d54565b906101243567ffffffffffffffff811161014d57612415903690600401612cc5565b93610164356124226131d5565b8015908115612aa6575b5015610d1b578651855103610c975773ffffffffffffffffffffffffffffffffffffffff16918215610c135773ffffffffffffffffffffffffffffffffffffffff16948515610b8f57600f0b975f891315610b31578151875103610aad5780612a9b575b15612a74577f0000000000000000000000000000000000000000000000000000000000000000905b73ffffffffffffffffffffffffffffffffffffffff5f54169073ffffffffffffffffffffffffffffffffffffffff600154166040519a8b937f6ae73ce30000000000000000000000000000000000000000000000000000000085526004850152610180602485015261259461256461253461018487018a612f54565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8782030160448801528d612f54565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8682030160648701528b612f97565b9060848501527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8482030160a4850152602080845192838152019301905f5b818110612a5b575050505f73ffffffffffffffffffffffffffffffffffffffff8460209694819460a43560c48401527f000000000000000000000000000000000000000000000000000000000000000060e4840152610104830152827f000000000000000000000000000000000000000000000000000000000000000016610124830152827f000000000000000000000000000000000000000000000000000000000000000016610144830152827f0000000000000000000000000000000000000000000000000000000000000000166101648301520393165af1968715610904575f97612a0a575b506126c687612fe0565b73ffffffffffffffffffffffffffffffffffffffff871691825f52600460205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790555f5b86518110156127da5773ffffffffffffffffffffffffffffffffffffffff61273d8289612e6f565b511690815f52600560205260ff60405f20541615612773575b6001915f52600660205261276d8a60405f20613050565b01612715565b60035491680100000000000000008310156106a3578061279d61063b856001809701600355612e15565b9055805f52600560205260405f20837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790559150612756565b509087837ff45e30d37dc5ef98e17708308b886213b8f485ea52d495067eed8d4977423f22610715899561281f6107238d604051948594606086526060860190612f54565b0390a25f5b835181101561095b576128378187612e6f565b51612845575b600101612824565b73ffffffffffffffffffffffffffffffffffffffff6128648286612e6f565b51166128708288612e6f565b51604051907f23b872dd000000000000000000000000000000000000000000000000000000005f52856004528760245260445260205f60648180865af19060015f51148216156129f2575b6040525f6060521561090f57506024602073ffffffffffffffffffffffffffffffffffffffff6128eb8488612e6f565b5116604051928380927f70a082310000000000000000000000000000000000000000000000000000000082528a60048301525afa908115610904575f916129c1575b506129388288612e6f565b511461283d5760846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f6665652d6f6e2d7472616e7366657220746f6b656e73206e6f7420737570706f60448201527f72746564000000000000000000000000000000000000000000000000000000006064820152fd5b90506020813d82116129ea575b816129db60209383612b6d565b8101031261014d57518861292d565b3d91506129ce565b90600181151661095257823b15153d151616906128bb565b9096506020813d602011612a53575b81612a2660209383612b6d565b8101031261014d575173ffffffffffffffffffffffffffffffffffffffff8116810361014d5795876126bc565b3d9150612a19565b825185528d9550602094850194909201916001016125d3565b7f0000000000000000000000000000000000000000000000000000000000000000906124b8565b506002865114612490565b90504211158a61242c565b3461014d5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d576109d76110c8612aee612afb565b6044359060243590612e83565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361014d57565b60206040818301928281528451809452019201905f5b818110612b415750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101612b34565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176106a357604052565b81601f8201121561014d5780359067ffffffffffffffff82116106a35760405192612c0160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601160185612b6d565b8284526020838301011161014d57815f926020809301838601378301015290565b67ffffffffffffffff81116106a35760051b60200190565b9080601f8301121561014d57813590612c5282612c22565b92612c606040519485612b6d565b82845260208085019360051b82010191821161014d57602001915b818310612c885750505090565b823573ffffffffffffffffffffffffffffffffffffffff8116810361014d57815260209283019201612c7b565b6064359081600f0b820361014d57565b9080601f8301121561014d578135612cdc81612c22565b92612cea6040519485612b6d565b81845260208085019260051b82010192831161014d57602001905b828210612d125750505090565b8135815260209182019101612d05565b60c43590811515820361014d57565b60e4359073ffffffffffffffffffffffffffffffffffffffff8216820361014d57565b610104359073ffffffffffffffffffffffffffffffffffffffff8216820361014d57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc604091011261014d576004359060243590565b90612db682612c22565b612dc36040519182612b6d565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0612df18294612c22565b0190602036910137565b91908201809211611ea657565b91908203918211611ea657565b600354811015612e2d5760035f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8054821015612e2d575f5260205f2001905f90565b8051821015612e2d5760209160051b010190565b73ffffffffffffffffffffffffffffffffffffffff90929192165f52600660205260405f2090815480841015612f3857808491612ec08484612dfb565b1115612f3057612ed09250612e08565b905b612edb82612dac565b925f5b838110612eec575050505090565b8073ffffffffffffffffffffffffffffffffffffffff612f17612f1160019486612dfb565b86612e5a565b90549060031b1c16612f298288612e6f565b5201612ede565b505090612ed2565b50505050604051612f4a602082612b6d565b5f81525f36813790565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b90602080835192838152019201905f5b818110612fb45750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101612fa7565b600254680100000000000000008110156106a35773ffffffffffffffffffffffffffffffffffffffff61301e82600161304c94016002556002612e5a565b919093169083549073ffffffffffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b9055565b8054680100000000000000008110156106a35761301e8161304c93600173ffffffffffffffffffffffffffffffffffffffff94018155612e5a565b919060035480841015613119578084916130a58484612dfb565b1115613112576130b59250612e08565b6130be81612dac565b905f5b8181106130cf575090925050565b8073ffffffffffffffffffffffffffffffffffffffff6130f96130f460019489612dfb565b612e15565b90549060031b1c1661310b8286612e6f565b52016130c1565b50506130b5565b50509050604051612f4a602082612b6d565b90600254808310156131c4578083916131448484612dfb565b11156131bc576131549250612e08565b905b61315f82612dac565b915f91600254925b828110613175575050505090565b61317f8183612dfb565b9084821015612e2d5773ffffffffffffffffffffffffffffffffffffffff60019260025f5260205f200154166131b58288612e6f565b5201613167565b505090613156565b505050604051612f4a602082612b6d565b73ffffffffffffffffffffffffffffffffffffffff5f541633036131f557565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b677fffffffffffffff811161014d5760401b600f0b90565b90600f0b90811561014d5760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613280575b1561014d57600f0b90565b506f7fffffffffffffffffffffffffffffff81131561327556fea2646970667358221220c43e3b538be70614df138fb93465096e6d629b1716664b5620affbf747d33b3e64736f6c634300081e0033","sourceMap":"839:12537:48:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12471:13;839:12537;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;505:62:46;;;:::i;:::-;839:12537:48;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;7988:3;839:12537;;7968:18;;;;;8188:28;;;;;839:12537;8188:28;;:::i;:::-;839:12537;;7953:13;;7968:18;;;;;;505:62:46;;:::i;:::-;4850:13:48;;:44;;;;;7948:279;839:12537;;;;;;;;4943:40;839:12537;;;;5050:19;;;839:12537;;;;5129:22;;;839:12537;;;;5254:18;839:12537;5254:18;;839:12537;;;;;;;5386:37;839:12537;;5578:30;;;7948:279;5578:78;;;5611:22;5578:78;;;;839:12537;;;;;;;;;;;;5673:342;;;839:12537;5673:342;;839:12537;5673:342;;839:12537;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5890:16;839:12537;;;;;;;;5952:7;;839:12537;;;;;5973:9;;839:12537;;;;;5996:9;;839:12537;;;;;5673:342;839:12537;;5673:342;;;;;;;839:12537;5673:342;;;839:12537;6026:20;;;;:::i;:::-;839:12537;;;;;;;;;;;;;;;;;;;;;;6181:3;839:12537;;6161:18;;;;;839:12537;6215:10;;;;:::i;:::-;839:12537;;;;;;6307:15;839:12537;;;;;;;;6306:23;6302:131;;6181:3;839:12537;;;;6496:13;839:12537;;6496:31;839:12537;;;;6496:31;:::i;:::-;839:12537;6146:13;;6302:131;6349:10;839:12537;;;;;;;;;;;;;;;;6349:10;839:12537;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;6307:15;839:12537;;;;;;;;;;;;;6302:131;;;;839:12537;;;;;;;;;;6161:18;;;;;6553:43;839:12537;6161:18;;839:12537;;6161:18;839:12537;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;6553:43;;;839:12537;6706:3;839:12537;;6686:18;;;;;6729;;;;:::i;:::-;839:12537;6725:270;;6706:3;839:12537;;6671:13;;6725:270;839:12537;6778:10;;;;:::i;:::-;839:12537;;6829:18;;;;:::i;:::-;839:12537;;10404:1148:26;;10365:28;839:12537:48;10404:1148:26;;839:12537:48;10404:1148:26;;839:12537:48;10404:1148:26;839:12537:48;10404:1148:26;839:12537:48;;;10404:1148:26;;;;;;839:12537:48;;10404:1148:26;;;;;;;6725:270:48;839:12537;10404:1148:26;839:12537:48;;10404:1148:26;1766:48;1762:126;;6881:10:48;839:12537;;;6881:10;;;;:::i;:::-;839:12537;;;;6874:43;;;;839:12537;6874:43;;;839:12537;6874:43;;839:12537;6874:43;;;;;;;839:12537;6874:43;;;6725:270;6921:18;;;;;:::i;:::-;839:12537;6874:65;6725:270;839:12537;;;;;;;;;;;;;;;;;;;;;;;;;;;;6874:43;;;839:12537;6874:43;;;;;;;;;839:12537;6874:43;;;:::i;:::-;;;839:12537;;;;;6874:43;;;;;;-1:-1:-1;6874:43:48;;;839:12537;;;;;;;;;1762:126:26;1837:40;839:12537:48;1837:40:26;839:12537:48;;;;1837:40:26;10404:1148;;839:12537:48;10404:1148:26;;;;;;;;;;;;;;;;;;;839:12537:48;10404:1148:26;;;;;6686:18:48;839:12537;;;7109:43;;839:12537;7109:43;;839:12537;;;;;;;;;6686:18;839:12537;;;;;6686:18;7109:43;;;;;;;839:12537;7109:43;;;6666:339;-1:-1:-1;839:12537:48;;;;;;;;;;;;;;;;;;;;;;;;;7109:43;;;;839:12537;7109:43;;839:12537;7109:43;;;;;;839:12537;7109:43;;;:::i;:::-;;;839:12537;;;;;7109:43;;;;;;;-1:-1:-1;7109:43:48;;5673:342;;;;839:12537;5673:342;;839:12537;5673:342;;;;;;839:12537;5673:342;;;:::i;:::-;;;839:12537;;;;;;;;;;;;5673:342;;;;;;;-1:-1:-1;5673:342:48;;839:12537;;;;;;;-1:-1:-1;839:12537:48;;;;;;;;;;;;;5578:78;5636:20;5578:78;;;;;:30;839:12537;8215:1;839:12537;;5589:19;5578:30;;839:12537;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4850:44;4867:15;;;:27;;4850:44;;;839:12537;;;;;;;;;;;;10600:9;839:12537;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;505:62:46;;:::i;:::-;839:12537:48;1993:22:45;;1989:91;;839:12537:48;;;;;;;;;;;1104:49:46;839:12537:48;1104:49:46;;839:12537:48;1989:91:45;2038:31;839:12537:48;2038:31:45;839:12537:48;;;;;2038:31:45;839:12537:48;;;;;;;;;;;;;;;1209:9;839:12537;;;;;;;;;;;;;;;;;1816:33;839:12537;;;;;;;;;;;;;;;;;;;;;;;1455:9;839:12537;;;;;;;;;;;;;;;;;;;2080:7;839:12537;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;505:62:46;;;:::i;:::-;839:12537:48;;;9580:16;839:12537;9580:16;;963:15;;;839:12537;9657:21;;963:15;;;839:12537;;36311:11:42;839:12537:48;36311:11:42;;839:12537:48;;;;-1:-1:-1;839:12537:48;;;;;;805:35:0;3652:19;;;:42;;;839:12537:48;958:34:0;;;839:12537:48;;36567:31:42;;;;:::i;:::-;839:12537:48;;;;;;;;;36628:35:42;;;:::i;:::-;839:12537:48;;;;;805:35:0;4536:19;;;:42;;;839:12537:48;958:34:0;;;839:12537:48;;;;805:35:0;4084:19;;;:42;;;839:12537:48;958:34:0;;;839:12537:48;;;;;;;36759:15:42;;;;839:12537:48;37124:21:42;;41100:19;;;37403:26;37036:336;37403:26;:::i;:::-;839:12537:48;;;37447:23:42;;;;:44;;37036:336;41100:19;;;958:34:0;;;839:12537:48;14261:13:0;;839:12537:48;14286:25:0;;;14282:56;;37036:336:42;14349:17:0;14355:11;14599:3;14349:17;;;14345:48;;37036:336:42;14410:7:0;14404:13;;;14400:44;;37036:336:42;839:12537:48;14455:11:0;;;14451:40;;37036:336:42;14508:4:0;14502:10;;;14498:39;;37036:336:42;839:12537:48;14548:9:0;;;14544:38;;37036:336:42;14593:9:0;;14589:23;;37036:336:42;839:12537:48;;;;;;14737:3:0;839:12537:48;;14760:31:0;14773:18;14755:176;14793:7;839:12537:48;14793:7:0;;;;839:12537:48;15317:34:0;839:12537:48;;;;;;;;805:35:0;839:12537:48;;;9170:14:0;958:34;;37600:16:42;839:12537:48;;;;;37600:16:42;:::i;:::-;839:12537:48;;;37634:13:42;;41100:19;;;7136:6:0;;958:34;;839:12537:48;;805:35:0;7206:19;;;:42;;;14755:176;958:34;;;839:12537:48;;37785:17:42;839:12537:48;37785:17:42;;41100:19;;;505:62:46;;;;;:::i;:::-;839:12537:48;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7988:3;839:12537;;7968:18;;;;;8188:28;;;;;839:12537;8188:28;;:::i;:::-;839:12537;;7953:13;;7968:18;;;;;;505:62:46;;:::i;:::-;4850:13:48;;:44;;;;;7948:279;839:12537;;;;;;;;4943:40;839:12537;;;;5050:19;;;839:12537;;5129:22;;839:12537;;;;;;5386:37;839:12537;;5578:30;;;7948:279;5578:78;;;5611:22;5578:78;;;;839:12537;;;;;;;;;;;;5673:342;;;839:12537;5673:342;;839:12537;5673:342;;839:12537;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5890:16;839:12537;;;;;;;;5952:7;;839:12537;;;;;5973:9;;839:12537;;;;;5996:9;;839:12537;;;;;5673:342;839:12537;;5673:342;;;;;;;839:12537;5673:342;;;839:12537;6026:20;;;;:::i;:::-;839:12537;;;;;;;;;;;;;;;;;;;;;;6181:3;839:12537;;6161:18;;;;;839:12537;6215:10;;;;:::i;:::-;839:12537;;;;;;6307:15;839:12537;;;;;;;;6306:23;6302:131;;6181:3;839:12537;;;;6496:13;839:12537;;6496:31;839:12537;;;;6496:31;:::i;:::-;839:12537;6146:13;;6302:131;6349:10;839:12537;;;;;;;;;;;;;;;;6349:10;839:12537;;:::i;:::-;;;;;;6307:15;839:12537;;;;;;;;;;;;;6302:131;;;;6161:18;;;;;6553:43;839:12537;6161:18;;839:12537;;6161:18;839:12537;;;;;;;;;;;;;:::i;:::-;6553:43;;;839:12537;6706:3;839:12537;;6686:18;;;;;6729;;;;:::i;:::-;839:12537;6725:270;;6706:3;839:12537;;6671:13;;6725:270;839:12537;6778:10;;;;:::i;:::-;839:12537;;6829:18;;;;:::i;:::-;839:12537;;10404:1148:26;;10365:28;839:12537:48;10404:1148:26;;839:12537:48;10404:1148:26;;839:12537:48;10404:1148:26;839:12537:48;10404:1148:26;839:12537:48;;;10404:1148:26;;;;;;839:12537:48;;10404:1148:26;;;;;;;6725:270:48;839:12537;10404:1148:26;839:12537:48;;10404:1148:26;1766:48;1762:126;;6881:10:48;839:12537;;;6881:10;;;;:::i;:::-;839:12537;;;;6874:43;;;;839:12537;6874:43;;;839:12537;6874:43;;839:12537;6874:43;;;;;;;839:12537;6874:43;;;6725:270;6921:18;;;;;:::i;:::-;839:12537;6874:65;6725:270;839:12537;;;;;;;;;;;;;;;;;;;;;;;;;;;;6874:43;;;839:12537;6874:43;;;;;;;;;839:12537;6874:43;;;:::i;:::-;;;839:12537;;;;;6874:43;;;;;;-1:-1:-1;6874:43:48;;10404:1148:26;;839:12537:48;10404:1148:26;;;;;;;;;;;;;;;;6686:18:48;839:12537;;;7109:43;;839:12537;7109:43;;839:12537;;;;;;;;;6686:18;839:12537;;;;;6686:18;7109:43;;;;;;;839:12537;7109:43;;;-1:-1:-1;839:12537:48;;;;;;;;;;;;;;;;;;5673:342;;;;839:12537;5673:342;;839:12537;5673:342;;;;;;839:12537;5673:342;;;:::i;:::-;;;839:12537;;;;;;;;;;;;5673:342;;;;;;;-1:-1:-1;5673:342:48;;839:12537;;;;;;;-1:-1:-1;839:12537:48;;;;;;;;;;;;;5578:78;5636:20;5578:78;;;;;:30;839:12537;14599:3:0;839:12537:48;;5589:19;5578:30;;4850:44;4867:15;;;:27;;4850:44;;;41100:19:42;839:12537:48;;;41100:19:42;;;839:12537:48;;41100:19:42;;;;839:12537:48;41100:19:42;;839:12537:48;41100:19:42;839:12537:48;;;41100:19:42;;7206:42:0;7229:19;958:34;7229:19;;;7206:42;;41100:19:42;839:12537:48;;;41100:19:42;;;839:12537:48;;41100:19:42;;;;839:12537:48;41100:19:42;;839:12537:48;41100:19:42;839:12537:48;;;41100:19:42;;14802:9:0;839:12537:48;;;;;;;;14737:3:0;839:12537:48;;;;;;14802:9:0;839:12537:48;;14760:31:0;;;;14589:23;839:12537:48;;;14589:23:0;;;14544:38;839:12537:48;;;;;;14544:38:0;;14498:39;839:12537:48;;;;;;14498:39:0;;14451:40;14477:1;839:12537:48;;;;;14451:40:0;;14400:44;14428:2;839:12537:48;;;;;14400:44:0;;14345:48;839:12537:48;;;;;;14345:48:0;;14282:56;-1:-1:-1;839:12537:48;;-1:-1:-1;839:12537:48;;;14282:56:0;;41100:19:42;839:12537:48;;;41100:19:42;;;839:12537:48;;41100:19:42;;;;839:12537:48;41100:19:42;;839:12537:48;41100:19:42;839:12537:48;;;41100:19:42;;37447:44;37474:17;839:12537:48;37474:17:42;;37447:44;;41100:19;839:12537:48;;;41100:19:42;;;839:12537:48;;41100:19:42;;;;839:12537:48;41100:19:42;;839:12537:48;41100:19:42;839:12537:48;;;41100:19:42;;37036:336;839:12537:48;37312:21:42;;41100:19;;;37403:26;37036:336;37403:26;:::i;41100:19::-;839:12537:48;;;41100:19:42;;;839:12537:48;;41100:19:42;;;;839:12537:48;41100:19:42;;839:12537:48;41100:19:42;839:12537:48;;;41100:19:42;;4084:42:0;4107:19;958:34;4107:19;;;4084:42;;4536;4559:19;958:34;4559:19;;;4536:42;;839:12537:48;;;;;;;;;;3652:42:0;3675:19;958:34;3675:19;;;3652:42;;839:12537:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;963:15;839:12537;;;963:15;;;839:12537;;963:15;;;;839:12537;963:15;;839:12537;963:15;839:12537;;;963:15;;839:12537;963:15;;;;;839:12537;;;963:15;;;839:12537;;963:15;;;;839:12537;963:15;;839:12537;963:15;839:12537;;;963:15;;839:12537;963:15;;;;839:12537;;;;;;;;;;;;11519:10;839:12537;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;839:12537:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;505:62:46;;:::i;:::-;839:12537:48;;;;;;;;;;1104:49:46;;;;839:12537:48;;;;;;;;;;;;;;;:::i;:::-;505:62:46;;:::i;:::-;839:12537:48;;1929:31;839:12537;;;1929:31;839:12537;;;;;;;;;;;;;;;;;;1688:16;839:12537;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;505:62:46;;:::i;:::-;4850:13:48;;:44;;;;;839:12537;;;;;;;;;4943:40;839:12537;;;;5050:19;;;839:12537;;;;5129:22;;;839:12537;;;;5254:18;839:12537;5254:18;;839:12537;;;;;;;5386:37;839:12537;;5578:30;;;839:12537;5578:78;;;5611:22;5578:78;;839:12537;;;;;;;;;;;5673:342;;;839:12537;5673:342;;839:12537;5673:342;;839:12537;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5890:16;839:12537;;;;;;;;5952:7;;839:12537;;;;;5973:9;;839:12537;;;;;5996:9;;839:12537;;;;;5673:342;839:12537;;5673:342;;;;;;;839:12537;5673:342;;;839:12537;6026:20;;;;:::i;:::-;839:12537;;;;;;;;;;;;;;;;;;;;;;6181:3;839:12537;;6161:18;;;;;839:12537;6215:10;;;;:::i;:::-;839:12537;;;;;;6307:15;839:12537;;;;;;;;6306:23;6302:131;;6181:3;839:12537;;;;6496:13;839:12537;;6496:31;839:12537;;;;6496:31;:::i;:::-;839:12537;6146:13;;6302:131;6349:10;839:12537;;;;;;;;;;;;;;;;6349:10;839:12537;;:::i;:::-;;;;;;6307:15;839:12537;;;;;;;;;;;;;6302:131;;;;6161:18;;;;;6553:43;839:12537;6161:18;;839:12537;;6161:18;839:12537;;;;;;;;;;;;;:::i;:::-;6553:43;;;839:12537;6706:3;839:12537;;6686:18;;;;;6729;;;;:::i;:::-;839:12537;6725:270;;6706:3;839:12537;;6671:13;;6725:270;839:12537;6778:10;;;;:::i;:::-;839:12537;;6829:18;;;;:::i;:::-;839:12537;;10404:1148:26;;10365:28;839:12537:48;10404:1148:26;;839:12537:48;10404:1148:26;;839:12537:48;10404:1148:26;839:12537:48;10404:1148:26;839:12537:48;;;10404:1148:26;;;;;;839:12537:48;;10404:1148:26;;;;;;;6725:270:48;839:12537;10404:1148:26;839:12537:48;;10404:1148:26;1766:48;1762:126;;6881:10:48;839:12537;;;6881:10;;;;:::i;:::-;839:12537;;;;6874:43;;;;839:12537;6874:43;;;839:12537;6874:43;;839:12537;6874:43;;;;;;;839:12537;6874:43;;;6725:270;6921:18;;;;;:::i;:::-;839:12537;6874:65;6725:270;839:12537;;;;;;;;;;;;;;;;;;;;;;;;;;;;6874:43;;;839:12537;6874:43;;;;;;;;;839:12537;6874:43;;;:::i;:::-;;;839:12537;;;;;6874:43;;;;;;-1:-1:-1;6874:43:48;;10404:1148:26;;839:12537:48;10404:1148:26;;;;;;;;;;;;;;;;5673:342:48;;;;839:12537;5673:342;;839:12537;5673:342;;;;;;839:12537;5673:342;;;:::i;:::-;;;839:12537;;;;;;;;;;;;5673:342;;;;;;;-1:-1:-1;5673:342:48;;839:12537;;;;;;;-1:-1:-1;839:12537:48;;;;;;;;;;;;;5578:78;5636:20;5578:78;;;:30;839:12537;5607:1;839:12537;;5589:19;5578:30;;4850:44;4867:15;;;:27;;4850:44;;;839:12537;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;839:12537:48;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;6349:10;839:12537;;;;;;6349:10;-1:-1:-1;839:12537:48;;-1:-1:-1;839:12537:48;;;-1:-1:-1;839:12537:48;:::o;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;839:12537:48;;-1:-1:-1;839:12537:48;;;-1:-1:-1;839:12537:48;:::o;:::-;;;;;;;;;;;;;;;:::o;12545:829::-;839:12537;12545:829;;;;839:12537;-1:-1:-1;839:12537:48;12709:13;839:12537;;;-1:-1:-1;839:12537:48;;;;12856:20;;;;12852:77;;13038:14;;;;;;;:::i;:::-;:27;13037:61;;;13070:19;;;;:::i;:::-;13037:61;;13168:31;;;:::i;:::-;13248:13;-1:-1:-1;13263:17:48;;;;;;13355:12;;;;12545:829;:::o;13282:3::-;13323:10;839:12537;13312:22;13323:10;839:12537;13323:10;;;:::i;:::-;13312:22;;:::i;:::-;839:12537;;;;;;;13301:33;;;;:::i;:::-;839:12537;;13248:13;;13037:61;;;;;;12852:77;839:12537;;;;;;;;;;:::i;:::-;-1:-1:-1;839:12537:48;;-1:-1:-1;839:12537:48;;;12892:26;:::o;839:12537::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;839:12537:48;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;839:12537:48;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;6026:9;839:12537;;;;;;;;;;;;;;6026:9;839:12537;6026:9;839:12537;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;11583:758::-;;;11716:10;839:12537;11812:21;;;;11808:75;;11994:14;;;;;;;:::i;:::-;:28;11993:63;;;12027:20;;;;:::i;:::-;12127:28;;;:::i;:::-;12204:13;-1:-1:-1;12219:17:48;;;;;;-1:-1:-1;12321:13:48;;-1:-1:-1;;11583:758:48:o;12238:3::-;12288:10;839:12537;12277:22;12288:10;839:12537;12288:10;;;:::i;:::-;12277:22;:::i;:::-;839:12537;;;11716:10;839:12537;;;12257:43;;;;:::i;:::-;839:12537;;12204:13;;11993:63;;;;;11808:75;839:12537;;;;;;;;;;:::i;10663:745::-;;10796:9;839:12537;10891:20;;;;10887:77;;11073:14;;;;;;;:::i;:::-;:27;11072:61;;;11105:19;;;;:::i;:::-;11072:61;;11203:31;;;:::i;:::-;11283:13;-1:-1:-1;839:12537:48;10796:9;839:12537;11278:101;11298:17;;;;;;11389:12;;;;10663:745;:::o;11317:3::-;11357:10;;;;:::i;:::-;11347:21;839:12537;;;;;;;;;10796:9;-1:-1:-1;839:12537:48;;-1:-1:-1;839:12537:48;;;;11336:32;;;;:::i;:::-;839:12537;;11283:13;;11072:61;;;;;;10887:77;839:12537;;;;;;;;;:::i;640:170:46:-;839:12537:48;699:6:46;839:12537:48;;735:10:28;699:22:46;695:109;;640:170::o;695:109::-;744:49;699:6;744:49;735:10:28;744:49:46;839:12537:48;;699:6:46;744:49;1958:169:0;2057:18;2052:23;;958:34;;2112:2;839:12537:48;;;1958:169:0;:::o;7038:252::-;;839:12537:48;;7136:6:0;;;958:34;;7182:2;839:12537:48;;;;805:35:0;7206:19;;;:42;;;7038:252;958:34;;;839:12537:48;;7038:252:0;:::o;7206:42::-;7229:19;958:34;7229:19;;;7206:42;","linkReferences":{},"immutableReferences":{"47749":[{"start":1313,"length":32},{"start":3933,"length":32},{"start":5961,"length":32},{"start":9859,"length":32}],"47762":[{"start":1272,"length":32},{"start":4124,"length":32},{"start":5920,"length":32},{"start":9818,"length":32}],"47774":[{"start":1186,"length":32},{"start":5834,"length":32},{"start":8958,"length":32},{"start":9732,"length":32}],"47800":[{"start":1231,"length":32},{"start":4234,"length":32},{"start":5879,"length":32},{"start":9777,"length":32}],"47812":[{"start":2683,"length":32},{"start":7092,"length":32},{"start":10870,"length":32}],"47815":[{"start":817,"length":32},{"start":5465,"length":32},{"start":9367,"length":32}]}},"methodIdentifiers":{"getAllPools(uint256,uint256)":"a7753f09","getAllTokens(uint256,uint256)":"9a043832","getPoolSupported(address)":"f3176725","getPoolsByToken(address,uint256,uint256)":"14c870c0","mintImpl()":"f0d1ae4f","newPool(string,string,address[],int128,int128,uint256,uint256,bool,address,address,uint256[],uint256,uint256)":"a4689b24","newPool(string,string,address[],int128,uint256,uint256,bool,address,address,uint256[],uint256,uint256)":"f63772fc","newPool(string,string,address[],int128,uint256[],uint256,bool,address,address,uint256[],uint256,uint256)":"60cf7d4a","owner()":"8da5cb5b","poolCount()":"f525cb68","poolsByTokenCount(address)":"f70a3a17","protocolFeeAddress()":"cce516b7","protocolFeePpm()":"6b4082d1","renounceOwnership()":"715018a6","setProtocolFeeAddress(address)":"6b7b9112","swapImpl()":"c405e442","tokenCount()":"9f181b5e","transferOwnership(address)":"f2fde38b","wrapper()":"ac210cc7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"},{\"internalType\":\"contract NativeWrapper\",\"name\":\"wrapper_\",\"type\":\"address\"},{\"internalType\":\"contract PartyPoolSwapImpl\",\"name\":\"swapImpl_\",\"type\":\"address\"},{\"internalType\":\"contract PartyPoolMintImpl\",\"name\":\"mintImpl_\",\"type\":\"address\"},{\"internalType\":\"contract IPartyPoolDeployer\",\"name\":\"deployer_\",\"type\":\"address\"},{\"internalType\":\"contract IPartyPoolDeployer\",\"name\":\"balancedPairDeployer_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"protocolFeePpm_\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"protocolFeeAddress_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"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\":true,\"internalType\":\"contract IPartyPool\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"PartyStarted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"getAllPools\",\"outputs\":[{\"internalType\":\"contract IPartyPool[]\",\"name\":\"pools\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"getAllTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"getPoolsByToken\",\"outputs\":[{\"internalType\":\"contract IPartyPool[]\",\"name\":\"pools\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintImpl\",\"outputs\":[{\"internalType\":\"contract PartyPoolMintImpl\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens_\",\"type\":\"address[]\"},{\"internalType\":\"int128\",\"name\":\"kappa_\",\"type\":\"int128\"},{\"internalType\":\"uint256[]\",\"name\":\"swapFeesPpm_\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"flashFeePpm_\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"stable_\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"initialDeposits\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"initialLpAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"newPool\",\"outputs\":[{\"internalType\":\"contract IPartyPool\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens_\",\"type\":\"address[]\"},{\"internalType\":\"int128\",\"name\":\"tradeFrac_\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"targetSlippage_\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePpm_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flashFeePpm_\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"stable_\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"initialDeposits\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"initialLpAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"newPool\",\"outputs\":[{\"internalType\":\"contract IPartyPool\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens_\",\"type\":\"address[]\"},{\"internalType\":\"int128\",\"name\":\"kappa_\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePpm_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flashFeePpm_\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"stable_\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"initialDeposits\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"initialLpAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"newPool\",\"outputs\":[{\"internalType\":\"contract IPartyPool\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"poolsByTokenCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolFeeAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolFeePpm\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeAddress\",\"type\":\"address\"}],\"name\":\"setProtocolFeeAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"swapImpl\",\"outputs\":[{\"internalType\":\"contract PartyPoolSwapImpl\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenCount\",\"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\":\"wrapper\",\"outputs\":[{\"internalType\":\"contract NativeWrapper\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"mintImpl_\":\"address of the Mint implementation contract to be used by all pools\",\"owner_\":\"Initial administrator who is allowed to create new pools and kill() old ones\",\"protocolFeeAddress_\":\"recipient address for protocol fees for pools created by this planner (may be address(0))\",\"protocolFeePpm_\":\"protocol fee share (ppm) to be used for pools created by this planner\",\"swapImpl_\":\"address of the Swap implementation contract to be used by all pools\",\"wrapper_\":\"The WETH9 implementation address used for this chain\"}},\"getAllPools(uint256,uint256)\":{\"params\":{\"limit\":\"Maximum number of items to return\",\"offset\":\"Starting index for pagination\"},\"returns\":{\"pools\":\"Array of pool addresses for the requested page\"}},\"getAllTokens(uint256,uint256)\":{\"params\":{\"limit\":\"Maximum number of items to return\",\"offset\":\"Starting index for pagination\"},\"returns\":{\"tokens\":\"Array of token addresses for the requested page\"}},\"getPoolSupported(address)\":{\"params\":{\"pool\":\"The pool address to check\"},\"returns\":{\"_0\":\"bool True if the pool is supported, false otherwise\"}},\"getPoolsByToken(address,uint256,uint256)\":{\"params\":{\"limit\":\"Maximum number of items to return\",\"offset\":\"Starting index for pagination\",\"token\":\"The token address to query pools for\"},\"returns\":{\"pools\":\"Array of pool addresses containing the specified token\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"poolCount()\":{\"returns\":{\"_0\":\"The total count of pools\"}},\"poolsByTokenCount(address)\":{\"params\":{\"token\":\"The token address to query\"},\"returns\":{\"_0\":\"The total count of pools containing the token\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"tokenCount()\":{\"returns\":{\"_0\":\"The total count of unique tokens\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"PartyPlanner\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAllPools(uint256,uint256)\":{\"notice\":\"Retrieves a page of pool addresses\"},\"getAllTokens(uint256,uint256)\":{\"notice\":\"Retrieves a page of token addresses\"},\"getPoolSupported(address)\":{\"notice\":\"Checks if a pool is supported\"},\"getPoolsByToken(address,uint256,uint256)\":{\"notice\":\"Retrieves a page of pool addresses for a specific token\"},\"mintImpl()\":{\"notice\":\"Address of the mint implementation contract used by all pools created by this factory\"},\"newPool(string,string,address[],int128,uint256,uint256,bool,address,address,uint256[],uint256,uint256)\":{\"notice\":\"Convenience overload: legacy single-fee signature \\u2014 repeat the scalar for every asset and delegate.\"},\"newPool(string,string,address[],int128,uint256[],uint256,bool,address,address,uint256[],uint256,uint256)\":{\"notice\":\"Main newPool variant: accepts kappa directly (preferred) and a per-asset fee vector.\"},\"poolCount()\":{\"notice\":\"Returns the total number of pools created\"},\"poolsByTokenCount(address)\":{\"notice\":\"Returns the total number of pools for a specific token\"},\"protocolFeeAddress()\":{\"notice\":\"Address to receive protocol fees for pools created by this planner (may be address(0))\"},\"swapImpl()\":{\"notice\":\"Address of the swap implementation contract used by all pools created by this factory\"},\"tokenCount()\":{\"notice\":\"Returns the total number of unique tokens\"}},\"notice\":\"Factory contract for creating and tracking PartyPool instances\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/PartyPlanner.sol\":\"PartyPlanner\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/abdk-libraries-solidity/ABDKMath64x64.sol\":{\"keccak256\":\"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97\",\"license\":\"BSD-4-Clause\",\"urls\":[\"bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7\",\"dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol\":{\"keccak256\":\"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd\",\"dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashLender.sol\":{\"keccak256\":\"0x3a3549277762438ad9a38fce50493ed8995b806f78aabff02d51b4e1671ce6f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f105ec892766b8a41ece6d3b10a4e434166cc8db4ddb8451493a2de93cf7d893\",\"dweb:/ipfs/QmP5wxpX9cDzKtToA2cM5jbb928UN8DtGyV1cG4w7jPJCt\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd\",\"dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0x25f9b099413f805b4c4bbad8cc179326c10be237aec00349caf91524f8db0bbc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dcfb75af07ad33b1f8e966f793db3df8fbcfb14103ed3644c0c634658a8fd099\",\"dweb:/ipfs/QmPWamdkbcKwG3ah2G9TZtKHzQmjnunsWoPWr5KKfbrKNb\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168\",\"dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd274645d15bb7e4fcb9c833e401b2c5837404f90057f11a49118f25e0af7c76f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d38e0b997bb7aebae26d190b03d0991feb0d204c45f945e60014e1ca9175de69\",\"dweb:/ipfs/QmWzsUHHAZcjMyF8uMDEtNpMTkYZdQrfvdKPobXvwVHKo6\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x50e81a8b089e3f382b6c915aa0166773de64ea4756e8f9479d9943a5f956ddf5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bfeb96a150537222e2191c03887127499a4f21dfb5f9a7211da4d81749b52848\",\"dweb:/ipfs/QmYR75ECbsBuxSiXmGvGfNKJRLoK5MdLUZL1bd8SixzxL4\"]},\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161\",\"dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"src/ERC20External.sol\":{\"keccak256\":\"0x421f511bb3aa7258fb7121aa66b9a2e8e0b7a07b7e51c800c714f7acbfd599d3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b3fde56a83eae12a31eb4875d8952a99d18591fe0f18b6a12392c8f48f76af46\",\"dweb:/ipfs/QmeApbmGv6Z2b1JynvBxaAK1j1eWhGYpeNEP56V8XXvpcz\"]},\"src/ERC20Internal.sol\":{\"keccak256\":\"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f\",\"dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk\"]},\"src/IOwnable.sol\":{\"keccak256\":\"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1\",\"dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9\"]},\"src/IPartyFlashCallback.sol\":{\"keccak256\":\"0xff1d473d27c4dc75441a5f0db2d761916cce4a702f660e998467791efd1d9b2e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3220d69c62ed8c8106762c92857f24011284e8ddcfa5db4210e506b112fa1870\",\"dweb:/ipfs/QmYoZiGsVwoJvyPMcsSste4tq93wVBgDqCZkwPY7dvyLBJ\"]},\"src/IPartyInfo.sol\":{\"keccak256\":\"0x80e88e8c29cdf12426f16b4bf2a088397fcc31c2664564f7f26117dc85009af7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b91392cbda8adfccf9bea2e584616c4b3359d7381a18f5f3e5c9c71618786051\",\"dweb:/ipfs/QmWtWb1gVs2pzFkjwDj4mcdoCnQLPbwq4Qxbh38VEdWwAW\"]},\"src/IPartyPlanner.sol\":{\"keccak256\":\"0x8f27d564f2c1fde267aa1fec970402e2da5b731ac97f4d5fe24f6ebab1fd03ff\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://399d21923fdbb6c3012f086c6de62bd4ea6648cf71a46e59beaad9a74d854025\",\"dweb:/ipfs/QmcS4qRFjUJ4JyeTnjDSnTzprSnrd8TTxF2gfZf2JBs1c6\"]},\"src/IPartyPool.sol\":{\"keccak256\":\"0x55d3656b1a4c75801852066b7ba871212e5e807917b3b9029349349fae39375c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://009b67ccf1d28a04a2407a05ddda8f954033b7ac70f7fd5cbedbf779e867df9f\",\"dweb:/ipfs/QmS5vQcfma6PN28Q6qQwqa7KmUKu2KST72jwF8ffsj6Bw2\"]},\"src/LMSRStabilized.sol\":{\"keccak256\":\"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3\",\"dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB\"]},\"src/LMSRStabilizedBalancedPair.sol\":{\"keccak256\":\"0x782f3baf92f74152c0b93b95199abbb3a36c75c921454260c8b0237f91d7c59d\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://04d463c4fdcb6c8e2ebf9aed649ff21cca759ba73a4c93659e30c7df25e26c81\",\"dweb:/ipfs/QmUxmWytiw5VYJRUrFbSGm1oWmDPQ4q23pnkmK1q9P4apN\"]},\"src/NativeWrapper.sol\":{\"keccak256\":\"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238\",\"dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB\"]},\"src/OwnableExternal.sol\":{\"keccak256\":\"0x0a0199368ad20a31e7169b3e56449bf022c9d680e0d487c118608a7f14cb7efb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3348a063649e01acf9c6aa6b7ce2ecf62ace8c6f1467477de7d605996f08ec64\",\"dweb:/ipfs/QmSoxb35FFsNCgXgWn91CupvjpGmyM31wcfxAVpVFFPecX\"]},\"src/OwnableInternal.sol\":{\"keccak256\":\"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca\",\"dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE\"]},\"src/PartyPlanner.sol\":{\"keccak256\":\"0xdd92d3d269279e372680583a5d6e1a7342715c9b6708777f17635c4e2391620f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://cd9ef0482a8efd86a49eef567defe412e72e522d85de0d8ded89eac6b8f6463a\",\"dweb:/ipfs/QmVpXgadYC3NbQ4DfWFg4yRKZEvJ42bzFvC2MLu6JAjDoS\"]},\"src/PartyPool.sol\":{\"keccak256\":\"0xf4af110b4cd06a00ee1ec2bd61e887662dcb26aaf6903b9910902614b50e4955\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://691fabaffecdf698601cc0696099e3bfa44ed60097b8f9b9f01cd4bf703bbb77\",\"dweb:/ipfs/QmXuPX2zu8sN9VyePDvVra4QP8LN2knNxbiGsMGzYAyS8S\"]},\"src/PartyPoolBalancedPair.sol\":{\"keccak256\":\"0x7d36ae211709da83ecafcc70f31e5fcdc1bc299243eedceebf17f26339757d7b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://91762575c367c9b1d50a633fb46ccf429a28bbaf70f76b524749ad32dc716d7a\",\"dweb:/ipfs/QmVLxjR3h2XJukjXFx56b4m8SPg6oupxqkzY5EKCK7GFHn\"]},\"src/PartyPoolBase.sol\":{\"keccak256\":\"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5\",\"dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5\"]},\"src/PartyPoolDeployer.sol\":{\"keccak256\":\"0xdf2a6a8602eba3aef625c798a0ec6525feb7520c2fd6933c30dd76fe3c4e2618\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9aa94963e0d34feddf63b3ae034874557229740be1ef80f49e87bd05694c9b50\",\"dweb:/ipfs/QmYQ6mH1mEJCJ9XNGdT3saRU3q36GZ94WuyRsn9LRWXtbM\"]},\"src/PartyPoolHelpers.sol\":{\"keccak256\":\"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5\",\"dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP\"]},\"src/PartyPoolMintImpl.sol\":{\"keccak256\":\"0xe9d9927cecd46a1f836b2c43e9d6184642b9e695c7462e5fb7c671a38aab7398\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8d821911d7982fc302929198539b27f72be100b91450c98d2e0081519f776499\",\"dweb:/ipfs/QmRChx1DPD1gKXwfD1m6aQ7pgh1aX6CvYLNX41ufdJteaJ\"]},\"src/PartyPoolSwapImpl.sol\":{\"keccak256\":\"0x71ecbd6d0fb106031baed7e4c21694ef24f0112af7d975325b98b1b0463ba5b2\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://64f8f8bae2f89ca495b9edacd012363b55e78a198f100650beb2b1238e8ef11f\",\"dweb:/ipfs/QmVfihiw9TqncuEfZKx7c6WEHiGFfRQyhtfdTGzfN7emNY\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"contract NativeWrapper","name":"wrapper_","type":"address"},{"internalType":"contract PartyPoolSwapImpl","name":"swapImpl_","type":"address"},{"internalType":"contract PartyPoolMintImpl","name":"mintImpl_","type":"address"},{"internalType":"contract IPartyPoolDeployer","name":"deployer_","type":"address"},{"internalType":"contract IPartyPoolDeployer","name":"balancedPairDeployer_","type":"address"},{"internalType":"uint256","name":"protocolFeePpm_","type":"uint256"},{"internalType":"address","name":"protocolFeeAddress_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"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":"contract IPartyPool","name":"pool","type":"address","indexed":true},{"internalType":"string","name":"name","type":"string","indexed":false},{"internalType":"string","name":"symbol","type":"string","indexed":false},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]","indexed":false}],"type":"event","name":"PartyStarted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"view","type":"function","name":"getAllPools","outputs":[{"internalType":"contract IPartyPool[]","name":"pools","type":"address[]"}]},{"inputs":[{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"view","type":"function","name":"getAllTokens","outputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"stateMutability":"view","type":"function","name":"getPoolSupported","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPoolsByToken","outputs":[{"internalType":"contract IPartyPool[]","name":"pools","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mintImpl","outputs":[{"internalType":"contract PartyPoolMintImpl","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"contract IERC20[]","name":"tokens_","type":"address[]"},{"internalType":"int128","name":"kappa_","type":"int128"},{"internalType":"uint256[]","name":"swapFeesPpm_","type":"uint256[]"},{"internalType":"uint256","name":"flashFeePpm_","type":"uint256"},{"internalType":"bool","name":"stable_","type":"bool"},{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256[]","name":"initialDeposits","type":"uint256[]"},{"internalType":"uint256","name":"initialLpAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"newPool","outputs":[{"internalType":"contract IPartyPool","name":"pool","type":"address"},{"internalType":"uint256","name":"lpAmount","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"contract IERC20[]","name":"tokens_","type":"address[]"},{"internalType":"int128","name":"tradeFrac_","type":"int128"},{"internalType":"int128","name":"targetSlippage_","type":"int128"},{"internalType":"uint256","name":"swapFeePpm_","type":"uint256"},{"internalType":"uint256","name":"flashFeePpm_","type":"uint256"},{"internalType":"bool","name":"stable_","type":"bool"},{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256[]","name":"initialDeposits","type":"uint256[]"},{"internalType":"uint256","name":"initialLpAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"newPool","outputs":[{"internalType":"contract IPartyPool","name":"pool","type":"address"},{"internalType":"uint256","name":"lpAmount","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"contract IERC20[]","name":"tokens_","type":"address[]"},{"internalType":"int128","name":"kappa_","type":"int128"},{"internalType":"uint256","name":"swapFeePpm_","type":"uint256"},{"internalType":"uint256","name":"flashFeePpm_","type":"uint256"},{"internalType":"bool","name":"stable_","type":"bool"},{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256[]","name":"initialDeposits","type":"uint256[]"},{"internalType":"uint256","name":"initialLpAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"newPool","outputs":[{"internalType":"contract IPartyPool","name":"pool","type":"address"},{"internalType":"uint256","name":"lpAmount","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"poolCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"poolsByTokenCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"protocolFeeAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"protocolFeePpm","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"feeAddress","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setProtocolFeeAddress"},{"inputs":[],"stateMutability":"view","type":"function","name":"swapImpl","outputs":[{"internalType":"contract PartyPoolSwapImpl","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"tokenCount","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":"wrapper","outputs":[{"internalType":"contract NativeWrapper","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"constructor":{"params":{"mintImpl_":"address of the Mint implementation contract to be used by all pools","owner_":"Initial administrator who is allowed to create new pools and kill() old ones","protocolFeeAddress_":"recipient address for protocol fees for pools created by this planner (may be address(0))","protocolFeePpm_":"protocol fee share (ppm) to be used for pools created by this planner","swapImpl_":"address of the Swap implementation contract to be used by all pools","wrapper_":"The WETH9 implementation address used for this chain"}},"getAllPools(uint256,uint256)":{"params":{"limit":"Maximum number of items to return","offset":"Starting index for pagination"},"returns":{"pools":"Array of pool addresses for the requested page"}},"getAllTokens(uint256,uint256)":{"params":{"limit":"Maximum number of items to return","offset":"Starting index for pagination"},"returns":{"tokens":"Array of token addresses for the requested page"}},"getPoolSupported(address)":{"params":{"pool":"The pool address to check"},"returns":{"_0":"bool True if the pool is supported, false otherwise"}},"getPoolsByToken(address,uint256,uint256)":{"params":{"limit":"Maximum number of items to return","offset":"Starting index for pagination","token":"The token address to query pools for"},"returns":{"pools":"Array of pool addresses containing the specified token"}},"owner()":{"details":"Returns the address of the current owner."},"poolCount()":{"returns":{"_0":"The total count of pools"}},"poolsByTokenCount(address)":{"params":{"token":"The token address to query"},"returns":{"_0":"The total count of pools containing the token"}},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"tokenCount()":{"returns":{"_0":"The total count of unique tokens"}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{"getAllPools(uint256,uint256)":{"notice":"Retrieves a page of pool addresses"},"getAllTokens(uint256,uint256)":{"notice":"Retrieves a page of token addresses"},"getPoolSupported(address)":{"notice":"Checks if a pool is supported"},"getPoolsByToken(address,uint256,uint256)":{"notice":"Retrieves a page of pool addresses for a specific token"},"mintImpl()":{"notice":"Address of the mint implementation contract used by all pools created by this factory"},"newPool(string,string,address[],int128,uint256,uint256,bool,address,address,uint256[],uint256,uint256)":{"notice":"Convenience overload: legacy single-fee signature — repeat the scalar for every asset and delegate."},"newPool(string,string,address[],int128,uint256[],uint256,bool,address,address,uint256[],uint256,uint256)":{"notice":"Main newPool variant: accepts kappa directly (preferred) and a per-asset fee vector."},"poolCount()":{"notice":"Returns the total number of pools created"},"poolsByTokenCount(address)":{"notice":"Returns the total number of pools for a specific token"},"protocolFeeAddress()":{"notice":"Address to receive protocol fees for pools created by this planner (may be address(0))"},"swapImpl()":{"notice":"Address of the swap implementation contract used by all pools created by this factory"},"tokenCount()":{"notice":"Returns the total number of unique tokens"}},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/PartyPlanner.sol":"PartyPlanner"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/abdk-libraries-solidity/ABDKMath64x64.sol":{"keccak256":"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97","urls":["bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7","dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN"],"license":"BSD-4-Clause"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d","urls":["bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100","dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc","urls":["bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037","dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44","urls":["bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d","dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol":{"keccak256":"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e","urls":["bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd","dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashLender.sol":{"keccak256":"0x3a3549277762438ad9a38fce50493ed8995b806f78aabff02d51b4e1671ce6f5","urls":["bzz-raw://f105ec892766b8a41ece6d3b10a4e434166cc8db4ddb8451493a2de93cf7d893","dweb:/ipfs/QmP5wxpX9cDzKtToA2cM5jbb928UN8DtGyV1cG4w7jPJCt"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86","urls":["bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd","dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0x25f9b099413f805b4c4bbad8cc179326c10be237aec00349caf91524f8db0bbc","urls":["bzz-raw://dcfb75af07ad33b1f8e966f793db3df8fbcfb14103ed3644c0c634658a8fd099","dweb:/ipfs/QmPWamdkbcKwG3ah2G9TZtKHzQmjnunsWoPWr5KKfbrKNb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9","urls":["bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168","dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd274645d15bb7e4fcb9c833e401b2c5837404f90057f11a49118f25e0af7c76f","urls":["bzz-raw://d38e0b997bb7aebae26d190b03d0991feb0d204c45f945e60014e1ca9175de69","dweb:/ipfs/QmWzsUHHAZcjMyF8uMDEtNpMTkYZdQrfvdKPobXvwVHKo6"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol":{"keccak256":"0x50e81a8b089e3f382b6c915aa0166773de64ea4756e8f9479d9943a5f956ddf5","urls":["bzz-raw://bfeb96a150537222e2191c03887127499a4f21dfb5f9a7211da4d81749b52848","dweb:/ipfs/QmYR75ECbsBuxSiXmGvGfNKJRLoK5MdLUZL1bd8SixzxL4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol":{"keccak256":"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0","urls":["bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161","dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"},"src/ERC20External.sol":{"keccak256":"0x421f511bb3aa7258fb7121aa66b9a2e8e0b7a07b7e51c800c714f7acbfd599d3","urls":["bzz-raw://b3fde56a83eae12a31eb4875d8952a99d18591fe0f18b6a12392c8f48f76af46","dweb:/ipfs/QmeApbmGv6Z2b1JynvBxaAK1j1eWhGYpeNEP56V8XXvpcz"],"license":"UNLICENSED"},"src/ERC20Internal.sol":{"keccak256":"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36","urls":["bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f","dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk"],"license":"UNLICENSED"},"src/IOwnable.sol":{"keccak256":"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990","urls":["bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1","dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9"],"license":"MIT"},"src/IPartyFlashCallback.sol":{"keccak256":"0xff1d473d27c4dc75441a5f0db2d761916cce4a702f660e998467791efd1d9b2e","urls":["bzz-raw://3220d69c62ed8c8106762c92857f24011284e8ddcfa5db4210e506b112fa1870","dweb:/ipfs/QmYoZiGsVwoJvyPMcsSste4tq93wVBgDqCZkwPY7dvyLBJ"],"license":"UNLICENSED"},"src/IPartyInfo.sol":{"keccak256":"0x80e88e8c29cdf12426f16b4bf2a088397fcc31c2664564f7f26117dc85009af7","urls":["bzz-raw://b91392cbda8adfccf9bea2e584616c4b3359d7381a18f5f3e5c9c71618786051","dweb:/ipfs/QmWtWb1gVs2pzFkjwDj4mcdoCnQLPbwq4Qxbh38VEdWwAW"],"license":"UNLICENSED"},"src/IPartyPlanner.sol":{"keccak256":"0x8f27d564f2c1fde267aa1fec970402e2da5b731ac97f4d5fe24f6ebab1fd03ff","urls":["bzz-raw://399d21923fdbb6c3012f086c6de62bd4ea6648cf71a46e59beaad9a74d854025","dweb:/ipfs/QmcS4qRFjUJ4JyeTnjDSnTzprSnrd8TTxF2gfZf2JBs1c6"],"license":"UNLICENSED"},"src/IPartyPool.sol":{"keccak256":"0x55d3656b1a4c75801852066b7ba871212e5e807917b3b9029349349fae39375c","urls":["bzz-raw://009b67ccf1d28a04a2407a05ddda8f954033b7ac70f7fd5cbedbf779e867df9f","dweb:/ipfs/QmS5vQcfma6PN28Q6qQwqa7KmUKu2KST72jwF8ffsj6Bw2"],"license":"UNLICENSED"},"src/LMSRStabilized.sol":{"keccak256":"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b","urls":["bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3","dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB"],"license":"UNLICENSED"},"src/LMSRStabilizedBalancedPair.sol":{"keccak256":"0x782f3baf92f74152c0b93b95199abbb3a36c75c921454260c8b0237f91d7c59d","urls":["bzz-raw://04d463c4fdcb6c8e2ebf9aed649ff21cca759ba73a4c93659e30c7df25e26c81","dweb:/ipfs/QmUxmWytiw5VYJRUrFbSGm1oWmDPQ4q23pnkmK1q9P4apN"],"license":"UNLICENSED"},"src/NativeWrapper.sol":{"keccak256":"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579","urls":["bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238","dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB"],"license":"UNLICENSED"},"src/OwnableExternal.sol":{"keccak256":"0x0a0199368ad20a31e7169b3e56449bf022c9d680e0d487c118608a7f14cb7efb","urls":["bzz-raw://3348a063649e01acf9c6aa6b7ce2ecf62ace8c6f1467477de7d605996f08ec64","dweb:/ipfs/QmSoxb35FFsNCgXgWn91CupvjpGmyM31wcfxAVpVFFPecX"],"license":"MIT"},"src/OwnableInternal.sol":{"keccak256":"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581","urls":["bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca","dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE"],"license":"MIT"},"src/PartyPlanner.sol":{"keccak256":"0xdd92d3d269279e372680583a5d6e1a7342715c9b6708777f17635c4e2391620f","urls":["bzz-raw://cd9ef0482a8efd86a49eef567defe412e72e522d85de0d8ded89eac6b8f6463a","dweb:/ipfs/QmVpXgadYC3NbQ4DfWFg4yRKZEvJ42bzFvC2MLu6JAjDoS"],"license":"UNLICENSED"},"src/PartyPool.sol":{"keccak256":"0xf4af110b4cd06a00ee1ec2bd61e887662dcb26aaf6903b9910902614b50e4955","urls":["bzz-raw://691fabaffecdf698601cc0696099e3bfa44ed60097b8f9b9f01cd4bf703bbb77","dweb:/ipfs/QmXuPX2zu8sN9VyePDvVra4QP8LN2knNxbiGsMGzYAyS8S"],"license":"UNLICENSED"},"src/PartyPoolBalancedPair.sol":{"keccak256":"0x7d36ae211709da83ecafcc70f31e5fcdc1bc299243eedceebf17f26339757d7b","urls":["bzz-raw://91762575c367c9b1d50a633fb46ccf429a28bbaf70f76b524749ad32dc716d7a","dweb:/ipfs/QmVLxjR3h2XJukjXFx56b4m8SPg6oupxqkzY5EKCK7GFHn"],"license":"UNLICENSED"},"src/PartyPoolBase.sol":{"keccak256":"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999","urls":["bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5","dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5"],"license":"UNLICENSED"},"src/PartyPoolDeployer.sol":{"keccak256":"0xdf2a6a8602eba3aef625c798a0ec6525feb7520c2fd6933c30dd76fe3c4e2618","urls":["bzz-raw://9aa94963e0d34feddf63b3ae034874557229740be1ef80f49e87bd05694c9b50","dweb:/ipfs/QmYQ6mH1mEJCJ9XNGdT3saRU3q36GZ94WuyRsn9LRWXtbM"],"license":"UNLICENSED"},"src/PartyPoolHelpers.sol":{"keccak256":"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c","urls":["bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5","dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP"],"license":"UNLICENSED"},"src/PartyPoolMintImpl.sol":{"keccak256":"0xe9d9927cecd46a1f836b2c43e9d6184642b9e695c7462e5fb7c671a38aab7398","urls":["bzz-raw://8d821911d7982fc302929198539b27f72be100b91450c98d2e0081519f776499","dweb:/ipfs/QmRChx1DPD1gKXwfD1m6aQ7pgh1aX6CvYLNX41ufdJteaJ"],"license":"UNLICENSED"},"src/PartyPoolSwapImpl.sol":{"keccak256":"0x71ecbd6d0fb106031baed7e4c21694ef24f0112af7d975325b98b1b0463ba5b2","urls":["bzz-raw://64f8f8bae2f89ca495b9edacd012363b55e78a198f100650beb2b1238e8ef11f","dweb:/ipfs/QmVfihiw9TqncuEfZKx7c6WEHiGFfRQyhtfdTGzfN7emNY"],"license":"UNLICENSED"}},"version":1},"id":48} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"owner_","type":"address","internalType":"address"},{"name":"wrapper_","type":"address","internalType":"contract NativeWrapper"},{"name":"swapImpl_","type":"address","internalType":"contract PartyPoolSwapImpl"},{"name":"mintImpl_","type":"address","internalType":"contract PartyPoolMintImpl"},{"name":"deployer_","type":"address","internalType":"contract IPartyPoolDeployer"},{"name":"balancedPairDeployer_","type":"address","internalType":"contract IPartyPoolDeployer"},{"name":"protocolFeePpm_","type":"uint256","internalType":"uint256"},{"name":"protocolFeeAddress_","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"getAllPools","inputs":[{"name":"offset","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"pools","type":"address[]","internalType":"contract IPartyPool[]"}],"stateMutability":"view"},{"type":"function","name":"getAllTokens","inputs":[{"name":"offset","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getPoolSupported","inputs":[{"name":"pool","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getPoolsByToken","inputs":[{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"offset","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"pools","type":"address[]","internalType":"contract IPartyPool[]"}],"stateMutability":"view"},{"type":"function","name":"mintImpl","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract PartyPoolMintImpl"}],"stateMutability":"view"},{"type":"function","name":"newPool","inputs":[{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"},{"name":"tokens_","type":"address[]","internalType":"contract IERC20[]"},{"name":"kappa_","type":"int128","internalType":"int128"},{"name":"swapFeesPpm_","type":"uint256[]","internalType":"uint256[]"},{"name":"flashFeePpm_","type":"uint256","internalType":"uint256"},{"name":"stable_","type":"bool","internalType":"bool"},{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"initialDeposits","type":"uint256[]","internalType":"uint256[]"},{"name":"initialLpAmount","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"pool","type":"address","internalType":"contract IPartyPool"},{"name":"lpAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"newPool","inputs":[{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"},{"name":"tokens_","type":"address[]","internalType":"contract IERC20[]"},{"name":"tradeFrac_","type":"int128","internalType":"int128"},{"name":"targetSlippage_","type":"int128","internalType":"int128"},{"name":"swapFeePpm_","type":"uint256","internalType":"uint256"},{"name":"flashFeePpm_","type":"uint256","internalType":"uint256"},{"name":"stable_","type":"bool","internalType":"bool"},{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"initialDeposits","type":"uint256[]","internalType":"uint256[]"},{"name":"initialLpAmount","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"pool","type":"address","internalType":"contract IPartyPool"},{"name":"lpAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"newPool","inputs":[{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"},{"name":"tokens_","type":"address[]","internalType":"contract IERC20[]"},{"name":"kappa_","type":"int128","internalType":"int128"},{"name":"swapFeePpm_","type":"uint256","internalType":"uint256"},{"name":"flashFeePpm_","type":"uint256","internalType":"uint256"},{"name":"stable_","type":"bool","internalType":"bool"},{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"initialDeposits","type":"uint256[]","internalType":"uint256[]"},{"name":"initialLpAmount","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"pool","type":"address","internalType":"contract IPartyPool"},{"name":"lpAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"poolCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"poolsByTokenCount","inputs":[{"name":"token","type":"address","internalType":"contract IERC20"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"protocolFeeAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"protocolFeePpm","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setProtocolFeeAddress","inputs":[{"name":"feeAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"swapImpl","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract PartyPoolSwapImpl"}],"stateMutability":"view"},{"type":"function","name":"tokenCount","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":"wrapper","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract NativeWrapper"}],"stateMutability":"view"},{"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":"PartyStarted","inputs":[{"name":"pool","type":"address","indexed":true,"internalType":"contract IPartyPool"},{"name":"name","type":"string","indexed":false,"internalType":"string"},{"name":"symbol","type":"string","indexed":false,"internalType":"string"},{"name":"tokens","type":"address[]","indexed":false,"internalType":"contract IERC20[]"}],"anonymous":false},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x610140346103f557601f6136f238819003918201601f19168301916001600160401b038311848410176103f957808492610100946040528339810103126103f5576100498161040d565b60208201519091906001600160a01b03811681036103f55760408201516001600160a01b03811691908281036103f5576060840151906001600160a01b038216908183036103f55761009d6080870161040d565b936100aa60a0880161040d565b956100bc60e060c08a0151990161040d565b986001600160a01b03169182156103e2575f80546001600160a01b031981168517825560405194916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a360e0521561038f575060a05215610339576080526001600160a01b038116156102e357610100526001600160a01b038116156102785761012052620f42408110156102335760c052600180546001600160a01b0319166001600160a01b03929092169190911790556040516132d09081610422823960805181818161052101528181610f5d015281816117490152612683015260a0518181816104f80152818161101c01528181611720015261265a015260c0518181816104a2015281816116ca015281816122fe0152612604015260e0518181816104cf0152818161108a015281816116f70152612631015261010051818181610a7b01528181611bb40152612a760152610120518181816103310152818161155901526124970152f35b60405162461bcd60e51b815260206004820152601c60248201527f506c616e6e65723a2070726f746f636f6c20666565203e3d2070706d000000006044820152606490fd5b60405162461bcd60e51b815260206004820152603660248201527f506c616e6e65723a2062616c616e6365642070616972206465706c6f7965722060448201527f616464726573732063616e6e6f74206265207a65726f000000000000000000006064820152608490fd5b60405162461bcd60e51b815260206004820152602860248201527f506c616e6e65723a206465706c6f79657220616464726573732063616e6e6f74604482015267206265207a65726f60c01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602860248201527f506c616e6e65723a206d696e74496d706c20616464726573732063616e6e6f74604482015267206265207a65726f60c01b6064820152608490fd5b62461bcd60e51b815260206004820152602860248201527f506c616e6e65723a2073776170496d706c20616464726573732063616e6e6f74604482015267206265207a65726f60c01b6064820152608490fd5b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036103f55756fe60806040526004361015610011575f80fd5b5f3560e01c806314c870c014612ab157806360cf7d4a146123215780636b4082d1146122c95780636b7b911214612247578063715018a6146121ad5780638da5cb5b1461215d5780639a043832146120ec5780639f181b5e146120b1578063a4689b24146110d4578063a7753f09146110ae578063ac210cc714611040578063c405e44214610fd2578063cce516b714610f81578063f0d1ae4f14610f13578063f2fde38b14610e27578063f317672514610dbf578063f525cb6814610d84578063f63772fc146101515763f70a3a17146100ea575f80fd5b3461014d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5773ffffffffffffffffffffffffffffffffffffffff610136612afb565b165f526006602052602060405f2054604051908152f35b5f80fd5b3461014d576101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5760043567ffffffffffffffff811161014d576101a1903690600401612bae565b60243567ffffffffffffffff811161014d576101c1903690600401612bae565b9060443567ffffffffffffffff811161014d576101e2903690600401612c3a565b906101eb612cb5565b926101f4612d22565b906101fd612d31565b93610206612d54565b956101243567ffffffffffffffff811161014d5761022b909695963690600401612cc5565b61016435966102386131d5565b83519861025d6102478b612c22565b9a6102556040519c8d612b6d565b808c52612c22565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe060208c01910136823760843560011c985f5b87518110156102af57808b6102a88f93600194612e6f565b5201610290565b50908b918b6102bc6131d5565b8015908115610d79575b5015610d1b578751865103610c975773ffffffffffffffffffffffffffffffffffffffff16928315610c135773ffffffffffffffffffffffffffffffffffffffff16958615610b8f57600f0b985f8a1315610b31578251885103610aad5780610aa2575b15610a79577f00000000000000000000000000000000000000000000000000000000000000009198905b5f5473ffffffffffffffffffffffffffffffffffffffff169160015473ffffffffffffffffffffffffffffffffffffffff16906040519b8c947f6ae73ce3000000000000000000000000000000000000000000000000000000008652600486015260248501610180905261018485016103cd9089612f54565b8581037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc016044870152610401908d612f54565b8581037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc016064870152610435908c612f97565b9160848601528482037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0160a4860152519081815260200192905f5b818110610a60575050505f73ffffffffffffffffffffffffffffffffffffffff8460209694819460a43560c48401527f000000000000000000000000000000000000000000000000000000000000000060e4840152610104830152827f000000000000000000000000000000000000000000000000000000000000000016610124830152827f000000000000000000000000000000000000000000000000000000000000000016610144830152827f0000000000000000000000000000000000000000000000000000000000000000166101648301520393165af1968715610904575f97610a0f575b5061056487612fe0565b73ffffffffffffffffffffffffffffffffffffffff871691825f52600460205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790555f5b86518110156106d05773ffffffffffffffffffffffffffffffffffffffff6105db8289612e6f565b511690815f52600560205260ff60405f20541615610611575b6001915f52600660205261060b8a60405f20613050565b016105b3565b60035491680100000000000000008310156106a3578061066661063b856001809701600355612e15565b819391549073ffffffffffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b9055805f52600560205260405f20837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905591506105f4565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b509087837ff45e30d37dc5ef98e17708308b886213b8f485ea52d495067eed8d4977423f2261071589956107316107238d604051948594606086526060860190612f54565b908482036020860152612f54565b828103604084015288612f97565b0390a25f5b835181101561095b576107498187612e6f565b51610757575b600101610736565b73ffffffffffffffffffffffffffffffffffffffff6107768286612e6f565b51166107828288612e6f565b51604051907f23b872dd000000000000000000000000000000000000000000000000000000005f52856004528760245260445260205f60648180865af19060015f511482161561093a575b6040525f6060521561090f57506024602073ffffffffffffffffffffffffffffffffffffffff6107fd8488612e6f565b5116604051928380927f70a082310000000000000000000000000000000000000000000000000000000082528a60048301525afa908115610904575f916108d3575b5061084a8288612e6f565b511461074f5760846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f6665652d6f6e2d7472616e7366657220746f6b656e73206e6f7420737570706f60448201527f72746564000000000000000000000000000000000000000000000000000000006064820152fd5b90506020813d82116108fc575b816108ed60209383612b6d565b8101031261014d57518861083f565b3d91506108e0565b6040513d5f823e3d90fd5b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b90600181151661095257823b15153d151616906107cd565b503d5f823e3d90fd5b6040517f6d8d0ff300000000000000000000000000000000000000000000000000000000815260048101889052610144356024820152826020826044815f8b5af1918215610904575f926109db575b506040805173ffffffffffffffffffffffffffffffffffffffff9092168252602082019290925290819081015b0390f35b9091506020813d602011610a07575b816109f760209383612b6d565b8101031261014d575190826109aa565b3d91506109ea565b9096506020813d602011610a58575b81610a2b60209383612b6d565b8101031261014d575173ffffffffffffffffffffffffffffffffffffffff8116810361014d57958761055a565b3d9150610a1e565b825185528d955060209485019490920191600101610471565b7f0000000000000000000000000000000000000000000000000000000000000000919890610354565b50600287511461032a565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f506c616e6e65723a206665657320616e6420746f6b656e73206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f506c616e6e65723a206b61707061206d757374206265203e20300000000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f506c616e6e65723a2072656365697665722063616e6e6f74206265207a65726f60448201527f20616464726573730000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f506c616e6e65723a2070617965722063616e6e6f74206265207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f506c616e6e65723a20746f6b656e7320616e64206465706f73697473206c656e60448201527f677468206d69736d6174636800000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f506c616e6e65723a20646561646c696e652065786365656465640000000000006044820152fd5b90504211158b6102c6565b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d576020600254604051908152f35b3461014d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5773ffffffffffffffffffffffffffffffffffffffff610e0b612afb565b165f526004602052602060ff60405f2054166040519015158152f35b3461014d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5773ffffffffffffffffffffffffffffffffffffffff610e73612afb565b610e7b6131d5565b168015610ee75773ffffffffffffffffffffffffffffffffffffffff5f54827fffffffffffffffffffffffff00000000000000000000000000000000000000008216175f55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b7f1e4fbdf7000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461014d576109d76110c86110c236612d78565b9061312b565b60405191829182612b1e565b3461014d576101a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5760043567ffffffffffffffff811161014d57611124903690600401612bae565b60243567ffffffffffffffff811161014d57611144903690600401612bae565b9060443567ffffffffffffffff811161014d57611165903690600401612c3a565b9161116e612cb5565b916084359182600f0b80930361014d5760e43594851515860361014d57611193612d54565b94610124359073ffffffffffffffffffffffffffffffffffffffff821680920361014d576101443567ffffffffffffffff811161014d576111d8903690600401612cc5565b9061018435966111e66131d5565b81600f0b906801000000000000000082121561202d5768010000000000000000811215611fa9578551916001831115611f4b575f1215611eed578068010000000000000000017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580611ed3575b1561014d57600f0b9061126883613221565b927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908111611ea65761129c90613221565b600f0b0260401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580611e8c575b1561014d57600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580611e72575b1561014d57600f90810b92900b8112611e03575f821315611da55761132e91613239565b600f0b5f81138080611d93575b15611d35571561014d575f908068010000000000000000821215611d28575b806401000000006002921215611d1c575b62010000811215611d10575b610100811215611d04575b6010811215611cf8575b6004811215611ced575b1215611ce3575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f8313611cc757506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082600f0b1461014d5761142f915f03600f0b613239565b600f0b5f811315611c6957801561014d57700100000000000000000000000000000000057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580611c4f575b1561014d57600f0b945f861315611bf1576114999796976131d5565b8351986114a86102478b612c22565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe060208c01910136823760a43560011c985f5b87518110156114fa57808b6114f38f93600194612e6f565b52016114db565b50908b918b6115076131d5565b8015908115611be6575b5015610d1b578751865103610c975773ffffffffffffffffffffffffffffffffffffffff16928315610c13578615610b8f578251885103610aad5780611bdb575b15611bb2577f00000000000000000000000000000000000000000000000000000000000000009198905b5f5473ffffffffffffffffffffffffffffffffffffffff169160015473ffffffffffffffffffffffffffffffffffffffff16906040519b8c947f6ae73ce3000000000000000000000000000000000000000000000000000000008652600486015260248501610180905261018485016115f59089612f54565b8581037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc016044870152611629908d612f54565b8581037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01606487015261165d908c612f97565b9160848601528482037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0160a4860152519081815260200192905f5b818110611b99575050505f73ffffffffffffffffffffffffffffffffffffffff8460209694819460c43560c48401527f000000000000000000000000000000000000000000000000000000000000000060e4840152610104830152827f000000000000000000000000000000000000000000000000000000000000000016610124830152827f000000000000000000000000000000000000000000000000000000000000000016610144830152827f0000000000000000000000000000000000000000000000000000000000000000166101648301520393165af1968715610904575f97611b48575b5061178c87612fe0565b73ffffffffffffffffffffffffffffffffffffffff871691825f52600460205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790555f5b86518110156118a05773ffffffffffffffffffffffffffffffffffffffff6118038289612e6f565b511690815f52600560205260ff60405f20541615611839575b6001915f5260066020526118338a60405f20613050565b016117db565b60035491680100000000000000008310156106a3578061186361063b856001809701600355612e15565b9055805f52600560205260405f20837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055915061181c565b509087837ff45e30d37dc5ef98e17708308b886213b8f485ea52d495067eed8d4977423f2261071589956118e56107238d604051948594606086526060860190612f54565b0390a25f5b8351811015611ad0576118fd8187612e6f565b5161190b575b6001016118ea565b73ffffffffffffffffffffffffffffffffffffffff61192a8286612e6f565b51166119368288612e6f565b51604051907f23b872dd000000000000000000000000000000000000000000000000000000005f52856004528760245260445260205f60648180865af19060015f5114821615611ab8575b6040525f6060521561090f57506024602073ffffffffffffffffffffffffffffffffffffffff6119b18488612e6f565b5116604051928380927f70a082310000000000000000000000000000000000000000000000000000000082528a60048301525afa908115610904575f91611a87575b506119fe8288612e6f565b51146119035760846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f6665652d6f6e2d7472616e7366657220746f6b656e73206e6f7420737570706f60448201527f72746564000000000000000000000000000000000000000000000000000000006064820152fd5b90506020813d8211611ab0575b81611aa160209383612b6d565b8101031261014d5751886119f3565b3d9150611a94565b90600181151661095257823b15153d15161690611981565b6040517f6d8d0ff300000000000000000000000000000000000000000000000000000000815260048101889052610164356024820152826020826044815f8b5af1918215610904575f926109db57506040805173ffffffffffffffffffffffffffffffffffffffff9290921682526020820192909252f35b9096506020813d602011611b91575b81611b6460209383612b6d565b8101031261014d575173ffffffffffffffffffffffffffffffffffffffff8116810361014d579587611782565b3d9150611b57565b825185528d955060209485019490920191600101611699565b7f000000000000000000000000000000000000000000000000000000000000000091989061157c565b506002875114611552565b90504211158b611511565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4d53523a206b617070613c3d300000000000000000000000000000000000006044820152fd5b506f7fffffffffffffffffffffffffffffff81131561147d565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4c4d53523a20793c3d30000000000000000000000000000000000000000000006044820152fd5b8002908160ff1c9182607f011c918302019160011d91906113d4565b906001019061139d565b92810192811d611396565b6004938401931d61138c565b6008938401931d611382565b6010938401931d611377565b6020938401931d61136b565b506040915080821d61135a565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4c4d53523a20626164204520726174696f0000000000000000000000000000006044820152fd5b5068010000000000000000821261133b565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4c4d53523a207320746f6f206c6172676520666f72206e0000000000000000006044820152fd5b5f821315611e145761132e91613239565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4c4d53523a2062616420736c697070616765206f72206e0000000000000000006044820152fd5b506f7fffffffffffffffffffffffffffffff81131561130a565b506f7fffffffffffffffffffffffffffffff8113156112cd565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b506f7fffffffffffffffffffffffffffffff811315611256565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4c4d53523a20663d3000000000000000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4c4d53523a206e3e3120726571756972656400000000000000000000000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f506c616e6e65723a20746172676574536c697070616765206d7573742062652060448201527f3c2031202836342e3634290000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f506c616e6e65723a20747261646546726163206d757374206265203c2031202860448201527f36342e36342900000000000000000000000000000000000000000000000000006064820152fd5b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d576020600354604051908152f35b3461014d576121036120fd36612d78565b9061308b565b6040518091602082016020835281518091526020604084019201905f5b81811061212e575050500390f35b825173ffffffffffffffffffffffffffffffffffffffff16845285945060209384019390920191600101612120565b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d576121e36131d5565b5f73ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461014d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5773ffffffffffffffffffffffffffffffffffffffff612293612afb565b61229b6131d5565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060015416176001555f80f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461014d576101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5760043567ffffffffffffffff811161014d57612371903690600401612bae565b60243567ffffffffffffffff811161014d57612391903690600401612bae565b60443567ffffffffffffffff811161014d576123b1903690600401612c3a565b6123b9612cb5565b60843567ffffffffffffffff811161014d576123d9903690600401612cc5565b6123e1612d22565b946123ea612d31565b916123f3612d54565b906101243567ffffffffffffffff811161014d57612415903690600401612cc5565b93610164356124226131d5565b8015908115612aa6575b5015610d1b578651855103610c975773ffffffffffffffffffffffffffffffffffffffff16918215610c135773ffffffffffffffffffffffffffffffffffffffff16948515610b8f57600f0b975f891315610b31578151875103610aad5780612a9b575b15612a74577f0000000000000000000000000000000000000000000000000000000000000000905b73ffffffffffffffffffffffffffffffffffffffff5f54169073ffffffffffffffffffffffffffffffffffffffff600154166040519a8b937f6ae73ce30000000000000000000000000000000000000000000000000000000085526004850152610180602485015261259461256461253461018487018a612f54565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8782030160448801528d612f54565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8682030160648701528b612f97565b9060848501527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8482030160a4850152602080845192838152019301905f5b818110612a5b575050505f73ffffffffffffffffffffffffffffffffffffffff8460209694819460a43560c48401527f000000000000000000000000000000000000000000000000000000000000000060e4840152610104830152827f000000000000000000000000000000000000000000000000000000000000000016610124830152827f000000000000000000000000000000000000000000000000000000000000000016610144830152827f0000000000000000000000000000000000000000000000000000000000000000166101648301520393165af1968715610904575f97612a0a575b506126c687612fe0565b73ffffffffffffffffffffffffffffffffffffffff871691825f52600460205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790555f5b86518110156127da5773ffffffffffffffffffffffffffffffffffffffff61273d8289612e6f565b511690815f52600560205260ff60405f20541615612773575b6001915f52600660205261276d8a60405f20613050565b01612715565b60035491680100000000000000008310156106a3578061279d61063b856001809701600355612e15565b9055805f52600560205260405f20837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790559150612756565b509087837ff45e30d37dc5ef98e17708308b886213b8f485ea52d495067eed8d4977423f22610715899561281f6107238d604051948594606086526060860190612f54565b0390a25f5b835181101561095b576128378187612e6f565b51612845575b600101612824565b73ffffffffffffffffffffffffffffffffffffffff6128648286612e6f565b51166128708288612e6f565b51604051907f23b872dd000000000000000000000000000000000000000000000000000000005f52856004528760245260445260205f60648180865af19060015f51148216156129f2575b6040525f6060521561090f57506024602073ffffffffffffffffffffffffffffffffffffffff6128eb8488612e6f565b5116604051928380927f70a082310000000000000000000000000000000000000000000000000000000082528a60048301525afa908115610904575f916129c1575b506129388288612e6f565b511461283d5760846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f6665652d6f6e2d7472616e7366657220746f6b656e73206e6f7420737570706f60448201527f72746564000000000000000000000000000000000000000000000000000000006064820152fd5b90506020813d82116129ea575b816129db60209383612b6d565b8101031261014d57518861292d565b3d91506129ce565b90600181151661095257823b15153d151616906128bb565b9096506020813d602011612a53575b81612a2660209383612b6d565b8101031261014d575173ffffffffffffffffffffffffffffffffffffffff8116810361014d5795876126bc565b3d9150612a19565b825185528d9550602094850194909201916001016125d3565b7f0000000000000000000000000000000000000000000000000000000000000000906124b8565b506002865114612490565b90504211158a61242c565b3461014d5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d576109d76110c8612aee612afb565b6044359060243590612e83565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361014d57565b60206040818301928281528451809452019201905f5b818110612b415750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101612b34565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176106a357604052565b81601f8201121561014d5780359067ffffffffffffffff82116106a35760405192612c0160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601160185612b6d565b8284526020838301011161014d57815f926020809301838601378301015290565b67ffffffffffffffff81116106a35760051b60200190565b9080601f8301121561014d57813590612c5282612c22565b92612c606040519485612b6d565b82845260208085019360051b82010191821161014d57602001915b818310612c885750505090565b823573ffffffffffffffffffffffffffffffffffffffff8116810361014d57815260209283019201612c7b565b6064359081600f0b820361014d57565b9080601f8301121561014d578135612cdc81612c22565b92612cea6040519485612b6d565b81845260208085019260051b82010192831161014d57602001905b828210612d125750505090565b8135815260209182019101612d05565b60c43590811515820361014d57565b60e4359073ffffffffffffffffffffffffffffffffffffffff8216820361014d57565b610104359073ffffffffffffffffffffffffffffffffffffffff8216820361014d57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc604091011261014d576004359060243590565b90612db682612c22565b612dc36040519182612b6d565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0612df18294612c22565b0190602036910137565b91908201809211611ea657565b91908203918211611ea657565b600354811015612e2d5760035f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8054821015612e2d575f5260205f2001905f90565b8051821015612e2d5760209160051b010190565b73ffffffffffffffffffffffffffffffffffffffff90929192165f52600660205260405f2090815480841015612f3857808491612ec08484612dfb565b1115612f3057612ed09250612e08565b905b612edb82612dac565b925f5b838110612eec575050505090565b8073ffffffffffffffffffffffffffffffffffffffff612f17612f1160019486612dfb565b86612e5a565b90549060031b1c16612f298288612e6f565b5201612ede565b505090612ed2565b50505050604051612f4a602082612b6d565b5f81525f36813790565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b90602080835192838152019201905f5b818110612fb45750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101612fa7565b600254680100000000000000008110156106a35773ffffffffffffffffffffffffffffffffffffffff61301e82600161304c94016002556002612e5a565b919093169083549073ffffffffffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b9055565b8054680100000000000000008110156106a35761301e8161304c93600173ffffffffffffffffffffffffffffffffffffffff94018155612e5a565b919060035480841015613119578084916130a58484612dfb565b1115613112576130b59250612e08565b6130be81612dac565b905f5b8181106130cf575090925050565b8073ffffffffffffffffffffffffffffffffffffffff6130f96130f460019489612dfb565b612e15565b90549060031b1c1661310b8286612e6f565b52016130c1565b50506130b5565b50509050604051612f4a602082612b6d565b90600254808310156131c4578083916131448484612dfb565b11156131bc576131549250612e08565b905b61315f82612dac565b915f91600254925b828110613175575050505090565b61317f8183612dfb565b9084821015612e2d5773ffffffffffffffffffffffffffffffffffffffff60019260025f5260205f200154166131b58288612e6f565b5201613167565b505090613156565b505050604051612f4a602082612b6d565b73ffffffffffffffffffffffffffffffffffffffff5f541633036131f557565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b677fffffffffffffff811161014d5760401b600f0b90565b90600f0b90811561014d5760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613280575b1561014d57600f0b90565b506f7fffffffffffffffffffffffffffffff81131561327556fea26469706673582212200f068c5d1e462e2aef9bf458cabb8f9a47c383be2b40c9c96d830b134c690f5e64736f6c634300081e0033","sourceMap":"839:12537:47:-:0;;;;;;;;;;;;;-1:-1:-1;;839:12537:47;;;;-1:-1:-1;;;;;839:12537:47;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;839:12537:47;;;;;;;;;;-1:-1:-1;;;;;839:12537:47;;;;;;;;;;;;;;-1:-1:-1;;;;;839:12537:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;839:12537:47;;1018:26:44;;1014:95;;-1:-1:-1;839:12537:47;;-1:-1:-1;;;;;;839:12537:47;;;;;;;;;;-1:-1:-1;;;;;839:12537:47;;;;1104:49:45;;-1:-1:-1;1104:49:45;839:12537:47;3429:18;3465:32;839:12537;;3552:21;839:12537;3552:21;3591:32;839:12537;;;3678:21;-1:-1:-1;;;;;839:12537:47;;3717:32;839:12537;;;3804:32;-1:-1:-1;;;;;839:12537:47;;3854:44;839:12537;;3967:46;;4050:9;4032:27;;839:12537;;;;4102:34;839:12537;;;-1:-1:-1;;;;;;839:12537:47;-1:-1:-1;;;;;839:12537:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3967:46;839:12537;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;839:12537:47;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;839:12537:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;839:12537:47;;;;;;;;;;;;;;;;;-1:-1:-1;;;839:12537:47;;;;;;;;;;-1:-1:-1;;;839:12537:47;;;;;;;;;;;;;;;;;-1:-1:-1;;;839:12537:47;;;;;;;;-1:-1:-1;;;839:12537:47;;;;;;;;;;;;;;;;;-1:-1:-1;;;839:12537:47;;;;;;;1014:95:44;1067:31;;;-1:-1:-1;1067:31:44;-1:-1:-1;1067:31:44;839:12537:47;;-1:-1:-1;1067:31:44;839:12537:47;-1:-1:-1;839:12537:47;;;;;;-1:-1:-1;839:12537:47;;;;;-1:-1:-1;839:12537:47;;;;-1:-1:-1;;;;;839:12537:47;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806314c870c014612ab157806360cf7d4a146123215780636b4082d1146122c95780636b7b911214612247578063715018a6146121ad5780638da5cb5b1461215d5780639a043832146120ec5780639f181b5e146120b1578063a4689b24146110d4578063a7753f09146110ae578063ac210cc714611040578063c405e44214610fd2578063cce516b714610f81578063f0d1ae4f14610f13578063f2fde38b14610e27578063f317672514610dbf578063f525cb6814610d84578063f63772fc146101515763f70a3a17146100ea575f80fd5b3461014d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5773ffffffffffffffffffffffffffffffffffffffff610136612afb565b165f526006602052602060405f2054604051908152f35b5f80fd5b3461014d576101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5760043567ffffffffffffffff811161014d576101a1903690600401612bae565b60243567ffffffffffffffff811161014d576101c1903690600401612bae565b9060443567ffffffffffffffff811161014d576101e2903690600401612c3a565b906101eb612cb5565b926101f4612d22565b906101fd612d31565b93610206612d54565b956101243567ffffffffffffffff811161014d5761022b909695963690600401612cc5565b61016435966102386131d5565b83519861025d6102478b612c22565b9a6102556040519c8d612b6d565b808c52612c22565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe060208c01910136823760843560011c985f5b87518110156102af57808b6102a88f93600194612e6f565b5201610290565b50908b918b6102bc6131d5565b8015908115610d79575b5015610d1b578751865103610c975773ffffffffffffffffffffffffffffffffffffffff16928315610c135773ffffffffffffffffffffffffffffffffffffffff16958615610b8f57600f0b985f8a1315610b31578251885103610aad5780610aa2575b15610a79577f00000000000000000000000000000000000000000000000000000000000000009198905b5f5473ffffffffffffffffffffffffffffffffffffffff169160015473ffffffffffffffffffffffffffffffffffffffff16906040519b8c947f6ae73ce3000000000000000000000000000000000000000000000000000000008652600486015260248501610180905261018485016103cd9089612f54565b8581037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc016044870152610401908d612f54565b8581037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc016064870152610435908c612f97565b9160848601528482037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0160a4860152519081815260200192905f5b818110610a60575050505f73ffffffffffffffffffffffffffffffffffffffff8460209694819460a43560c48401527f000000000000000000000000000000000000000000000000000000000000000060e4840152610104830152827f000000000000000000000000000000000000000000000000000000000000000016610124830152827f000000000000000000000000000000000000000000000000000000000000000016610144830152827f0000000000000000000000000000000000000000000000000000000000000000166101648301520393165af1968715610904575f97610a0f575b5061056487612fe0565b73ffffffffffffffffffffffffffffffffffffffff871691825f52600460205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790555f5b86518110156106d05773ffffffffffffffffffffffffffffffffffffffff6105db8289612e6f565b511690815f52600560205260ff60405f20541615610611575b6001915f52600660205261060b8a60405f20613050565b016105b3565b60035491680100000000000000008310156106a3578061066661063b856001809701600355612e15565b819391549073ffffffffffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b9055805f52600560205260405f20837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905591506105f4565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b509087837ff45e30d37dc5ef98e17708308b886213b8f485ea52d495067eed8d4977423f2261071589956107316107238d604051948594606086526060860190612f54565b908482036020860152612f54565b828103604084015288612f97565b0390a25f5b835181101561095b576107498187612e6f565b51610757575b600101610736565b73ffffffffffffffffffffffffffffffffffffffff6107768286612e6f565b51166107828288612e6f565b51604051907f23b872dd000000000000000000000000000000000000000000000000000000005f52856004528760245260445260205f60648180865af19060015f511482161561093a575b6040525f6060521561090f57506024602073ffffffffffffffffffffffffffffffffffffffff6107fd8488612e6f565b5116604051928380927f70a082310000000000000000000000000000000000000000000000000000000082528a60048301525afa908115610904575f916108d3575b5061084a8288612e6f565b511461074f5760846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f6665652d6f6e2d7472616e7366657220746f6b656e73206e6f7420737570706f60448201527f72746564000000000000000000000000000000000000000000000000000000006064820152fd5b90506020813d82116108fc575b816108ed60209383612b6d565b8101031261014d57518861083f565b3d91506108e0565b6040513d5f823e3d90fd5b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b90600181151661095257823b15153d151616906107cd565b503d5f823e3d90fd5b6040517f6d8d0ff300000000000000000000000000000000000000000000000000000000815260048101889052610144356024820152826020826044815f8b5af1918215610904575f926109db575b506040805173ffffffffffffffffffffffffffffffffffffffff9092168252602082019290925290819081015b0390f35b9091506020813d602011610a07575b816109f760209383612b6d565b8101031261014d575190826109aa565b3d91506109ea565b9096506020813d602011610a58575b81610a2b60209383612b6d565b8101031261014d575173ffffffffffffffffffffffffffffffffffffffff8116810361014d57958761055a565b3d9150610a1e565b825185528d955060209485019490920191600101610471565b7f0000000000000000000000000000000000000000000000000000000000000000919890610354565b50600287511461032a565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f506c616e6e65723a206665657320616e6420746f6b656e73206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f506c616e6e65723a206b61707061206d757374206265203e20300000000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f506c616e6e65723a2072656365697665722063616e6e6f74206265207a65726f60448201527f20616464726573730000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f506c616e6e65723a2070617965722063616e6e6f74206265207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f506c616e6e65723a20746f6b656e7320616e64206465706f73697473206c656e60448201527f677468206d69736d6174636800000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f506c616e6e65723a20646561646c696e652065786365656465640000000000006044820152fd5b90504211158b6102c6565b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d576020600254604051908152f35b3461014d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5773ffffffffffffffffffffffffffffffffffffffff610e0b612afb565b165f526004602052602060ff60405f2054166040519015158152f35b3461014d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5773ffffffffffffffffffffffffffffffffffffffff610e73612afb565b610e7b6131d5565b168015610ee75773ffffffffffffffffffffffffffffffffffffffff5f54827fffffffffffffffffffffffff00000000000000000000000000000000000000008216175f55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b7f1e4fbdf7000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461014d576109d76110c86110c236612d78565b9061312b565b60405191829182612b1e565b3461014d576101a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5760043567ffffffffffffffff811161014d57611124903690600401612bae565b60243567ffffffffffffffff811161014d57611144903690600401612bae565b9060443567ffffffffffffffff811161014d57611165903690600401612c3a565b9161116e612cb5565b916084359182600f0b80930361014d5760e43594851515860361014d57611193612d54565b94610124359073ffffffffffffffffffffffffffffffffffffffff821680920361014d576101443567ffffffffffffffff811161014d576111d8903690600401612cc5565b9061018435966111e66131d5565b81600f0b906801000000000000000082121561202d5768010000000000000000811215611fa9578551916001831115611f4b575f1215611eed578068010000000000000000017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580611ed3575b1561014d57600f0b9061126883613221565b927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908111611ea65761129c90613221565b600f0b0260401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580611e8c575b1561014d57600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580611e72575b1561014d57600f90810b92900b8112611e03575f821315611da55761132e91613239565b600f0b5f81138080611d93575b15611d35571561014d575f908068010000000000000000821215611d28575b806401000000006002921215611d1c575b62010000811215611d10575b610100811215611d04575b6010811215611cf8575b6004811215611ced575b1215611ce3575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f8313611cc757506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082600f0b1461014d5761142f915f03600f0b613239565b600f0b5f811315611c6957801561014d57700100000000000000000000000000000000057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580611c4f575b1561014d57600f0b945f861315611bf1576114999796976131d5565b8351986114a86102478b612c22565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe060208c01910136823760a43560011c985f5b87518110156114fa57808b6114f38f93600194612e6f565b52016114db565b50908b918b6115076131d5565b8015908115611be6575b5015610d1b578751865103610c975773ffffffffffffffffffffffffffffffffffffffff16928315610c13578615610b8f578251885103610aad5780611bdb575b15611bb2577f00000000000000000000000000000000000000000000000000000000000000009198905b5f5473ffffffffffffffffffffffffffffffffffffffff169160015473ffffffffffffffffffffffffffffffffffffffff16906040519b8c947f6ae73ce3000000000000000000000000000000000000000000000000000000008652600486015260248501610180905261018485016115f59089612f54565b8581037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc016044870152611629908d612f54565b8581037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01606487015261165d908c612f97565b9160848601528482037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0160a4860152519081815260200192905f5b818110611b99575050505f73ffffffffffffffffffffffffffffffffffffffff8460209694819460c43560c48401527f000000000000000000000000000000000000000000000000000000000000000060e4840152610104830152827f000000000000000000000000000000000000000000000000000000000000000016610124830152827f000000000000000000000000000000000000000000000000000000000000000016610144830152827f0000000000000000000000000000000000000000000000000000000000000000166101648301520393165af1968715610904575f97611b48575b5061178c87612fe0565b73ffffffffffffffffffffffffffffffffffffffff871691825f52600460205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790555f5b86518110156118a05773ffffffffffffffffffffffffffffffffffffffff6118038289612e6f565b511690815f52600560205260ff60405f20541615611839575b6001915f5260066020526118338a60405f20613050565b016117db565b60035491680100000000000000008310156106a3578061186361063b856001809701600355612e15565b9055805f52600560205260405f20837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055915061181c565b509087837ff45e30d37dc5ef98e17708308b886213b8f485ea52d495067eed8d4977423f2261071589956118e56107238d604051948594606086526060860190612f54565b0390a25f5b8351811015611ad0576118fd8187612e6f565b5161190b575b6001016118ea565b73ffffffffffffffffffffffffffffffffffffffff61192a8286612e6f565b51166119368288612e6f565b51604051907f23b872dd000000000000000000000000000000000000000000000000000000005f52856004528760245260445260205f60648180865af19060015f5114821615611ab8575b6040525f6060521561090f57506024602073ffffffffffffffffffffffffffffffffffffffff6119b18488612e6f565b5116604051928380927f70a082310000000000000000000000000000000000000000000000000000000082528a60048301525afa908115610904575f91611a87575b506119fe8288612e6f565b51146119035760846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f6665652d6f6e2d7472616e7366657220746f6b656e73206e6f7420737570706f60448201527f72746564000000000000000000000000000000000000000000000000000000006064820152fd5b90506020813d8211611ab0575b81611aa160209383612b6d565b8101031261014d5751886119f3565b3d9150611a94565b90600181151661095257823b15153d15161690611981565b6040517f6d8d0ff300000000000000000000000000000000000000000000000000000000815260048101889052610164356024820152826020826044815f8b5af1918215610904575f926109db57506040805173ffffffffffffffffffffffffffffffffffffffff9290921682526020820192909252f35b9096506020813d602011611b91575b81611b6460209383612b6d565b8101031261014d575173ffffffffffffffffffffffffffffffffffffffff8116810361014d579587611782565b3d9150611b57565b825185528d955060209485019490920191600101611699565b7f000000000000000000000000000000000000000000000000000000000000000091989061157c565b506002875114611552565b90504211158b611511565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4d53523a206b617070613c3d300000000000000000000000000000000000006044820152fd5b506f7fffffffffffffffffffffffffffffff81131561147d565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4c4d53523a20793c3d30000000000000000000000000000000000000000000006044820152fd5b8002908160ff1c9182607f011c918302019160011d91906113d4565b906001019061139d565b92810192811d611396565b6004938401931d61138c565b6008938401931d611382565b6010938401931d611377565b6020938401931d61136b565b506040915080821d61135a565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4c4d53523a20626164204520726174696f0000000000000000000000000000006044820152fd5b5068010000000000000000821261133b565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4c4d53523a207320746f6f206c6172676520666f72206e0000000000000000006044820152fd5b5f821315611e145761132e91613239565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4c4d53523a2062616420736c697070616765206f72206e0000000000000000006044820152fd5b506f7fffffffffffffffffffffffffffffff81131561130a565b506f7fffffffffffffffffffffffffffffff8113156112cd565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b506f7fffffffffffffffffffffffffffffff811315611256565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4c4d53523a20663d3000000000000000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4c4d53523a206e3e3120726571756972656400000000000000000000000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f506c616e6e65723a20746172676574536c697070616765206d7573742062652060448201527f3c2031202836342e3634290000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f506c616e6e65723a20747261646546726163206d757374206265203c2031202860448201527f36342e36342900000000000000000000000000000000000000000000000000006064820152fd5b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d576020600354604051908152f35b3461014d576121036120fd36612d78565b9061308b565b6040518091602082016020835281518091526020604084019201905f5b81811061212e575050500390f35b825173ffffffffffffffffffffffffffffffffffffffff16845285945060209384019390920191600101612120565b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d57602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d576121e36131d5565b5f73ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461014d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5773ffffffffffffffffffffffffffffffffffffffff612293612afb565b61229b6131d5565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060015416176001555f80f35b3461014d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461014d576101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d5760043567ffffffffffffffff811161014d57612371903690600401612bae565b60243567ffffffffffffffff811161014d57612391903690600401612bae565b60443567ffffffffffffffff811161014d576123b1903690600401612c3a565b6123b9612cb5565b60843567ffffffffffffffff811161014d576123d9903690600401612cc5565b6123e1612d22565b946123ea612d31565b916123f3612d54565b906101243567ffffffffffffffff811161014d57612415903690600401612cc5565b93610164356124226131d5565b8015908115612aa6575b5015610d1b578651855103610c975773ffffffffffffffffffffffffffffffffffffffff16918215610c135773ffffffffffffffffffffffffffffffffffffffff16948515610b8f57600f0b975f891315610b31578151875103610aad5780612a9b575b15612a74577f0000000000000000000000000000000000000000000000000000000000000000905b73ffffffffffffffffffffffffffffffffffffffff5f54169073ffffffffffffffffffffffffffffffffffffffff600154166040519a8b937f6ae73ce30000000000000000000000000000000000000000000000000000000085526004850152610180602485015261259461256461253461018487018a612f54565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8782030160448801528d612f54565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8682030160648701528b612f97565b9060848501527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8482030160a4850152602080845192838152019301905f5b818110612a5b575050505f73ffffffffffffffffffffffffffffffffffffffff8460209694819460a43560c48401527f000000000000000000000000000000000000000000000000000000000000000060e4840152610104830152827f000000000000000000000000000000000000000000000000000000000000000016610124830152827f000000000000000000000000000000000000000000000000000000000000000016610144830152827f0000000000000000000000000000000000000000000000000000000000000000166101648301520393165af1968715610904575f97612a0a575b506126c687612fe0565b73ffffffffffffffffffffffffffffffffffffffff871691825f52600460205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790555f5b86518110156127da5773ffffffffffffffffffffffffffffffffffffffff61273d8289612e6f565b511690815f52600560205260ff60405f20541615612773575b6001915f52600660205261276d8a60405f20613050565b01612715565b60035491680100000000000000008310156106a3578061279d61063b856001809701600355612e15565b9055805f52600560205260405f20837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790559150612756565b509087837ff45e30d37dc5ef98e17708308b886213b8f485ea52d495067eed8d4977423f22610715899561281f6107238d604051948594606086526060860190612f54565b0390a25f5b835181101561095b576128378187612e6f565b51612845575b600101612824565b73ffffffffffffffffffffffffffffffffffffffff6128648286612e6f565b51166128708288612e6f565b51604051907f23b872dd000000000000000000000000000000000000000000000000000000005f52856004528760245260445260205f60648180865af19060015f51148216156129f2575b6040525f6060521561090f57506024602073ffffffffffffffffffffffffffffffffffffffff6128eb8488612e6f565b5116604051928380927f70a082310000000000000000000000000000000000000000000000000000000082528a60048301525afa908115610904575f916129c1575b506129388288612e6f565b511461283d5760846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f6665652d6f6e2d7472616e7366657220746f6b656e73206e6f7420737570706f60448201527f72746564000000000000000000000000000000000000000000000000000000006064820152fd5b90506020813d82116129ea575b816129db60209383612b6d565b8101031261014d57518861292d565b3d91506129ce565b90600181151661095257823b15153d151616906128bb565b9096506020813d602011612a53575b81612a2660209383612b6d565b8101031261014d575173ffffffffffffffffffffffffffffffffffffffff8116810361014d5795876126bc565b3d9150612a19565b825185528d9550602094850194909201916001016125d3565b7f0000000000000000000000000000000000000000000000000000000000000000906124b8565b506002865114612490565b90504211158a61242c565b3461014d5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014d576109d76110c8612aee612afb565b6044359060243590612e83565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361014d57565b60206040818301928281528451809452019201905f5b818110612b415750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101612b34565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176106a357604052565b81601f8201121561014d5780359067ffffffffffffffff82116106a35760405192612c0160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601160185612b6d565b8284526020838301011161014d57815f926020809301838601378301015290565b67ffffffffffffffff81116106a35760051b60200190565b9080601f8301121561014d57813590612c5282612c22565b92612c606040519485612b6d565b82845260208085019360051b82010191821161014d57602001915b818310612c885750505090565b823573ffffffffffffffffffffffffffffffffffffffff8116810361014d57815260209283019201612c7b565b6064359081600f0b820361014d57565b9080601f8301121561014d578135612cdc81612c22565b92612cea6040519485612b6d565b81845260208085019260051b82010192831161014d57602001905b828210612d125750505090565b8135815260209182019101612d05565b60c43590811515820361014d57565b60e4359073ffffffffffffffffffffffffffffffffffffffff8216820361014d57565b610104359073ffffffffffffffffffffffffffffffffffffffff8216820361014d57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc604091011261014d576004359060243590565b90612db682612c22565b612dc36040519182612b6d565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0612df18294612c22565b0190602036910137565b91908201809211611ea657565b91908203918211611ea657565b600354811015612e2d5760035f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8054821015612e2d575f5260205f2001905f90565b8051821015612e2d5760209160051b010190565b73ffffffffffffffffffffffffffffffffffffffff90929192165f52600660205260405f2090815480841015612f3857808491612ec08484612dfb565b1115612f3057612ed09250612e08565b905b612edb82612dac565b925f5b838110612eec575050505090565b8073ffffffffffffffffffffffffffffffffffffffff612f17612f1160019486612dfb565b86612e5a565b90549060031b1c16612f298288612e6f565b5201612ede565b505090612ed2565b50505050604051612f4a602082612b6d565b5f81525f36813790565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b90602080835192838152019201905f5b818110612fb45750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101612fa7565b600254680100000000000000008110156106a35773ffffffffffffffffffffffffffffffffffffffff61301e82600161304c94016002556002612e5a565b919093169083549073ffffffffffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b9055565b8054680100000000000000008110156106a35761301e8161304c93600173ffffffffffffffffffffffffffffffffffffffff94018155612e5a565b919060035480841015613119578084916130a58484612dfb565b1115613112576130b59250612e08565b6130be81612dac565b905f5b8181106130cf575090925050565b8073ffffffffffffffffffffffffffffffffffffffff6130f96130f460019489612dfb565b612e15565b90549060031b1c1661310b8286612e6f565b52016130c1565b50506130b5565b50509050604051612f4a602082612b6d565b90600254808310156131c4578083916131448484612dfb565b11156131bc576131549250612e08565b905b61315f82612dac565b915f91600254925b828110613175575050505090565b61317f8183612dfb565b9084821015612e2d5773ffffffffffffffffffffffffffffffffffffffff60019260025f5260205f200154166131b58288612e6f565b5201613167565b505090613156565b505050604051612f4a602082612b6d565b73ffffffffffffffffffffffffffffffffffffffff5f541633036131f557565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b677fffffffffffffff811161014d5760401b600f0b90565b90600f0b90811561014d5760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613280575b1561014d57600f0b90565b506f7fffffffffffffffffffffffffffffff81131561327556fea26469706673582212200f068c5d1e462e2aef9bf458cabb8f9a47c383be2b40c9c96d830b134c690f5e64736f6c634300081e0033","sourceMap":"839:12537:47:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12471:13;839:12537;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;505:62:45;;;:::i;:::-;839:12537:47;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;7988:3;839:12537;;7968:18;;;;;8188:28;;;;;839:12537;8188:28;;:::i;:::-;839:12537;;7953:13;;7968:18;;;;;;505:62:45;;:::i;:::-;4850:13:47;;:44;;;;;7948:279;839:12537;;;;;;;;4943:40;839:12537;;;;5050:19;;;839:12537;;;;5129:22;;;839:12537;;;;5254:18;839:12537;5254:18;;839:12537;;;;;;;5386:37;839:12537;;5578:30;;;7948:279;5578:78;;;5611:22;5578:78;;;;839:12537;;;;;;;;;;;;5673:342;;;839:12537;5673:342;;839:12537;5673:342;;839:12537;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5890:16;839:12537;;;;;;;;5952:7;;839:12537;;;;;5973:9;;839:12537;;;;;5996:9;;839:12537;;;;;5673:342;839:12537;;5673:342;;;;;;;839:12537;5673:342;;;839:12537;6026:20;;;;:::i;:::-;839:12537;;;;;;;;;;;;;;;;;;;;;;6181:3;839:12537;;6161:18;;;;;839:12537;6215:10;;;;:::i;:::-;839:12537;;;;;;6307:15;839:12537;;;;;;;;6306:23;6302:131;;6181:3;839:12537;;;;6496:13;839:12537;;6496:31;839:12537;;;;6496:31;:::i;:::-;839:12537;6146:13;;6302:131;6349:10;839:12537;;;;;;;;;;;;;;;;6349:10;839:12537;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;6307:15;839:12537;;;;;;;;;;;;;6302:131;;;;839:12537;;;;;;;;;;6161:18;;;;;6553:43;839:12537;6161:18;;839:12537;;6161:18;839:12537;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;6553:43;;;839:12537;6706:3;839:12537;;6686:18;;;;;6729;;;;:::i;:::-;839:12537;6725:270;;6706:3;839:12537;;6671:13;;6725:270;839:12537;6778:10;;;;:::i;:::-;839:12537;;6829:18;;;;:::i;:::-;839:12537;;10404:1148:24;;10365:28;839:12537:47;10404:1148:24;;839:12537:47;10404:1148:24;;839:12537:47;10404:1148:24;839:12537:47;10404:1148:24;839:12537:47;;;10404:1148:24;;;;;;839:12537:47;;10404:1148:24;;;;;;;6725:270:47;839:12537;10404:1148:24;839:12537:47;;10404:1148:24;1766:48;1762:126;;6881:10:47;839:12537;;;6881:10;;;;:::i;:::-;839:12537;;;;6874:43;;;;839:12537;6874:43;;;839:12537;6874:43;;839:12537;6874:43;;;;;;;839:12537;6874:43;;;6725:270;6921:18;;;;;:::i;:::-;839:12537;6874:65;6725:270;839:12537;;;;;;;;;;;;;;;;;;;;;;;;;;;;6874:43;;;839:12537;6874:43;;;;;;;;;839:12537;6874:43;;;:::i;:::-;;;839:12537;;;;;6874:43;;;;;;-1:-1:-1;6874:43:47;;;839:12537;;;;;;;;;1762:126:24;1837:40;839:12537:47;1837:40:24;839:12537:47;;;;1837:40:24;10404:1148;;839:12537:47;10404:1148:24;;;;;;;;;;;;;;;;;;;839:12537:47;10404:1148:24;;;;;6686:18:47;839:12537;;;7109:43;;839:12537;7109:43;;839:12537;;;;;;;;;6686:18;839:12537;;;;;6686:18;7109:43;;;;;;;839:12537;7109:43;;;6666:339;-1:-1:-1;839:12537:47;;;;;;;;;;;;;;;;;;;;;;;;;7109:43;;;;839:12537;7109:43;;839:12537;7109:43;;;;;;839:12537;7109:43;;;:::i;:::-;;;839:12537;;;;;7109:43;;;;;;;-1:-1:-1;7109:43:47;;5673:342;;;;839:12537;5673:342;;839:12537;5673:342;;;;;;839:12537;5673:342;;;:::i;:::-;;;839:12537;;;;;;;;;;;;5673:342;;;;;;;-1:-1:-1;5673:342:47;;839:12537;;;;;;;-1:-1:-1;839:12537:47;;;;;;;;;;;;;5578:78;5636:20;5578:78;;;;;:30;839:12537;8215:1;839:12537;;5589:19;5578:30;;839:12537;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4850:44;4867:15;;;:27;;4850:44;;;839:12537;;;;;;;;;;;;10600:9;839:12537;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;505:62:45;;:::i;:::-;839:12537:47;1993:22:44;;1989:91;;839:12537:47;;;;;;;;;;;1104:49:45;839:12537:47;1104:49:45;;839:12537:47;1989:91:44;2038:31;839:12537:47;2038:31:44;839:12537:47;;;;;2038:31:44;839:12537:47;;;;;;;;;;;;;;;1209:9;839:12537;;;;;;;;;;;;;;;;;1816:33;839:12537;;;;;;;;;;;;;;;;;;;;;;;1455:9;839:12537;;;;;;;;;;;;;;;;;;;2080:7;839:12537;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;505:62:45;;;:::i;:::-;839:12537:47;;;9580:16;839:12537;9580:16;;963:15;;;839:12537;9657:21;;963:15;;;839:12537;;36311:11:41;839:12537:47;36311:11:41;;839:12537:47;;;;-1:-1:-1;839:12537:47;;;;;;805:35:0;3652:19;;;:42;;;839:12537:47;958:34:0;;;839:12537:47;;36567:31:41;;;;:::i;:::-;839:12537:47;;;;;;;;;36628:35:41;;;:::i;:::-;839:12537:47;;;;;805:35:0;4536:19;;;:42;;;839:12537:47;958:34:0;;;839:12537:47;;;;805:35:0;4084:19;;;:42;;;839:12537:47;958:34:0;;;839:12537:47;;;;;;;36759:15:41;;;;839:12537:47;37124:21:41;;41100:19;;;37403:26;37036:336;37403:26;:::i;:::-;839:12537:47;;;37447:23:41;;;;:44;;37036:336;41100:19;;;958:34:0;;;839:12537:47;14261:13:0;;839:12537:47;14286:25:0;;;14282:56;;37036:336:41;14349:17:0;14355:11;14599:3;14349:17;;;14345:48;;37036:336:41;14410:7:0;14404:13;;;14400:44;;37036:336:41;839:12537:47;14455:11:0;;;14451:40;;37036:336:41;14508:4:0;14502:10;;;14498:39;;37036:336:41;839:12537:47;14548:9:0;;;14544:38;;37036:336:41;14593:9:0;;14589:23;;37036:336:41;839:12537:47;;;;;;14737:3:0;839:12537:47;;14760:31:0;14773:18;14755:176;14793:7;839:12537:47;14793:7:0;;;;839:12537:47;15317:34:0;839:12537:47;;;;;;;;805:35:0;839:12537:47;;;9170:14:0;958:34;;37600:16:41;839:12537:47;;;;;37600:16:41;:::i;:::-;839:12537:47;;;37634:13:41;;41100:19;;;7136:6:0;;958:34;;839:12537:47;;805:35:0;7206:19;;;:42;;;14755:176;958:34;;;839:12537:47;;37785:17:41;839:12537:47;37785:17:41;;41100:19;;;505:62:45;;;;;:::i;:::-;839:12537:47;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7988:3;839:12537;;7968:18;;;;;8188:28;;;;;839:12537;8188:28;;:::i;:::-;839:12537;;7953:13;;7968:18;;;;;;505:62:45;;:::i;:::-;4850:13:47;;:44;;;;;7948:279;839:12537;;;;;;;;4943:40;839:12537;;;;5050:19;;;839:12537;;5129:22;;839:12537;;;;;;5386:37;839:12537;;5578:30;;;7948:279;5578:78;;;5611:22;5578:78;;;;839:12537;;;;;;;;;;;;5673:342;;;839:12537;5673:342;;839:12537;5673:342;;839:12537;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5890:16;839:12537;;;;;;;;5952:7;;839:12537;;;;;5973:9;;839:12537;;;;;5996:9;;839:12537;;;;;5673:342;839:12537;;5673:342;;;;;;;839:12537;5673:342;;;839:12537;6026:20;;;;:::i;:::-;839:12537;;;;;;;;;;;;;;;;;;;;;;6181:3;839:12537;;6161:18;;;;;839:12537;6215:10;;;;:::i;:::-;839:12537;;;;;;6307:15;839:12537;;;;;;;;6306:23;6302:131;;6181:3;839:12537;;;;6496:13;839:12537;;6496:31;839:12537;;;;6496:31;:::i;:::-;839:12537;6146:13;;6302:131;6349:10;839:12537;;;;;;;;;;;;;;;;6349:10;839:12537;;:::i;:::-;;;;;;6307:15;839:12537;;;;;;;;;;;;;6302:131;;;;6161:18;;;;;6553:43;839:12537;6161:18;;839:12537;;6161:18;839:12537;;;;;;;;;;;;;:::i;:::-;6553:43;;;839:12537;6706:3;839:12537;;6686:18;;;;;6729;;;;:::i;:::-;839:12537;6725:270;;6706:3;839:12537;;6671:13;;6725:270;839:12537;6778:10;;;;:::i;:::-;839:12537;;6829:18;;;;:::i;:::-;839:12537;;10404:1148:24;;10365:28;839:12537:47;10404:1148:24;;839:12537:47;10404:1148:24;;839:12537:47;10404:1148:24;839:12537:47;10404:1148:24;839:12537:47;;;10404:1148:24;;;;;;839:12537:47;;10404:1148:24;;;;;;;6725:270:47;839:12537;10404:1148:24;839:12537:47;;10404:1148:24;1766:48;1762:126;;6881:10:47;839:12537;;;6881:10;;;;:::i;:::-;839:12537;;;;6874:43;;;;839:12537;6874:43;;;839:12537;6874:43;;839:12537;6874:43;;;;;;;839:12537;6874:43;;;6725:270;6921:18;;;;;:::i;:::-;839:12537;6874:65;6725:270;839:12537;;;;;;;;;;;;;;;;;;;;;;;;;;;;6874:43;;;839:12537;6874:43;;;;;;;;;839:12537;6874:43;;;:::i;:::-;;;839:12537;;;;;6874:43;;;;;;-1:-1:-1;6874:43:47;;10404:1148:24;;839:12537:47;10404:1148:24;;;;;;;;;;;;;;;;6686:18:47;839:12537;;;7109:43;;839:12537;7109:43;;839:12537;;;;;;;;;6686:18;839:12537;;;;;6686:18;7109:43;;;;;;;839:12537;7109:43;;;-1:-1:-1;839:12537:47;;;;;;;;;;;;;;;;;;5673:342;;;;839:12537;5673:342;;839:12537;5673:342;;;;;;839:12537;5673:342;;;:::i;:::-;;;839:12537;;;;;;;;;;;;5673:342;;;;;;;-1:-1:-1;5673:342:47;;839:12537;;;;;;;-1:-1:-1;839:12537:47;;;;;;;;;;;;;5578:78;5636:20;5578:78;;;;;:30;839:12537;14599:3:0;839:12537:47;;5589:19;5578:30;;4850:44;4867:15;;;:27;;4850:44;;;41100:19:41;839:12537:47;;;41100:19:41;;;839:12537:47;;41100:19:41;;;;839:12537:47;41100:19:41;;839:12537:47;41100:19:41;839:12537:47;;;41100:19:41;;7206:42:0;7229:19;958:34;7229:19;;;7206:42;;41100:19:41;839:12537:47;;;41100:19:41;;;839:12537:47;;41100:19:41;;;;839:12537:47;41100:19:41;;839:12537:47;41100:19:41;839:12537:47;;;41100:19:41;;14802:9:0;839:12537:47;;;;;;;;14737:3:0;839:12537:47;;;;;;14802:9:0;839:12537:47;;14760:31:0;;;;14589:23;839:12537:47;;;14589:23:0;;;14544:38;839:12537:47;;;;;;14544:38:0;;14498:39;839:12537:47;;;;;;14498:39:0;;14451:40;14477:1;839:12537:47;;;;;14451:40:0;;14400:44;14428:2;839:12537:47;;;;;14400:44:0;;14345:48;839:12537:47;;;;;;14345:48:0;;14282:56;-1:-1:-1;839:12537:47;;-1:-1:-1;839:12537:47;;;14282:56:0;;41100:19:41;839:12537:47;;;41100:19:41;;;839:12537:47;;41100:19:41;;;;839:12537:47;41100:19:41;;839:12537:47;41100:19:41;839:12537:47;;;41100:19:41;;37447:44;37474:17;839:12537:47;37474:17:41;;37447:44;;41100:19;839:12537:47;;;41100:19:41;;;839:12537:47;;41100:19:41;;;;839:12537:47;41100:19:41;;839:12537:47;41100:19:41;839:12537:47;;;41100:19:41;;37036:336;839:12537:47;37312:21:41;;41100:19;;;37403:26;37036:336;37403:26;:::i;41100:19::-;839:12537:47;;;41100:19:41;;;839:12537:47;;41100:19:41;;;;839:12537:47;41100:19:41;;839:12537:47;41100:19:41;839:12537:47;;;41100:19:41;;4084:42:0;4107:19;958:34;4107:19;;;4084:42;;4536;4559:19;958:34;4559:19;;;4536:42;;839:12537:47;;;;;;;;;;3652:42:0;3675:19;958:34;3675:19;;;3652:42;;839:12537:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;963:15;839:12537;;;963:15;;;839:12537;;963:15;;;;839:12537;963:15;;839:12537;963:15;839:12537;;;963:15;;839:12537;963:15;;;;;839:12537;;;963:15;;;839:12537;;963:15;;;;839:12537;963:15;;839:12537;963:15;839:12537;;;963:15;;839:12537;963:15;;;;839:12537;;;;;;;;;;;;11519:10;839:12537;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;839:12537:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;505:62:45;;:::i;:::-;839:12537:47;;;;;;;;;;1104:49:45;;;;839:12537:47;;;;;;;;;;;;;;;:::i;:::-;505:62:45;;:::i;:::-;839:12537:47;;1929:31;839:12537;;;1929:31;839:12537;;;;;;;;;;;;;;;;;;1688:16;839:12537;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;505:62:45;;:::i;:::-;4850:13:47;;:44;;;;;839:12537;;;;;;;;;4943:40;839:12537;;;;5050:19;;;839:12537;;;;5129:22;;;839:12537;;;;5254:18;839:12537;5254:18;;839:12537;;;;;;;5386:37;839:12537;;5578:30;;;839:12537;5578:78;;;5611:22;5578:78;;839:12537;;;;;;;;;;;5673:342;;;839:12537;5673:342;;839:12537;5673:342;;839:12537;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5890:16;839:12537;;;;;;;;5952:7;;839:12537;;;;;5973:9;;839:12537;;;;;5996:9;;839:12537;;;;;5673:342;839:12537;;5673:342;;;;;;;839:12537;5673:342;;;839:12537;6026:20;;;;:::i;:::-;839:12537;;;;;;;;;;;;;;;;;;;;;;6181:3;839:12537;;6161:18;;;;;839:12537;6215:10;;;;:::i;:::-;839:12537;;;;;;6307:15;839:12537;;;;;;;;6306:23;6302:131;;6181:3;839:12537;;;;6496:13;839:12537;;6496:31;839:12537;;;;6496:31;:::i;:::-;839:12537;6146:13;;6302:131;6349:10;839:12537;;;;;;;;;;;;;;;;6349:10;839:12537;;:::i;:::-;;;;;;6307:15;839:12537;;;;;;;;;;;;;6302:131;;;;6161:18;;;;;6553:43;839:12537;6161:18;;839:12537;;6161:18;839:12537;;;;;;;;;;;;;:::i;:::-;6553:43;;;839:12537;6706:3;839:12537;;6686:18;;;;;6729;;;;:::i;:::-;839:12537;6725:270;;6706:3;839:12537;;6671:13;;6725:270;839:12537;6778:10;;;;:::i;:::-;839:12537;;6829:18;;;;:::i;:::-;839:12537;;10404:1148:24;;10365:28;839:12537:47;10404:1148:24;;839:12537:47;10404:1148:24;;839:12537:47;10404:1148:24;839:12537:47;10404:1148:24;839:12537:47;;;10404:1148:24;;;;;;839:12537:47;;10404:1148:24;;;;;;;6725:270:47;839:12537;10404:1148:24;839:12537:47;;10404:1148:24;1766:48;1762:126;;6881:10:47;839:12537;;;6881:10;;;;:::i;:::-;839:12537;;;;6874:43;;;;839:12537;6874:43;;;839:12537;6874:43;;839:12537;6874:43;;;;;;;839:12537;6874:43;;;6725:270;6921:18;;;;;:::i;:::-;839:12537;6874:65;6725:270;839:12537;;;;;;;;;;;;;;;;;;;;;;;;;;;;6874:43;;;839:12537;6874:43;;;;;;;;;839:12537;6874:43;;;:::i;:::-;;;839:12537;;;;;6874:43;;;;;;-1:-1:-1;6874:43:47;;10404:1148:24;;839:12537:47;10404:1148:24;;;;;;;;;;;;;;;;5673:342:47;;;;839:12537;5673:342;;839:12537;5673:342;;;;;;839:12537;5673:342;;;:::i;:::-;;;839:12537;;;;;;;;;;;;5673:342;;;;;;;-1:-1:-1;5673:342:47;;839:12537;;;;;;;-1:-1:-1;839:12537:47;;;;;;;;;;;;;5578:78;5636:20;5578:78;;;:30;839:12537;5607:1;839:12537;;5589:19;5578:30;;4850:44;4867:15;;;:27;;4850:44;;;839:12537;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;839:12537:47;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;6349:10;839:12537;;;;;;6349:10;-1:-1:-1;839:12537:47;;-1:-1:-1;839:12537:47;;;-1:-1:-1;839:12537:47;:::o;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;839:12537:47;;-1:-1:-1;839:12537:47;;;-1:-1:-1;839:12537:47;:::o;:::-;;;;;;;;;;;;;;;:::o;12545:829::-;839:12537;12545:829;;;;839:12537;-1:-1:-1;839:12537:47;12709:13;839:12537;;;-1:-1:-1;839:12537:47;;;;12856:20;;;;12852:77;;13038:14;;;;;;;:::i;:::-;:27;13037:61;;;13070:19;;;;:::i;:::-;13037:61;;13168:31;;;:::i;:::-;13248:13;-1:-1:-1;13263:17:47;;;;;;13355:12;;;;12545:829;:::o;13282:3::-;13323:10;839:12537;13312:22;13323:10;839:12537;13323:10;;;:::i;:::-;13312:22;;:::i;:::-;839:12537;;;;;;;13301:33;;;;:::i;:::-;839:12537;;13248:13;;13037:61;;;;;;12852:77;839:12537;;;;;;;;;;:::i;:::-;-1:-1:-1;839:12537:47;;-1:-1:-1;839:12537:47;;;12892:26;:::o;839:12537::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;839:12537:47;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;839:12537:47;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;6026:9;839:12537;;;;;;;;;;;;;;6026:9;839:12537;6026:9;839:12537;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;11583:758::-;;;11716:10;839:12537;11812:21;;;;11808:75;;11994:14;;;;;;;:::i;:::-;:28;11993:63;;;12027:20;;;;:::i;:::-;12127:28;;;:::i;:::-;12204:13;-1:-1:-1;12219:17:47;;;;;;-1:-1:-1;12321:13:47;;-1:-1:-1;;11583:758:47:o;12238:3::-;12288:10;839:12537;12277:22;12288:10;839:12537;12288:10;;;:::i;:::-;12277:22;:::i;:::-;839:12537;;;11716:10;839:12537;;;12257:43;;;;:::i;:::-;839:12537;;12204:13;;11993:63;;;;;11808:75;839:12537;;;;;;;;;;:::i;10663:745::-;;10796:9;839:12537;10891:20;;;;10887:77;;11073:14;;;;;;;:::i;:::-;:27;11072:61;;;11105:19;;;;:::i;:::-;11072:61;;11203:31;;;:::i;:::-;11283:13;-1:-1:-1;839:12537:47;10796:9;839:12537;11278:101;11298:17;;;;;;11389:12;;;;10663:745;:::o;11317:3::-;11357:10;;;;:::i;:::-;11347:21;839:12537;;;;;;;;;10796:9;-1:-1:-1;839:12537:47;;-1:-1:-1;839:12537:47;;;;11336:32;;;;:::i;:::-;839:12537;;11283:13;;11072:61;;;;;;10887:77;839:12537;;;;;;;;;:::i;640:170:45:-;839:12537:47;699:6:45;839:12537:47;;735:10:26;699:22:45;695:109;;640:170::o;695:109::-;744:49;699:6;744:49;735:10:26;744:49:45;839:12537:47;;699:6:45;744:49;1958:169:0;2057:18;2052:23;;958:34;;2112:2;839:12537:47;;;1958:169:0;:::o;7038:252::-;;839:12537:47;;7136:6:0;;;958:34;;7182:2;839:12537:47;;;;805:35:0;7206:19;;;:42;;;7038:252;958:34;;;839:12537:47;;7038:252:0;:::o;7206:42::-;7229:19;958:34;7229:19;;;7206:42;","linkReferences":{},"immutableReferences":{"47689":[{"start":1313,"length":32},{"start":3933,"length":32},{"start":5961,"length":32},{"start":9859,"length":32}],"47702":[{"start":1272,"length":32},{"start":4124,"length":32},{"start":5920,"length":32},{"start":9818,"length":32}],"47714":[{"start":1186,"length":32},{"start":5834,"length":32},{"start":8958,"length":32},{"start":9732,"length":32}],"47740":[{"start":1231,"length":32},{"start":4234,"length":32},{"start":5879,"length":32},{"start":9777,"length":32}],"47752":[{"start":2683,"length":32},{"start":7092,"length":32},{"start":10870,"length":32}],"47755":[{"start":817,"length":32},{"start":5465,"length":32},{"start":9367,"length":32}]}},"methodIdentifiers":{"getAllPools(uint256,uint256)":"a7753f09","getAllTokens(uint256,uint256)":"9a043832","getPoolSupported(address)":"f3176725","getPoolsByToken(address,uint256,uint256)":"14c870c0","mintImpl()":"f0d1ae4f","newPool(string,string,address[],int128,int128,uint256,uint256,bool,address,address,uint256[],uint256,uint256)":"a4689b24","newPool(string,string,address[],int128,uint256,uint256,bool,address,address,uint256[],uint256,uint256)":"f63772fc","newPool(string,string,address[],int128,uint256[],uint256,bool,address,address,uint256[],uint256,uint256)":"60cf7d4a","owner()":"8da5cb5b","poolCount()":"f525cb68","poolsByTokenCount(address)":"f70a3a17","protocolFeeAddress()":"cce516b7","protocolFeePpm()":"6b4082d1","renounceOwnership()":"715018a6","setProtocolFeeAddress(address)":"6b7b9112","swapImpl()":"c405e442","tokenCount()":"9f181b5e","transferOwnership(address)":"f2fde38b","wrapper()":"ac210cc7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"},{\"internalType\":\"contract NativeWrapper\",\"name\":\"wrapper_\",\"type\":\"address\"},{\"internalType\":\"contract PartyPoolSwapImpl\",\"name\":\"swapImpl_\",\"type\":\"address\"},{\"internalType\":\"contract PartyPoolMintImpl\",\"name\":\"mintImpl_\",\"type\":\"address\"},{\"internalType\":\"contract IPartyPoolDeployer\",\"name\":\"deployer_\",\"type\":\"address\"},{\"internalType\":\"contract IPartyPoolDeployer\",\"name\":\"balancedPairDeployer_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"protocolFeePpm_\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"protocolFeeAddress_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"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\":true,\"internalType\":\"contract IPartyPool\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"PartyStarted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"getAllPools\",\"outputs\":[{\"internalType\":\"contract IPartyPool[]\",\"name\":\"pools\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"getAllTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"getPoolsByToken\",\"outputs\":[{\"internalType\":\"contract IPartyPool[]\",\"name\":\"pools\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintImpl\",\"outputs\":[{\"internalType\":\"contract PartyPoolMintImpl\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens_\",\"type\":\"address[]\"},{\"internalType\":\"int128\",\"name\":\"kappa_\",\"type\":\"int128\"},{\"internalType\":\"uint256[]\",\"name\":\"swapFeesPpm_\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"flashFeePpm_\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"stable_\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"initialDeposits\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"initialLpAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"newPool\",\"outputs\":[{\"internalType\":\"contract IPartyPool\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens_\",\"type\":\"address[]\"},{\"internalType\":\"int128\",\"name\":\"tradeFrac_\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"targetSlippage_\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePpm_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flashFeePpm_\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"stable_\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"initialDeposits\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"initialLpAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"newPool\",\"outputs\":[{\"internalType\":\"contract IPartyPool\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens_\",\"type\":\"address[]\"},{\"internalType\":\"int128\",\"name\":\"kappa_\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePpm_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flashFeePpm_\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"stable_\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"initialDeposits\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"initialLpAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"newPool\",\"outputs\":[{\"internalType\":\"contract IPartyPool\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"poolsByTokenCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolFeeAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolFeePpm\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeAddress\",\"type\":\"address\"}],\"name\":\"setProtocolFeeAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"swapImpl\",\"outputs\":[{\"internalType\":\"contract PartyPoolSwapImpl\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenCount\",\"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\":\"wrapper\",\"outputs\":[{\"internalType\":\"contract NativeWrapper\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"mintImpl_\":\"address of the Mint implementation contract to be used by all pools\",\"owner_\":\"Initial administrator who is allowed to create new pools and kill() old ones\",\"protocolFeeAddress_\":\"recipient address for protocol fees for pools created by this planner (may be address(0))\",\"protocolFeePpm_\":\"protocol fee share (ppm) to be used for pools created by this planner\",\"swapImpl_\":\"address of the Swap implementation contract to be used by all pools\",\"wrapper_\":\"The WETH9 implementation address used for this chain\"}},\"getAllPools(uint256,uint256)\":{\"params\":{\"limit\":\"Maximum number of items to return\",\"offset\":\"Starting index for pagination\"},\"returns\":{\"pools\":\"Array of pool addresses for the requested page\"}},\"getAllTokens(uint256,uint256)\":{\"params\":{\"limit\":\"Maximum number of items to return\",\"offset\":\"Starting index for pagination\"},\"returns\":{\"tokens\":\"Array of token addresses for the requested page\"}},\"getPoolSupported(address)\":{\"params\":{\"pool\":\"The pool address to check\"},\"returns\":{\"_0\":\"bool True if the pool is supported, false otherwise\"}},\"getPoolsByToken(address,uint256,uint256)\":{\"params\":{\"limit\":\"Maximum number of items to return\",\"offset\":\"Starting index for pagination\",\"token\":\"The token address to query pools for\"},\"returns\":{\"pools\":\"Array of pool addresses containing the specified token\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"poolCount()\":{\"returns\":{\"_0\":\"The total count of pools\"}},\"poolsByTokenCount(address)\":{\"params\":{\"token\":\"The token address to query\"},\"returns\":{\"_0\":\"The total count of pools containing the token\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"tokenCount()\":{\"returns\":{\"_0\":\"The total count of unique tokens\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"PartyPlanner\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAllPools(uint256,uint256)\":{\"notice\":\"Retrieves a page of pool addresses\"},\"getAllTokens(uint256,uint256)\":{\"notice\":\"Retrieves a page of token addresses\"},\"getPoolSupported(address)\":{\"notice\":\"Checks if a pool is supported\"},\"getPoolsByToken(address,uint256,uint256)\":{\"notice\":\"Retrieves a page of pool addresses for a specific token\"},\"mintImpl()\":{\"notice\":\"Address of the mint implementation contract used by all pools created by this factory\"},\"newPool(string,string,address[],int128,uint256,uint256,bool,address,address,uint256[],uint256,uint256)\":{\"notice\":\"Convenience overload: legacy single-fee signature \\u2014 repeat the scalar for every asset and delegate.\"},\"newPool(string,string,address[],int128,uint256[],uint256,bool,address,address,uint256[],uint256,uint256)\":{\"notice\":\"Main newPool variant: accepts kappa directly (preferred) and a per-asset fee vector.\"},\"poolCount()\":{\"notice\":\"Returns the total number of pools created\"},\"poolsByTokenCount(address)\":{\"notice\":\"Returns the total number of pools for a specific token\"},\"protocolFeeAddress()\":{\"notice\":\"Address to receive protocol fees for pools created by this planner (may be address(0))\"},\"swapImpl()\":{\"notice\":\"Address of the swap implementation contract used by all pools created by this factory\"},\"tokenCount()\":{\"notice\":\"Returns the total number of unique tokens\"}},\"notice\":\"Factory contract for creating and tracking PartyPool instances\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/PartyPlanner.sol\":\"PartyPlanner\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/abdk-libraries-solidity/ABDKMath64x64.sol\":{\"keccak256\":\"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97\",\"license\":\"BSD-4-Clause\",\"urls\":[\"bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7\",\"dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol\":{\"keccak256\":\"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd\",\"dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd\",\"dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168\",\"dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd274645d15bb7e4fcb9c833e401b2c5837404f90057f11a49118f25e0af7c76f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d38e0b997bb7aebae26d190b03d0991feb0d204c45f945e60014e1ca9175de69\",\"dweb:/ipfs/QmWzsUHHAZcjMyF8uMDEtNpMTkYZdQrfvdKPobXvwVHKo6\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x50e81a8b089e3f382b6c915aa0166773de64ea4756e8f9479d9943a5f956ddf5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bfeb96a150537222e2191c03887127499a4f21dfb5f9a7211da4d81749b52848\",\"dweb:/ipfs/QmYR75ECbsBuxSiXmGvGfNKJRLoK5MdLUZL1bd8SixzxL4\"]},\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161\",\"dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"src/ERC20External.sol\":{\"keccak256\":\"0x421f511bb3aa7258fb7121aa66b9a2e8e0b7a07b7e51c800c714f7acbfd599d3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b3fde56a83eae12a31eb4875d8952a99d18591fe0f18b6a12392c8f48f76af46\",\"dweb:/ipfs/QmeApbmGv6Z2b1JynvBxaAK1j1eWhGYpeNEP56V8XXvpcz\"]},\"src/ERC20Internal.sol\":{\"keccak256\":\"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f\",\"dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk\"]},\"src/Funding.sol\":{\"keccak256\":\"0x1d505b256d221cec151157083f8441193bbf7859d13873353429a7ca5342381d\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6871ab97d81ddffc56845142601408e974b7b0c619a2107aacd6b17eafb3330c\",\"dweb:/ipfs/QmU5EKjGN2vDPgXhSsr4qvesq2T5eR5Ybeg25bHrcJyP2y\"]},\"src/IOwnable.sol\":{\"keccak256\":\"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1\",\"dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9\"]},\"src/IPartyPlanner.sol\":{\"keccak256\":\"0x8f27d564f2c1fde267aa1fec970402e2da5b731ac97f4d5fe24f6ebab1fd03ff\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://399d21923fdbb6c3012f086c6de62bd4ea6648cf71a46e59beaad9a74d854025\",\"dweb:/ipfs/QmcS4qRFjUJ4JyeTnjDSnTzprSnrd8TTxF2gfZf2JBs1c6\"]},\"src/IPartyPool.sol\":{\"keccak256\":\"0x74b9531bdf2200f256cac6c2cd54c0efad7c1bdfbe694ee910df75448ffe93f4\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://aadd161d7e197b48e6be4198b0f4f81a10016b9904d024e0a361bf2d7f941475\",\"dweb:/ipfs/QmYuGyPZCigmt8va11oAHXPTpHFyF3d7ARDNacyr2jsDfa\"]},\"src/LMSRStabilized.sol\":{\"keccak256\":\"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3\",\"dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB\"]},\"src/LMSRStabilizedBalancedPair.sol\":{\"keccak256\":\"0x782f3baf92f74152c0b93b95199abbb3a36c75c921454260c8b0237f91d7c59d\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://04d463c4fdcb6c8e2ebf9aed649ff21cca759ba73a4c93659e30c7df25e26c81\",\"dweb:/ipfs/QmUxmWytiw5VYJRUrFbSGm1oWmDPQ4q23pnkmK1q9P4apN\"]},\"src/NativeWrapper.sol\":{\"keccak256\":\"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238\",\"dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB\"]},\"src/OwnableExternal.sol\":{\"keccak256\":\"0x0a0199368ad20a31e7169b3e56449bf022c9d680e0d487c118608a7f14cb7efb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3348a063649e01acf9c6aa6b7ce2ecf62ace8c6f1467477de7d605996f08ec64\",\"dweb:/ipfs/QmSoxb35FFsNCgXgWn91CupvjpGmyM31wcfxAVpVFFPecX\"]},\"src/OwnableInternal.sol\":{\"keccak256\":\"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca\",\"dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE\"]},\"src/PartyPlanner.sol\":{\"keccak256\":\"0xdd92d3d269279e372680583a5d6e1a7342715c9b6708777f17635c4e2391620f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://cd9ef0482a8efd86a49eef567defe412e72e522d85de0d8ded89eac6b8f6463a\",\"dweb:/ipfs/QmVpXgadYC3NbQ4DfWFg4yRKZEvJ42bzFvC2MLu6JAjDoS\"]},\"src/PartyPool.sol\":{\"keccak256\":\"0xaf921e5a5c32ee53fc1991d20fe030ec0a9572d0a8d112e717476ee4af0b8ab4\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b4bc13e889ec6fb214ac3538203328abede9e316bf617a7f7593b3b0c9ea40f0\",\"dweb:/ipfs/QmWx12PuyFqpy9MyxqJkRvTGkzYAYHajCYps3htgwe3YrX\"]},\"src/PartyPoolBalancedPair.sol\":{\"keccak256\":\"0x7d36ae211709da83ecafcc70f31e5fcdc1bc299243eedceebf17f26339757d7b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://91762575c367c9b1d50a633fb46ccf429a28bbaf70f76b524749ad32dc716d7a\",\"dweb:/ipfs/QmVLxjR3h2XJukjXFx56b4m8SPg6oupxqkzY5EKCK7GFHn\"]},\"src/PartyPoolBase.sol\":{\"keccak256\":\"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5\",\"dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5\"]},\"src/PartyPoolDeployer.sol\":{\"keccak256\":\"0xdf2a6a8602eba3aef625c798a0ec6525feb7520c2fd6933c30dd76fe3c4e2618\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9aa94963e0d34feddf63b3ae034874557229740be1ef80f49e87bd05694c9b50\",\"dweb:/ipfs/QmYQ6mH1mEJCJ9XNGdT3saRU3q36GZ94WuyRsn9LRWXtbM\"]},\"src/PartyPoolHelpers.sol\":{\"keccak256\":\"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5\",\"dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP\"]},\"src/PartyPoolMintImpl.sol\":{\"keccak256\":\"0xe9d9927cecd46a1f836b2c43e9d6184642b9e695c7462e5fb7c671a38aab7398\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8d821911d7982fc302929198539b27f72be100b91450c98d2e0081519f776499\",\"dweb:/ipfs/QmRChx1DPD1gKXwfD1m6aQ7pgh1aX6CvYLNX41ufdJteaJ\"]},\"src/PartyPoolSwapImpl.sol\":{\"keccak256\":\"0x71ecbd6d0fb106031baed7e4c21694ef24f0112af7d975325b98b1b0463ba5b2\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://64f8f8bae2f89ca495b9edacd012363b55e78a198f100650beb2b1238e8ef11f\",\"dweb:/ipfs/QmVfihiw9TqncuEfZKx7c6WEHiGFfRQyhtfdTGzfN7emNY\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"contract NativeWrapper","name":"wrapper_","type":"address"},{"internalType":"contract PartyPoolSwapImpl","name":"swapImpl_","type":"address"},{"internalType":"contract PartyPoolMintImpl","name":"mintImpl_","type":"address"},{"internalType":"contract IPartyPoolDeployer","name":"deployer_","type":"address"},{"internalType":"contract IPartyPoolDeployer","name":"balancedPairDeployer_","type":"address"},{"internalType":"uint256","name":"protocolFeePpm_","type":"uint256"},{"internalType":"address","name":"protocolFeeAddress_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"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":"contract IPartyPool","name":"pool","type":"address","indexed":true},{"internalType":"string","name":"name","type":"string","indexed":false},{"internalType":"string","name":"symbol","type":"string","indexed":false},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]","indexed":false}],"type":"event","name":"PartyStarted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"view","type":"function","name":"getAllPools","outputs":[{"internalType":"contract IPartyPool[]","name":"pools","type":"address[]"}]},{"inputs":[{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"view","type":"function","name":"getAllTokens","outputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"stateMutability":"view","type":"function","name":"getPoolSupported","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPoolsByToken","outputs":[{"internalType":"contract IPartyPool[]","name":"pools","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mintImpl","outputs":[{"internalType":"contract PartyPoolMintImpl","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"contract IERC20[]","name":"tokens_","type":"address[]"},{"internalType":"int128","name":"kappa_","type":"int128"},{"internalType":"uint256[]","name":"swapFeesPpm_","type":"uint256[]"},{"internalType":"uint256","name":"flashFeePpm_","type":"uint256"},{"internalType":"bool","name":"stable_","type":"bool"},{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256[]","name":"initialDeposits","type":"uint256[]"},{"internalType":"uint256","name":"initialLpAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"newPool","outputs":[{"internalType":"contract IPartyPool","name":"pool","type":"address"},{"internalType":"uint256","name":"lpAmount","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"contract IERC20[]","name":"tokens_","type":"address[]"},{"internalType":"int128","name":"tradeFrac_","type":"int128"},{"internalType":"int128","name":"targetSlippage_","type":"int128"},{"internalType":"uint256","name":"swapFeePpm_","type":"uint256"},{"internalType":"uint256","name":"flashFeePpm_","type":"uint256"},{"internalType":"bool","name":"stable_","type":"bool"},{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256[]","name":"initialDeposits","type":"uint256[]"},{"internalType":"uint256","name":"initialLpAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"newPool","outputs":[{"internalType":"contract IPartyPool","name":"pool","type":"address"},{"internalType":"uint256","name":"lpAmount","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"contract IERC20[]","name":"tokens_","type":"address[]"},{"internalType":"int128","name":"kappa_","type":"int128"},{"internalType":"uint256","name":"swapFeePpm_","type":"uint256"},{"internalType":"uint256","name":"flashFeePpm_","type":"uint256"},{"internalType":"bool","name":"stable_","type":"bool"},{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256[]","name":"initialDeposits","type":"uint256[]"},{"internalType":"uint256","name":"initialLpAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"newPool","outputs":[{"internalType":"contract IPartyPool","name":"pool","type":"address"},{"internalType":"uint256","name":"lpAmount","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"poolCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"poolsByTokenCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"protocolFeeAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"protocolFeePpm","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"feeAddress","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setProtocolFeeAddress"},{"inputs":[],"stateMutability":"view","type":"function","name":"swapImpl","outputs":[{"internalType":"contract PartyPoolSwapImpl","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"tokenCount","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":"wrapper","outputs":[{"internalType":"contract NativeWrapper","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"constructor":{"params":{"mintImpl_":"address of the Mint implementation contract to be used by all pools","owner_":"Initial administrator who is allowed to create new pools and kill() old ones","protocolFeeAddress_":"recipient address for protocol fees for pools created by this planner (may be address(0))","protocolFeePpm_":"protocol fee share (ppm) to be used for pools created by this planner","swapImpl_":"address of the Swap implementation contract to be used by all pools","wrapper_":"The WETH9 implementation address used for this chain"}},"getAllPools(uint256,uint256)":{"params":{"limit":"Maximum number of items to return","offset":"Starting index for pagination"},"returns":{"pools":"Array of pool addresses for the requested page"}},"getAllTokens(uint256,uint256)":{"params":{"limit":"Maximum number of items to return","offset":"Starting index for pagination"},"returns":{"tokens":"Array of token addresses for the requested page"}},"getPoolSupported(address)":{"params":{"pool":"The pool address to check"},"returns":{"_0":"bool True if the pool is supported, false otherwise"}},"getPoolsByToken(address,uint256,uint256)":{"params":{"limit":"Maximum number of items to return","offset":"Starting index for pagination","token":"The token address to query pools for"},"returns":{"pools":"Array of pool addresses containing the specified token"}},"owner()":{"details":"Returns the address of the current owner."},"poolCount()":{"returns":{"_0":"The total count of pools"}},"poolsByTokenCount(address)":{"params":{"token":"The token address to query"},"returns":{"_0":"The total count of pools containing the token"}},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"tokenCount()":{"returns":{"_0":"The total count of unique tokens"}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{"getAllPools(uint256,uint256)":{"notice":"Retrieves a page of pool addresses"},"getAllTokens(uint256,uint256)":{"notice":"Retrieves a page of token addresses"},"getPoolSupported(address)":{"notice":"Checks if a pool is supported"},"getPoolsByToken(address,uint256,uint256)":{"notice":"Retrieves a page of pool addresses for a specific token"},"mintImpl()":{"notice":"Address of the mint implementation contract used by all pools created by this factory"},"newPool(string,string,address[],int128,uint256,uint256,bool,address,address,uint256[],uint256,uint256)":{"notice":"Convenience overload: legacy single-fee signature — repeat the scalar for every asset and delegate."},"newPool(string,string,address[],int128,uint256[],uint256,bool,address,address,uint256[],uint256,uint256)":{"notice":"Main newPool variant: accepts kappa directly (preferred) and a per-asset fee vector."},"poolCount()":{"notice":"Returns the total number of pools created"},"poolsByTokenCount(address)":{"notice":"Returns the total number of pools for a specific token"},"protocolFeeAddress()":{"notice":"Address to receive protocol fees for pools created by this planner (may be address(0))"},"swapImpl()":{"notice":"Address of the swap implementation contract used by all pools created by this factory"},"tokenCount()":{"notice":"Returns the total number of unique tokens"}},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/PartyPlanner.sol":"PartyPlanner"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/abdk-libraries-solidity/ABDKMath64x64.sol":{"keccak256":"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97","urls":["bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7","dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN"],"license":"BSD-4-Clause"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d","urls":["bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100","dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc","urls":["bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037","dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44","urls":["bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d","dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol":{"keccak256":"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e","urls":["bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd","dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86","urls":["bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd","dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9","urls":["bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168","dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd274645d15bb7e4fcb9c833e401b2c5837404f90057f11a49118f25e0af7c76f","urls":["bzz-raw://d38e0b997bb7aebae26d190b03d0991feb0d204c45f945e60014e1ca9175de69","dweb:/ipfs/QmWzsUHHAZcjMyF8uMDEtNpMTkYZdQrfvdKPobXvwVHKo6"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol":{"keccak256":"0x50e81a8b089e3f382b6c915aa0166773de64ea4756e8f9479d9943a5f956ddf5","urls":["bzz-raw://bfeb96a150537222e2191c03887127499a4f21dfb5f9a7211da4d81749b52848","dweb:/ipfs/QmYR75ECbsBuxSiXmGvGfNKJRLoK5MdLUZL1bd8SixzxL4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol":{"keccak256":"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0","urls":["bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161","dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"},"src/ERC20External.sol":{"keccak256":"0x421f511bb3aa7258fb7121aa66b9a2e8e0b7a07b7e51c800c714f7acbfd599d3","urls":["bzz-raw://b3fde56a83eae12a31eb4875d8952a99d18591fe0f18b6a12392c8f48f76af46","dweb:/ipfs/QmeApbmGv6Z2b1JynvBxaAK1j1eWhGYpeNEP56V8XXvpcz"],"license":"UNLICENSED"},"src/ERC20Internal.sol":{"keccak256":"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36","urls":["bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f","dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk"],"license":"UNLICENSED"},"src/Funding.sol":{"keccak256":"0x1d505b256d221cec151157083f8441193bbf7859d13873353429a7ca5342381d","urls":["bzz-raw://6871ab97d81ddffc56845142601408e974b7b0c619a2107aacd6b17eafb3330c","dweb:/ipfs/QmU5EKjGN2vDPgXhSsr4qvesq2T5eR5Ybeg25bHrcJyP2y"],"license":"UNLICENSED"},"src/IOwnable.sol":{"keccak256":"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990","urls":["bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1","dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9"],"license":"MIT"},"src/IPartyPlanner.sol":{"keccak256":"0x8f27d564f2c1fde267aa1fec970402e2da5b731ac97f4d5fe24f6ebab1fd03ff","urls":["bzz-raw://399d21923fdbb6c3012f086c6de62bd4ea6648cf71a46e59beaad9a74d854025","dweb:/ipfs/QmcS4qRFjUJ4JyeTnjDSnTzprSnrd8TTxF2gfZf2JBs1c6"],"license":"UNLICENSED"},"src/IPartyPool.sol":{"keccak256":"0x74b9531bdf2200f256cac6c2cd54c0efad7c1bdfbe694ee910df75448ffe93f4","urls":["bzz-raw://aadd161d7e197b48e6be4198b0f4f81a10016b9904d024e0a361bf2d7f941475","dweb:/ipfs/QmYuGyPZCigmt8va11oAHXPTpHFyF3d7ARDNacyr2jsDfa"],"license":"UNLICENSED"},"src/LMSRStabilized.sol":{"keccak256":"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b","urls":["bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3","dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB"],"license":"UNLICENSED"},"src/LMSRStabilizedBalancedPair.sol":{"keccak256":"0x782f3baf92f74152c0b93b95199abbb3a36c75c921454260c8b0237f91d7c59d","urls":["bzz-raw://04d463c4fdcb6c8e2ebf9aed649ff21cca759ba73a4c93659e30c7df25e26c81","dweb:/ipfs/QmUxmWytiw5VYJRUrFbSGm1oWmDPQ4q23pnkmK1q9P4apN"],"license":"UNLICENSED"},"src/NativeWrapper.sol":{"keccak256":"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579","urls":["bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238","dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB"],"license":"UNLICENSED"},"src/OwnableExternal.sol":{"keccak256":"0x0a0199368ad20a31e7169b3e56449bf022c9d680e0d487c118608a7f14cb7efb","urls":["bzz-raw://3348a063649e01acf9c6aa6b7ce2ecf62ace8c6f1467477de7d605996f08ec64","dweb:/ipfs/QmSoxb35FFsNCgXgWn91CupvjpGmyM31wcfxAVpVFFPecX"],"license":"MIT"},"src/OwnableInternal.sol":{"keccak256":"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581","urls":["bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca","dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE"],"license":"MIT"},"src/PartyPlanner.sol":{"keccak256":"0xdd92d3d269279e372680583a5d6e1a7342715c9b6708777f17635c4e2391620f","urls":["bzz-raw://cd9ef0482a8efd86a49eef567defe412e72e522d85de0d8ded89eac6b8f6463a","dweb:/ipfs/QmVpXgadYC3NbQ4DfWFg4yRKZEvJ42bzFvC2MLu6JAjDoS"],"license":"UNLICENSED"},"src/PartyPool.sol":{"keccak256":"0xaf921e5a5c32ee53fc1991d20fe030ec0a9572d0a8d112e717476ee4af0b8ab4","urls":["bzz-raw://b4bc13e889ec6fb214ac3538203328abede9e316bf617a7f7593b3b0c9ea40f0","dweb:/ipfs/QmWx12PuyFqpy9MyxqJkRvTGkzYAYHajCYps3htgwe3YrX"],"license":"UNLICENSED"},"src/PartyPoolBalancedPair.sol":{"keccak256":"0x7d36ae211709da83ecafcc70f31e5fcdc1bc299243eedceebf17f26339757d7b","urls":["bzz-raw://91762575c367c9b1d50a633fb46ccf429a28bbaf70f76b524749ad32dc716d7a","dweb:/ipfs/QmVLxjR3h2XJukjXFx56b4m8SPg6oupxqkzY5EKCK7GFHn"],"license":"UNLICENSED"},"src/PartyPoolBase.sol":{"keccak256":"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999","urls":["bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5","dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5"],"license":"UNLICENSED"},"src/PartyPoolDeployer.sol":{"keccak256":"0xdf2a6a8602eba3aef625c798a0ec6525feb7520c2fd6933c30dd76fe3c4e2618","urls":["bzz-raw://9aa94963e0d34feddf63b3ae034874557229740be1ef80f49e87bd05694c9b50","dweb:/ipfs/QmYQ6mH1mEJCJ9XNGdT3saRU3q36GZ94WuyRsn9LRWXtbM"],"license":"UNLICENSED"},"src/PartyPoolHelpers.sol":{"keccak256":"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c","urls":["bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5","dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP"],"license":"UNLICENSED"},"src/PartyPoolMintImpl.sol":{"keccak256":"0xe9d9927cecd46a1f836b2c43e9d6184642b9e695c7462e5fb7c671a38aab7398","urls":["bzz-raw://8d821911d7982fc302929198539b27f72be100b91450c98d2e0081519f776499","dweb:/ipfs/QmRChx1DPD1gKXwfD1m6aQ7pgh1aX6CvYLNX41ufdJteaJ"],"license":"UNLICENSED"},"src/PartyPoolSwapImpl.sol":{"keccak256":"0x71ecbd6d0fb106031baed7e4c21694ef24f0112af7d975325b98b1b0463ba5b2","urls":["bzz-raw://64f8f8bae2f89ca495b9edacd012363b55e78a198f100650beb2b1238e8ef11f","dweb:/ipfs/QmVfihiw9TqncuEfZKx7c6WEHiGFfRQyhtfdTGzfN7emNY"],"license":"UNLICENSED"}},"version":1},"id":47} \ No newline at end of file diff --git a/deployment/11155111/v1/out/PartyPool.sol/PartyPool.json b/deployment/11155111/v1/out/PartyPool.sol/PartyPool.json index 5832f45..240be49 100644 --- a/deployment/11155111/v1/out/PartyPool.sol/PartyPool.json +++ b/deployment/11155111/v1/out/PartyPool.sol/PartyPool.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"owner_","type":"address","internalType":"address"},{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"},{"name":"tokens_","type":"address[]","internalType":"contract IERC20[]"},{"name":"kappa_","type":"int128","internalType":"int128"},{"name":"fees_","type":"uint256[]","internalType":"uint256[]"},{"name":"flashFeePpm_","type":"uint256","internalType":"uint256"},{"name":"protocolFeePpm_","type":"uint256","internalType":"uint256"},{"name":"protocolFeeAddress_","type":"address","internalType":"address"},{"name":"wrapperToken_","type":"address","internalType":"contract NativeWrapper"},{"name":"swapImpl_","type":"address","internalType":"contract PartyPoolSwapImpl"},{"name":"mintImpl_","type":"address","internalType":"contract PartyPoolMintImpl"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"LMSR","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct LMSRStabilized.State","components":[{"name":"kappa","type":"int128","internalType":"int128"},{"name":"qInternal","type":"int128[]","internalType":"int128[]"}]}],"stateMutability":"view"},{"type":"function","name":"allProtocolFeesOwed","inputs":[],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"allTokens","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"contract IERC20[]"}],"stateMutability":"view"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"lpAmount","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"unwrap","type":"bool","internalType":"bool"}],"outputs":[{"name":"withdrawAmounts","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"burnSwap","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"lpAmount","type":"uint256","internalType":"uint256"},{"name":"outputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"unwrap","type":"bool","internalType":"bool"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"outFee","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"collectProtocolFees","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"denominators","inputs":[],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"fee","inputs":[{"name":"i","type":"uint256","internalType":"uint256"},{"name":"j","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"fees","inputs":[],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"flashFeePpm","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"flashLoan","inputs":[{"name":"receiver","type":"address","internalType":"contract IERC3156FlashBorrower"},{"name":"tokenAddr","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"getToken","inputs":[{"name":"i","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"initialMint","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"lpTokens","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"lpMinted","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"kappa","inputs":[],"outputs":[{"name":"","type":"int128","internalType":"int128"}],"stateMutability":"view"},{"type":"function","name":"kill","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"killed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"lpTokenAmount","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"lpMinted","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"mintImpl","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract PartyPoolMintImpl"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"numTokens","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":"protocolFeeAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"protocolFeePpm","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setProtocolFeeAddress","inputs":[{"name":"feeAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"swap","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"selector","type":"bytes4","internalType":"bytes4"},{"name":"receiver","type":"address","internalType":"address"},{"name":"inputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"outputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"maxAmountIn","type":"uint256","internalType":"uint256"},{"name":"limitPrice","type":"int128","internalType":"int128"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"unwrap","type":"bool","internalType":"bool"}],"outputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"inFee","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"swapAmounts","inputs":[{"name":"inputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"outputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"maxAmountIn","type":"uint256","internalType":"uint256"},{"name":"limitPrice","type":"int128","internalType":"int128"}],"outputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"inFee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"swapMint","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"inputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"maxAmountIn","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountInUsed","type":"uint256","internalType":"uint256"},{"name":"lpMinted","type":"uint256","internalType":"uint256"},{"name":"inFee","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"swapMintImpl","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract PartyPoolSwapImpl"}],"stateMutability":"view"},{"type":"function","name":"swapToLimit","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"inputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"outputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"limitPrice","type":"int128","internalType":"int128"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"unwrap","type":"bool","internalType":"bool"}],"outputs":[{"name":"amountInUsed","type":"uint256","internalType":"uint256"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"inFee","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"wrapperToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract NativeWrapper"}],"stateMutability":"view"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Burn","inputs":[{"name":"payer","type":"address","indexed":false,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"amounts","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"lpBurned","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BurnSwap","inputs":[{"name":"payer","type":"address","indexed":true,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"tokenOut","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lpFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Flash","inputs":[{"name":"initiator","type":"address","indexed":true,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"contract IERC3156FlashBorrower"},{"name":"token","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lpFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Killed","inputs":[],"anonymous":false},{"type":"event","name":"Mint","inputs":[{"name":"payer","type":"address","indexed":false,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"amounts","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"lpMinted","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":"ProtocolFeesCollected","inputs":[],"anonymous":false},{"type":"event","name":"Swap","inputs":[{"name":"payer","type":"address","indexed":false,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"tokenIn","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"tokenOut","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lpFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SwapMint","inputs":[{"name":"payer","type":"address","indexed":true,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"tokenIn","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lpFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x610140604052346106ee5761539d8038038061001a81610a6a565b9283398101610180828203126106ee5761003382610a8f565b60208301516001600160401b0381116106ee5782610052918501610aa3565b60408401519091906001600160401b0381116106ee5783610074918601610aa3565b60608501519094906001600160401b0381116106ee5781019284601f850112156106ee578351956100ac6100a788610af4565b610a6a565b9460208689815201906020829960051b820101908882116106ee57602001915b818310610a4a57505050608083015180600f0b81036106ee5760a08401516001600160401b0381116106ee5784019680601f890112156106ee5787516101146100a782610af4565b986020808b848152019260051b8201019283116106ee57602001905b828210610a3a5750505060c08401519760e0850151926101536101008701610a8f565b610120870151979095906001600160a01b03891689036106ee57610140880151976001600160a01b03891689036106ee576101600151986001600160a01b038a168a036106ee5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00556080526001600160a01b03168015610a27575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a38051906001600160401b0382116106335760045490600182811c92168015610a1d575b60208310146109405781601f8493116109cf575b50602090601f8311600114610969575f9261095e575b50508160011b915f199060031b1c1916176004555b8051906001600160401b0382116106335760055490600182811c92168015610954575b60208310146109405781601f849311610904575b50602090601f831160011461089e575f92610893575b50508160011b915f199060031b1c1916176005555b60018751111561084e578651906001600160401b0382116106335768010000000000000000821161063357600b5482600b55808310610814575b50600b5f5260205f205f5b8381106107f7575050505060a05285518551036107be5761033a8651610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600654836006558084106107a2575b500160065f5260205f205f5b83811061078e57505050505f5b86518110156104185761271061039c8289610b49565b5110156103e1576103ad8188610b49565b51906006548110156103cd5760019160065f528160205f20015501610386565b634e487b7160e01b5f52603260045260245ffd5b60405162461bcd60e51b815260206004820152600f60248201526e506f6f6c3a20666565203e3d20312560881b6044820152606490fd5b50866127108110156107495760c05262061a8081101561070457801580156106f2575b156106ee5760e052601080546001600160a01b0319166001600160a01b039290921691909117905561012052610100528051905f5b8281106106a7578261048181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600d5483600d5580841061068b575b5001600d5f5260205f205f5b83811061067757846104d181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600f5483600f5580841061065b575b5001600f5f5260205f205f5b8381106106475761052085610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600c5483600c55808410610617575b500190600c5f5260205f20915f5b8281106106035760405161483f9081610b5e8239608051818181611abd01528181611d0e0152818161206101526125bf015260a051818181610f130152610f7f015260c05181818161134801526116a6015260e0518181816105ac01528181610c550152818161105d0152818161136e015281816114be0152611b9701526101005181818161031701526105f70152610120518181816108050152610a720152f35b600190602083519301928186015501610561565b61062d90600c5f5284845f209182019101610b0b565b83610553565b634e487b7160e01b5f52604160045260245ffd5b600190602084519401938184015501610510565b61067190600f5f5284845f209182019101610b0b565b84610504565b6001906020845194019381840155016104c0565b6106a190600d5f5284845f209182019101610b0b565b846104b4565b60018101908181116106da576001600160a01b03906106c69084610b49565b51165f52600e6020528060405f2055610470565b634e487b7160e01b5f52601160045260245ffd5b5f80fd5b506001600160a01b038216151561043b565b60405162461bcd60e51b815260206004820152601960248201527f506f6f6c3a2070726f746f636f6c20666565203e3d20343025000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601560248201527f506f6f6c3a20666c61736820666565203e3d20312500000000000000000000006044820152606490fd5b600190602084519401938184015501610379565b6107b89060065f5284845f209182019101610b0b565b5f61036d565b60405162461bcd60e51b81526020600482015260116024820152700a0deded87440cccacae640d8cadccee8d607b1b6044820152606490fd5b82516001600160a01b031681830155602090920191600101610319565b600b5f52610848907f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9908101908401610b0b565b5f61030e565b60405162461bcd60e51b815260206004820152601360248201527f506f6f6c3a206e656564203e31206173736574000000000000000000000000006044820152606490fd5b015190505f806102bf565b60055f9081528281209350601f198516905b8181106108ec57509084600195949392106108d4575b505050811b016005556102d4565b01515f1960f88460031b161c191690555f80806108c6565b929360206001819287860151815501950193016108b0565b6109309060055f5260205f20601f850160051c81019160208610610936575b601f0160051c0190610b0b565b5f6102a9565b9091508190610923565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610295565b015190505f8061025d565b60045f9081528281209350601f198516905b8181106109b7575090846001959493921061099f575b505050811b01600455610272565b01515f1960f88460031b161c191690555f8080610991565b9293602060018192878601518155019501930161097b565b60045f52610a17907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f850160051c8101916020861061093657601f0160051c0190610b0b565b5f610247565b91607f1691610233565b631e4fbdf760e01b5f525f60045260245ffd5b8151815260209182019101610130565b82516001600160a01b03811681036106ee578152602092830192016100cc565b6040519190601f01601f191682016001600160401b0381118382101761063357604052565b51906001600160a01b03821682036106ee57565b81601f820112156106ee578051906001600160401b03821161063357610ad2601f8301601f1916602001610a6a565b92828452602083830101116106ee57815f9260208093018386015e8301015290565b6001600160401b0381116106335760051b60200190565b818110610b16575050565b5f8155600101610b0b565b90610b2e6100a783610af4565b8281528092610b3f601f1991610af4565b0190602036910137565b80518210156103cd5760209160051b01019056fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c908163017504b6146128c357508063017cf6611461283157806306fdde03146126e8578063095ea7b3146125e35780630d246214146125755780630eeee6271461191757806318160ddd146118db5780631f3a0e411461189a57806323b872dd14611703578063313ce567146116c957806331596a6a1461167057806341c0e1b5146115da578063476e44b614611519578063491e7998146113f15780635cffe9de146112115780636863f5bc146110805780636b4082d1146110275780636b7b911214610fa55780636bba3f2f14610f495780636d8d0ff314610e8e5780636ff97f1d14610d8e57806370a0823114610d2b578063715018a614610c8f57806379a68d5314610b6b5780638da5cb5b14610b1a5780638e499bcf14610ade578063939f5ea414610a965780639517606614610a2757806395d89b41146108cd5780639af1d35a1461082e578063a1af5b9a14610765578063a9059cbb14610715578063b3f1c93d14610648578063cb717f3a146104f3578063cce516b7146104a1578063d516b8c614610416578063dd62ed3e1461039d578063e4b50cb81461033b578063f0d1ae4f146102cc5763f2fde38b0361000f57346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff6102286129d2565b61023061301e565b16801561029d5773ffffffffffffffffffffffffffffffffffffffff8254827fffffffffffffffffffffffff00000000000000000000000000000000000000008216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b6024827f1e4fbdf700000000000000000000000000000000000000000000000000000000815280600452fd5b80fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff61038d600435612aa2565b90549060031b1c16604051908152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff60406103ec6129d2565b92826103f66129f5565b9416815260026020522091165f52602052602060405f2054604051908152f35b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043590602435916064359182600f0b83036102c95761049d61047985858561046f8382613143565b9260443591612d3d565b92505050604093919351938493846040919493926060820195825260208201520152565b0390f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff60105416604051908152f35b5060a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761049d61062b61061c61052f6129d2565b6105376129f5565b60443573ffffffffffffffffffffffffffffffffffffffff6105588261306a565b9281604051957f3dd3c8050000000000000000000000000000000000000000000000000000000060208801521660248601521660448401526064830152606435608483015260843560a483015260c48201527f000000000000000000000000000000000000000000000000000000000000000060e482015260e481526105e061010482612a61565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001661308a565b60208082518301019101612cd1565b604080519384526020840192909252908201529081906060820190565b5060807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f161067e6129d2565b73ffffffffffffffffffffffffffffffffffffffff61069b6129f5565b81604051937fb3f1c93d00000000000000000000000000000000000000000000000000000000602086015216602484015216604482015260443560648201526064356084820152608481526105e060a482612a61565b602081519181808201938492010103126107115760209051604051908152f35b5f80fd5b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761075a6107506129d2565b6024359033612ef9565b602060405160018152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761082a73ffffffffffffffffffffffffffffffffffffffff60105416604051907f2a54db010000000000000000000000000000000000000000000000000000000060208301526024820152602481526107ee604482612a61565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001661308a565b5080f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760405180916020600654928381520191600682527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f915b8181106108b75761049d856108ab81870382612a61565b60405191829182612951565b8254845260209093019260019283019201610894565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576040519080600554908160011c91600181168015610a1d575b6020841081146109f0578386529081156109ab575060011461094e575b61049d8461094281860382612a61565b6040519182918261298a565b600581527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0939250905b8082106109915750909150810160200161094282610932565b919260018160209254838588010152019101909291610978565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208087019190915292151560051b850190920192506109429150839050610932565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b92607f1692610915565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020610ad6602435600435613143565b604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600b54604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b5060e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610b9e6129d2565b90610ba76129f5565b906044356064356084359182600f0b809303610c8b5760c435938415158095036102c95761049d61062b61061c89898989898973ffffffffffffffffffffffffffffffffffffffff610bf98383612cec565b9581604051987f8a3d858d0000000000000000000000000000000000000000000000000000000060208b01521660248901521660448701526064860152608485015260a484015260a43560c484015260e48301526101048201527f000000000000000000000000000000000000000000000000000000000000000061012482015261012481526107ee61014482612a61565b8380fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610cc661301e565b8073ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604060209173ffffffffffffffffffffffffffffffffffffffff610d7d6129d2565b168152600183522054604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604051806020600b5491828152018091600b85527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db990855b818110610e625750505082610e0b910383612a61565b604051928392602084019060208552518091526040840192915b818110610e33575050500390f35b825173ffffffffffffffffffffffffffffffffffffffff16845285945060209384019390920191600101610e25565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610df5565b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f1610ec46129d2565b73ffffffffffffffffffffffffffffffffffffffff604051917fc5eabfb900000000000000000000000000000000000000000000000000000000602084015216602482015260243560448201527f0000000000000000000000000000000000000000000000000000000000000000600f0b6064820152606481526105e0608482612a61565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f0000000000000000000000000000000000000000000000000000000000000000600f0b8152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610ff26129d2565b610ffa61301e565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000601054161760105580f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c95760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576110b86129d2565b6110c06129f5565b90608435801515809103610c8b5773ffffffffffffffffffffffffffffffffffffffff6111429381604051947f6863f5bc0000000000000000000000000000000000000000000000000000000060208701521660248501521660448301526044356064830152606435608483015260a482015260a481526105e060c482612a61565b805181019060208181840193031261120d5760208101519067ffffffffffffffff8211610c8b57019181603f840112156102c95760208301519267ffffffffffffffff84116111e0578360051b91604051946111a16020850187612a61565b855260208080870194840101019384116102c95750604001905b8282106111d0576040518061049d8682612951565b81518152602091820191016111bb565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8280fd5b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043573ffffffffffffffffffffffffffffffffffffffff81168091036113e95761126a6129f5565b60643567ffffffffffffffff8111610c8b5736602382011215610c8b5780600401359067ffffffffffffffff82116113ed5736602483830101116113ed576113c3937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f846107ee9560246101049673ffffffffffffffffffffffffffffffffffffffff6040519a8b987fe49cd4750000000000000000000000000000000000000000000000000000000060208b0152848a0152166044880152604435606488015260c060848801528260e48801520186860137888582860101527f000000000000000000000000000000000000000000000000000000000000000060a48501527f000000000000000000000000000000000000000000000000000000000000000060c48501520116810103017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612a61565b6020818051810103126113e957602001518015158091036113e957602090604051908152f35b5080fd5b8480fd5b50346102c95760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576114296129d2565b6114316129f5565b906064359160a4358015158091036113ed578373ffffffffffffffffffffffffffffffffffffffff6114656114f49661306a565b9381604051967f8d01fa440000000000000000000000000000000000000000000000000000000060208901521660248701521660448501526044356064850152608484015260843560a484015260c483015260e48201527f000000000000000000000000000000000000000000000000000000000000000061010482015261010481526105e061012482612a61565b6040818051810103126113e95780604060208193015191015182519182526020820152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576060602060405161155881612a18565b838152015260405161156981612a18565b600954600f0b8152611579612c3d565b906020810191825260405192839260208452606084019251600f0b6020850152519160408085015282518091526020608085019301915b8181106115be575050500390f35b8251600f0b8452859450602093840193909201916001016115b0565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761161161301e565b60085460ff811615611621575080f35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001176008557f0f8eeedbc400fd6686703559f58d1e6143fdaed533f19a86c93d67a2fe4fb3318180a180f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405160128152f35b50346102c95760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761173b6129d2565b6117436129f5565b6044359173ffffffffffffffffffffffffffffffffffffffff811680855260026020526040852073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f2054907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82106117c0575b505061075a9350612ef9565b84821061186657801561183a57331561180e578560409161075a975260026020522073ffffffffffffffffffffffffffffffffffffffff33165f526020528360405f20910390555f806117b4565b6024867f94280d6200000000000000000000000000000000000000000000000000000000815280600452fd5b6024867fe602df0500000000000000000000000000000000000000000000000000000000815280600452fd5b60648686847ffb8f41b200000000000000000000000000000000000000000000000000000000835233600452602452604452fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060ff600854166040519015158152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600354604051908152f35b506101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107115761194b6129d2565b906024357fffffffff00000000000000000000000000000000000000000000000000000000811691828203610711576044359273ffffffffffffffffffffffffffffffffffffffff84169283850361071157606435936084359660c43580600f0b810361071157610104359060e43582151583036107115760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00541461254d5760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005560ff600854166124ef5780159081156124e4575b501561248657611a4390611a388b8a612cec565b9060a4358c8b612d3d565b9b859d9596949e9293915073ffffffffffffffffffffffffffffffffffffffff611a6c82612aa2565b90549060031b1c169973ffffffffffffffffffffffffffffffffffffffff611a9385612aa2565b90549060031b1c169b155f146122d95750878a73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001698898214806122cf575b156121f857505050863b15610711575f8e976004604051809a81937fd0e30db00000000000000000000000000000000000000000000000000000000083525af19687156121ed578f908f908f996121d6575b50611b70611b92915b611b6b611b4e86612ae7565b90549060031b1c611b5e87612aff565b90549060031b1c90612b81565b612b81565b91611b8d611b7d87612ae7565b90549060031b1c611b5e88612aff565b612b47565b908d987f000000000000000000000000000000000000000000000000000000000000000090811515806121cd575b612144575b5050611c6391611c45611c06611c5a93611bf0611be188612aff565b90549060031b1c821015612bd8565b611bf987612aff565b90549060031b1c90612b47565b611c0f86612ae7565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b611c51611be187612aff565b611bf986612aff565b611c0f85612ae7565b8b82600f0b13156120e6578b84600f0b131561208857611cec93611cd482611cac611ca6611cac96611c97611ca697612eb9565b90549060031b1c600f0b613210565b91612eb9565b9091906fffffffffffffffffffffffffffffffff83549160031b928116831b921b1916179055565b611cdd84612eb9565b90549060031b1c600f0b613268565b80612049575b15611f835773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b15611f7f5787809160248d60405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af18015611f74579188918c93611f56575b5081809381925af13d15611f51573d67ffffffffffffffff8111611f245760405190611dd160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160183612a61565b81528760203d92013e5b15611ec6577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a0915b611e10818a612b47565b73ffffffffffffffffffffffffffffffffffffffff604051931683528a60208401528b604084015260608301526080820152a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015611e95575b50505061049d90604051938493846040919493926060820195825260208201520152565b8280809381938290611ebd575b3390f115611eb1578080611e71565b604051903d90823e3d90fd5b506108fc611ea2565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b611ddb565b611f639193508290612a61565b611f7057868a915f611d7d565b8680fd5b6040513d8a823e3d90fd5b8780fd5b506040517fa9059cbb0000000000000000000000000000000000000000000000000000000087528360045289602452602087604481808a5af1906001885114821615612028575b60405215611ffc577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a091611e06565b602486867f5274afe7000000000000000000000000000000000000000000000000000000008252600452fd5b90600181151661204057863b15153d15161690611fca565b503d87823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168614611cf2565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a20616d6f756e744f7574203c3d20300000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4d53523a20616d6f756e74496e203c3d2030000000000000000000000000006044820152fd5b611c5a929a50611c06620f4240612162611c639694611c4594612b8e565b049b8c612175575b93505050918f611bc5565b6121c88d6121946121858a612aff565b91909283548360031b1c612b81565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b61216a565b50801515611bc0565b6121e3919e505f90612a61565b5f9c611b70611b39565b6040513d5f823e3d90fd5b60209293949596979899505f80809360649373ffffffffffffffffffffffffffffffffffffffff604051987f23b872dd00000000000000000000000000000000000000000000000000000000855216600452306024526044525af19060015f51148216156122ae575b6040525f6060521561228257908b95949392918e611b928f611b7090611b42565b887f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9060018115166122c6578a3b15153d15161690612261565b503d5f823e3d90fd5b5080341015611ae7565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529197506020826024818e5afa9182156121ed578f905f9361244e575b5060249291612352916040519160208301528d8583015260448201526044815261234c606482612a61565b8a6131ed565b5060208b604051938480927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa80156121ed578f925f91612415575b50906123a291612b47565b036123b7578b958e611b928f611b7090611b42565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e742066756e647300000000000000000000000000006044820152fd5b919250506020813d602011612446575b8161243260209383612a61565b8101031261071157518e91906123a2612397565b3d9150612425565b9250506020823d60201161247e575b8161246a60209383612a61565b81010312610711579051908e612352612321565b3d915061245d565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f737761703a20646561646c696e652065786365656465640000000000000000006044820152fd5b90504211155f611a24565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346107115760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107115761261a6129d2565b6024359033156126bc5773ffffffffffffffffffffffffffffffffffffffff1690811561269057335f52600260205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576040515f6004548060011c90600181168015612827575b6020831081146127fa578285529081156127b8575060011461275a575b61049d8361094281850382612a61565b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b80821061279e5750909150810160200161094261274a565b919260018160209254838588010152019101909291612786565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b84019091019150610942905061274a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f169161272d565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157604051806020600d54918281520190600d5f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5905f5b8181106128ad5761049d856108ab81870382612a61565b8254845260209093019260019283019201612896565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157600c548082526020820190600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7905f5b81811061293b5761049d856108ab81870382612a61565b8254845260209093019260019283019201612924565b60206040818301928281528451809452019201905f5b8181106129745750505090565b8251845260209384019390920191600101612967565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6040810190811067ffffffffffffffff821117612a3457604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612a3457604052565b600b54811015612aba57600b5f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600f54811015612aba57600f5f5260205f2001905f90565b600c54811015612aba57600c5f5260205f2001905f90565b600d54811015612aba57600d5f5260205f2001905f90565b600654811015612aba5760065f5260205f2001905f90565b91908203918211612b5457565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b91908201809211612b5457565b81810292918115918404141715612b5457565b8115612bab570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b15612bdf57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f62616c616e6365203c2070726f746f636f6c206f7765640000000000000000006044820152fd5b60405190600a548083528260208101600a5f5260205f20925f905b806001830110612ca557612c7e945491818110612c91575b10612c80575b500383612a61565b565b60801d600f0b81526020015f612c76565b92602060019184600f0b8152019301612c70565b9160029193506040600191865480600f0b825260801d600f0b6020820152019401920185929391612c58565b90816060910312610711578051916040602083015192015190565b9190826103e8026103e881048403612b545781612d0891612b81565b90815f52600760205260405f2054938415612d2257505050565b612d2d929450613143565b915f5260076020528160405f2055565b92949394919091612d69612d518784613160565b9050612d5c86612b17565b90549060031b1c906132be565b905f82600f0b1315612e5b57612d8f918486600954600f0b612d89612c3d565b90613557565b919092612dae8394612da18197612b17565b90549060031b1c90613182565b925f92849880612e3a575b508811612ddc57612dcc612dd992612b17565b90549060031b1c906134e8565b94565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f737761703a207472616e736665722065786365656473206d61780000000000006044820152fd5b909850612e49919350846131b4565b91612e548385612b81565b975f612db9565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761703a20696e70757420746f6f20736d616c6c20616674657220666565006044820152fd5b90600a54821015612aba57600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b73ffffffffffffffffffffffffffffffffffffffff16908115612ff25773ffffffffffffffffffffffffffffffffffffffff16918215612fc657815f52600160205260405f2054818110612f9457817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f52600184520360405f2055845f526001825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff5f5416330361303e57565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b600654156130855761307b90612b2f565b90549060031b1c90565b505f90565b905f8091602081519101845af48080613130575b156130b05750506130ad6132a5565b90565b156130f75773ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b3d15613108576040513d5f823e3d90fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b503d15158061309e5750813b151561309e565b90611b5e6131536130ad93612b2f565b90549060031b1c91612b2f565b9190801561317c576131756130ad91846131b4565b8093612b47565b505f9190565b61319661318f83836134e8565b92836132be565b90600f0b90600f0b126131a65790565b60018101809111612b545790565b9080156131e7576131c491612b8e565b620f4240810190818111612b5457620f423f01908111612b5457620f4240900490565b50505f90565b905f809160208151910182855af1808061313057156130b05750506130ad6132a5565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061324e575b1561071157600f0b90565b506f7fffffffffffffffffffffffffffffff811315613243565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061324e571561071157600f0b90565b604051903d82523d5f602084013e60203d830101604052565b81156107115777ffffffffffffffffffffffffffffffffffffffffffffffff811161333657906132f09160401b612ba1565b6fffffffffffffffffffffffffffffffff8111610711576fffffffffffffffffffffffffffffffff166f7fffffffffffffffffffffffffffffff811161071157600f0b90565b60c09181831c80936401000000008210156134db575b600282620100006133d99410156134cf575b6101008110156134c3575b60108110156134b7575b60048110156134ac575b10156134a4575b8360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b612ba1565b926fffffffffffffffffffffffffffffffff8411610711578160801c8402906fffffffffffffffffffffffffffffffff8316850290809460401b9082821061347a575b5003928160801b91828510613451575b60801c036134465761343e9203612ba1565b905b016132f0565b505050600190613440565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019061342c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f61341c565b600101613384565b91810191811c61337d565b6004928301921c613373565b6008928301921c613369565b6010928301921c61335e565b505060e082811c9061334c565b81156131e757600f0b5f8112610711576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116107115760401b81198111610711570190565b8051821015612aba5760209160051b010190565b955f959194939092849290875b875189101561358f5761358760019161357d8b8b613543565b51600f0b90613210565b980197613564565b909294975097909294975f81600f0b13156139cd576135ad91613a2b565b9384600f0b80156107115770010000000000000000000000000000000005917fffffffffffffffffffffffffffffffff80000000000000000000000000000000831215806139b3575b15610711576136326136379161362d61361595600f0b9586928b613543565b51600f0b613623898c613543565b51600f0b90613268565b613a2b565b613a6b565b9280600f0b905f8213613823575b50509061365191613a2b565b80600f0b68200000000000000000811361379f577fffffffffffffffffffffffffffffffff800000000000000000000000000000001461071157613699905f03600f0b613a6b565b600f0b6801000000000000000003907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082121580613785575b15610711576136e491600f0b90613a2b565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061376b575b1561071157600f0b925f84131561375757505061373b61374192613ac8565b90613a2b565b905f82600f0b131561374f57565b5f9250829150565b9091506137649250613543565b51600f0b90565b506f7fffffffffffffffffffffffffffffff81131561371c565b506f7fffffffffffffffffffffffffffffff8213156136d2565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4c4d53523a20612f6220746f6f206c617267652028776f756c64206f7665726660448201527f6c6f7720657870290000000000000000000000000000000000000000000000006064820152fd5b84600f9a939a0b8092131561392f5781156107115760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613915575b1561071157600f0b5f8113156138b75761388561388b91613ac8565b86613a2b565b9780600f0b89600f0b125f146138ab57505061365190875b90915f613645565b613651929198506138a3565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4d53523a20726174696f3c3d300000000000000000000000000000000000006044820152fd5b506f7fffffffffffffffffffffffffffffff811315613869565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4c4d53523a206c696d69745072696365203c3d2063757272656e74207072696360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152fd5b506f7fffffffffffffffffffffffffffffff8313156135f6565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061324e571561071157600f0b90565b600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000811261308557700171547652b82fe1777d0ffda0d23a7d126130ad910260801d600f0b613bf5565b600f0b5f811315610711575f908068010000000000000000821215613be8575b806401000000006002921215613bdc575b62010000811215613bd0575b610100811215613bc4575b6010811215613bb8575b6004811215613bad575b1215613ba3575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f8313613b8757506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d90565b8002908160ff1c9182607f011c918302019160011d9190613b62565b9060010190613b2b565b92810192811d613b24565b6004938401931d613b1a565b6008938401931d613b10565b6010938401931d613b05565b6020938401931d613af9565b506040915080821d613ae8565b80600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000081126131e7576f80000000000000000000000000000000915f6780000000000000008216600f0b136147f1575b5f6740000000000000008216600f0b136147d4575b5f6720000000000000008216600f0b136147b7575b5f6710000000000000008216600f0b1361479a575b5f6708000000000000008216600f0b1361477d575b5f6704000000000000008216600f0b13614760575b5f6702000000000000008216600f0b13614743575b5f6701000000000000008216600f0b13614726575b5f66800000000000008216600f0b13614709575b5f66400000000000008216600f0b136146ec575b5f66200000000000008216600f0b136146cf575b5f66100000000000008216600f0b136146b2575b5f66080000000000008216600f0b13614695575b5f66040000000000008216600f0b13614678575b5f66020000000000008216600f0b1361465b575b5f66010000000000008216600f0b1361463e575b5f658000000000008216600f0b13614621575b5f654000000000008216600f0b13614604575b5f652000000000008216600f0b136145e7575b5f651000000000008216600f0b136145ca575b5f650800000000008216600f0b136145ad575b5f650400000000008216600f0b13614590575b5f650200000000008216600f0b13614573575b5f650100000000008216600f0b13614556575b5f6480000000008216600f0b13614539575b5f6440000000008216600f0b1361451c575b5f6420000000008216600f0b136144ff575b5f6410000000008216600f0b136144e2575b5f6408000000008216600f0b136144c5575b5f6404000000008216600f0b136144a8575b5f6402000000008216600f0b1361448b575b5f6401000000008216600f0b1361446e575b5f63800000008216600f0b13614451575b5f63400000008216600f0b13614434575b5f63200000008216600f0b13614417575b5f63100000008216600f0b136143fa575b5f63080000008216600f0b136143dd575b5f63040000008216600f0b136143c0575b5f63020000008216600f0b136143a3575b5f63010000008216600f0b13614386575b5f628000008216600f0b13614369575b5f624000008216600f0b1361434c575b5f622000008216600f0b1361432f575b5f621000008216600f0b13614312575b5f620800008216600f0b136142f5575b5f620400008216600f0b136142d8575b5f620200008216600f0b136142bb575b5f620100008216600f0b1361429e575b5f6180008216600f0b13614281575b5f6140008216600f0b13614264575b5f6120008216600f0b13614247575b5f6110008216600f0b1361422a575b5f6108008216600f0b1361420d575b5f6104008216600f0b136141f0575b5f6102008216600f0b136141d3575b5f6101008216600f0b136141b6575b5f60808216600f0b13614199575b5f60408216600f0b1361417c575b5f60208216600f0b1361415f575b5f60108216600f0b13614142575b5f60088216600f0b13614125575b5f60048216600f0b13614108575b5f60028216600f0b136140ea575b60015f9116600f0b136140cd575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161071157600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c906140a3565b7001000000000000000162e42fefa39ef35890920260801c91614095565b9170010000000000000002c5c85fdf473de6b20260801c91614087565b91700100000000000000058b90bfbe8e7bcd6d0260801c91614079565b917001000000000000000b17217f7d1cf79afa0260801c9161406b565b91700100000000000000162e42fefa39ef366f0260801c9161405d565b917001000000000000002c5c85fdf473de6eca0260801c9161404f565b9170010000000000000058b90bfbe8e7bce5440260801c91614041565b91700100000000000000b17217f7d1cf79e9490260801c91614033565b9170010000000000000162e42fefa39ef44d910260801c91614024565b91700100000000000002c5c85fdf473dea871f0260801c91614015565b917001000000000000058b90bfbe8e7bdcbe2e0260801c91614006565b9170010000000000000b17217f7d1cf7d83c1a0260801c91613ff7565b917001000000000000162e42fefa39f02b772c0260801c91613fe8565b9170010000000000002c5c85fdf473e242ea380260801c91613fd9565b91700100000000000058b90bfbe8e7cc35c3f00260801c91613fca565b917001000000000000b17217f7d1cfb72b45e10260801c91613fbb565b91700100000000000162e42fefa39fe95583c20260801c91613fab565b917001000000000002c5c85fdf4741bea6e77e0260801c91613f9b565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c91613f8b565b91700100000000000b17217f7d1d351a389d400260801c91613f7b565b9170010000000000162e42fefa3ae53369388c0260801c91613f6b565b91700100000000002c5c85fdf477b662b269450260801c91613f5b565b917001000000000058b90bfbe8f71cb4e4b33d0260801c91613f4b565b9170010000000000b17217f7d20cf927c8e94c0260801c91613f3b565b917001000000000162e42fefa494f1478fde050260801c91613f2a565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c91613f19565b91700100000000058b90bfbe9ddbac5e109cce0260801c91613f08565b917001000000000b17217f7d5a7716bba4a9ae0260801c91613ef7565b91700100000000162e42fefb2fed257559bdaa0260801c91613ee6565b917001000000002c5c85fdf84bd62ae30a74cc0260801c91613ed5565b9170010000000058b90bfbf8479bd5a81b51ad0260801c91613ec4565b91700100000000b17217f80f4ef5aadda455540260801c91613eb3565b9170010000000162e42ff0999ce3541b9fffcf0260801c91613ea1565b91700100000002c5c85fe31f35a6a30da1be500260801c91613e8f565b917001000000058b90bfcdee5acd3c1cedc8230260801c91613e7d565b9170010000000b17217fba9c739aa5819f44f90260801c91613e6b565b917001000000162e42fff037df38aa2b219f060260801c91613e59565b9170010000002c5c8601cc6b9e94213c72737a0260801c91613e47565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91613e35565b917001000000b1721835514b86e6d96efd1bfe0260801c91613e23565b91700100000162e430e5a18f6119e3c02282a50260801c91613e10565b917001000002c5c863b73f016468f6bac5ca2b0260801c91613dfd565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91613dea565b91700100000b1721bcfc99d9f890ea069117630260801c91613dd7565b9170010000162e43f4f831060e02d839a9d16d0260801c91613dc4565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c91613db1565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c91613d9e565b9170010000b17255775c040618bf4a4ade83fc0260801c91613d8b565b917001000162e525ee054754457d59952920260260801c91613d77565b9170010002c5cc37da9491d0985c348c68e7b30260801c91613d63565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91613d4f565b917001000b175effdc76ba38e31671ca9397250260801c91613d3b565b91700100162f3904051fa128bca9c55c31e5df0260801c91613d27565b917001002c605e2e8cec506d21bfc89a23a00f0260801c91613d13565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c91613cff565b91700100b1afa5abcbed6129ab13ec11dc95430260801c91613ceb565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c91613cd6565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c91613cc1565b917001059b0d31585743ae7c548eb68ca417fd0260801c91613cac565b9170010b5586cf9890f6298b92b71842a983630260801c91613c97565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c91613c82565b917001306fe0a31b7152de8d5a46305c85edec0260801c91613c6d565b6fb504f333f9de6484597d89b3754abe9f9250613c5856fea26469706673582212201f3500b860bc62657692a3183901310b4a9d587e54c35da242d2bb0118485b5364736f6c634300081e0033","sourceMap":"2527:18524:49:-:0;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;2527:18524:49;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;2527:18524:49;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;2527:18524:49;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2527:18524:49;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;2527:18524:49;;;;;;;;;;;-1:-1:-1;;;;;2527:18524:49;;;;;;;;;;-1:-1:-1;;;;;2527:18524:49;;;;;;;1505:66:31;2527:18524:49;;1149:24:51;-1:-1:-1;;;;;2527:18524:49;1018:26:45;;1014:95;;-1:-1:-1;2527:18524:49;;-1:-1:-1;;;;;;2527:18524:49;;;;;;-1:-1:-1;;;;;2527:18524:49;;1104:49:46;;-1:-1:-1;1104:49:46;2527:18524:49;;;-1:-1:-1;;;;;2527:18524:49;;;;882:13:35;2527:18524:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2527:18524:49;;;;;;;;;;;;;;;;;;;882:13:35;2527:18524:49;;;;;-1:-1:-1;;;;;2527:18524:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2527:18524:49;;;;;;;;;;;;;;;;;;;;;;;;;6675:18;2527:18524;;;;;;-1:-1:-1;;;;;2527:18524:49;;;;;;;;;6727:17;2527:18524;;6727:17;2527:18524;;;;;;;;6727:17;-1:-1:-1;2527:18524:49;;-1:-1:-1;2527:18524:49;-1:-1:-1;2527:18524:49;;;;;;6754:14;;;;2527:18524;6754:14;2527:18524;;;;6786:30;2527:18524;;6898:27;2527:18524;;6898:27;:::i;:::-;2527:18524;;;-1:-1:-1;;;;;2527:18524:49;;;;;;;;;;;6890:35;2527:18524;;6890:35;2527:18524;;;;;;;;;6890:35;-1:-1:-1;2527:18524:49;;-1:-1:-1;2527:18524:49;-1:-1:-1;2527:18524:49;;;;;;6940:13;;;;-1:-1:-1;6973:3:49;2527:18524;;6955:16;;;;;7045:6;7034:8;;;;:::i;:::-;2527:18524;7034:17;2527:18524;;;7096:8;;;;:::i;:::-;2527:18524;;6890:35;2527:18524;;;;;;;;6890:35;-1:-1:-1;2527:18524:49;;;-1:-1:-1;2527:18524:49;;;;6940:13;;2527:18524;;;;-1:-1:-1;2527:18524:49;;882:13:35;2527:18524:49;;-1:-1:-1;2527:18524:49;;;;-1:-1:-1;;;2527:18524:49;;;882:13:35;2527:18524:49;;;;;;;;-1:-1:-1;;;2527:18524:49;;;;;;;6955:16;;;7045:6;7132:21;;2527:18524;;;;7189:28;7253:7;7235:25;;2527:18524;;;7398:20;;:57;;;;6935:180;2527:18524;;;;7466:34;7510:40;2527:18524;;-1:-1:-1;;;;;;2527:18524:49;-1:-1:-1;;;;;2527:18524:49;;;;;;;;;;;7560:21;2527:18524;7591:21;2527:18524;;;-1:-1:-1;7730:5:49;;;;;;7955:16;;;;:::i;:::-;2527:18524;;;-1:-1:-1;;;;;2527:18524:49;;;;;;;;;;;7946:25;2527:18524;;7946:25;2527:18524;;;;;;7713:126;2527:18524;;7946:25;-1:-1:-1;2527:18524:49;;-1:-1:-1;2527:18524:49;-1:-1:-1;2527:18524:49;;;;;;8061:16;;;;:::i;:::-;2527:18524;;;-1:-1:-1;;;;;2527:18524:49;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2527:18524:49;;-1:-1:-1;2527:18524:49;-1:-1:-1;2527:18524:49;;;;;;8107:16;;;:::i;:::-;2527:18524;;;-1:-1:-1;;;;;2527:18524:49;;;;;;;;;;;8087:36;2527:18524;;8087:36;2527:18524;;;;;;;;;;8087:36;-1:-1:-1;2527:18524:49;;-1:-1:-1;2527:18524:49;;-1:-1:-1;2527:18524:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8087:36;-1:-1:-1;2527:18524:49;;;-1:-1:-1;2527:18524:49;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;2527:18524:49;;882:13:35;2527:18524:49;;-1:-1:-1;2527:18524:49;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2527:18524:49;;;-1:-1:-1;2527:18524:49;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7946:25;-1:-1:-1;2527:18524:49;;;-1:-1:-1;2527:18524:49;;;;;;;:::i;:::-;;;;7718:10;2527:18524;;;;;;;;;-1:-1:-1;;;;;2527:18524:49;7780:10;;;;:::i;:::-;2527:18524;;-1:-1:-1;2527:18524:49;7752:27;2527:18524;;;;-1:-1:-1;2527:18524:49;;7718:10;;2527:18524;;;;-1:-1:-1;2527:18524:49;;882:13:35;2527:18524:49;;-1:-1:-1;2527:18524:49;;-1:-1:-1;2527:18524:49;;7398:57;-1:-1:-1;;;;;;2527:18524:49;;7422:33;;7398:57;;2527:18524;;;-1:-1:-1;;;2527:18524:49;;;882:13:35;2527:18524:49;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2527:18524:49;;;882:13:35;2527:18524:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6890:35;-1:-1:-1;2527:18524:49;;;-1:-1:-1;2527:18524:49;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;2527:18524:49;;;882:13:35;2527:18524:49;;;;;;;;-1:-1:-1;;;2527:18524:49;;;;;;;;;;-1:-1:-1;;;;;2527:18524:49;;;;;;;;;;;;;;;6727:17;-1:-1:-1;2527:18524:49;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;2527:18524:49;;;882:13:35;2527:18524:49;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2527:18524:49;;;;;;-1:-1:-1;2527:18524:49;;;;;;;-1:-1:-1;;;2527:18524:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2527:18524:49;;-1:-1:-1;2527:18524:49;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;2527:18524:49;;;;;;;;-1:-1:-1;2527:18524:49;;882:13:35;2527:18524:49;;-1:-1:-1;2527:18524:49;;;;;;;;;;;;-1:-1:-1;2527:18524:49;;;;;882:13:35;-1:-1:-1;2527:18524:49;;;;;;;-1:-1:-1;;;2527:18524:49;;;;;;;;;;;;;;;;;;;;;;;;;;;882:13:35;2527:18524:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;882:13:35;-1:-1:-1;2527:18524:49;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;1014:95:45;1067:31;;;-1:-1:-1;1067:31:45;-1:-1:-1;1067:31:45;2527:18524:49;;-1:-1:-1;1067:31:45;2527:18524:49;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2527:18524:49;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2527:18524:49;;;-1:-1:-1;;;;;2527:18524:49;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;2527:18524:49;;;;;;:::o;:::-;;;;;;;;;;;;-1:-1:-1;;;;;2527:18524:49;;;;;;;;-1:-1:-1;;2527:18524:49;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;2527:18524:49;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;2527:18524:49;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c908163017504b6146128c357508063017cf6611461283157806306fdde03146126e8578063095ea7b3146125e35780630d246214146125755780630eeee6271461191757806318160ddd146118db5780631f3a0e411461189a57806323b872dd14611703578063313ce567146116c957806331596a6a1461167057806341c0e1b5146115da578063476e44b614611519578063491e7998146113f15780635cffe9de146112115780636863f5bc146110805780636b4082d1146110275780636b7b911214610fa55780636bba3f2f14610f495780636d8d0ff314610e8e5780636ff97f1d14610d8e57806370a0823114610d2b578063715018a614610c8f57806379a68d5314610b6b5780638da5cb5b14610b1a5780638e499bcf14610ade578063939f5ea414610a965780639517606614610a2757806395d89b41146108cd5780639af1d35a1461082e578063a1af5b9a14610765578063a9059cbb14610715578063b3f1c93d14610648578063cb717f3a146104f3578063cce516b7146104a1578063d516b8c614610416578063dd62ed3e1461039d578063e4b50cb81461033b578063f0d1ae4f146102cc5763f2fde38b0361000f57346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff6102286129d2565b61023061301e565b16801561029d5773ffffffffffffffffffffffffffffffffffffffff8254827fffffffffffffffffffffffff00000000000000000000000000000000000000008216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b6024827f1e4fbdf700000000000000000000000000000000000000000000000000000000815280600452fd5b80fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff61038d600435612aa2565b90549060031b1c16604051908152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff60406103ec6129d2565b92826103f66129f5565b9416815260026020522091165f52602052602060405f2054604051908152f35b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043590602435916064359182600f0b83036102c95761049d61047985858561046f8382613143565b9260443591612d3d565b92505050604093919351938493846040919493926060820195825260208201520152565b0390f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff60105416604051908152f35b5060a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761049d61062b61061c61052f6129d2565b6105376129f5565b60443573ffffffffffffffffffffffffffffffffffffffff6105588261306a565b9281604051957f3dd3c8050000000000000000000000000000000000000000000000000000000060208801521660248601521660448401526064830152606435608483015260843560a483015260c48201527f000000000000000000000000000000000000000000000000000000000000000060e482015260e481526105e061010482612a61565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001661308a565b60208082518301019101612cd1565b604080519384526020840192909252908201529081906060820190565b5060807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f161067e6129d2565b73ffffffffffffffffffffffffffffffffffffffff61069b6129f5565b81604051937fb3f1c93d00000000000000000000000000000000000000000000000000000000602086015216602484015216604482015260443560648201526064356084820152608481526105e060a482612a61565b602081519181808201938492010103126107115760209051604051908152f35b5f80fd5b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761075a6107506129d2565b6024359033612ef9565b602060405160018152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761082a73ffffffffffffffffffffffffffffffffffffffff60105416604051907f2a54db010000000000000000000000000000000000000000000000000000000060208301526024820152602481526107ee604482612a61565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001661308a565b5080f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760405180916020600654928381520191600682527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f915b8181106108b75761049d856108ab81870382612a61565b60405191829182612951565b8254845260209093019260019283019201610894565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576040519080600554908160011c91600181168015610a1d575b6020841081146109f0578386529081156109ab575060011461094e575b61049d8461094281860382612a61565b6040519182918261298a565b600581527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0939250905b8082106109915750909150810160200161094282610932565b919260018160209254838588010152019101909291610978565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208087019190915292151560051b850190920192506109429150839050610932565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b92607f1692610915565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020610ad6602435600435613143565b604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600b54604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b5060e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610b9e6129d2565b90610ba76129f5565b906044356064356084359182600f0b809303610c8b5760c435938415158095036102c95761049d61062b61061c89898989898973ffffffffffffffffffffffffffffffffffffffff610bf98383612cec565b9581604051987f8a3d858d0000000000000000000000000000000000000000000000000000000060208b01521660248901521660448701526064860152608485015260a484015260a43560c484015260e48301526101048201527f000000000000000000000000000000000000000000000000000000000000000061012482015261012481526107ee61014482612a61565b8380fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610cc661301e565b8073ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604060209173ffffffffffffffffffffffffffffffffffffffff610d7d6129d2565b168152600183522054604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604051806020600b5491828152018091600b85527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db990855b818110610e625750505082610e0b910383612a61565b604051928392602084019060208552518091526040840192915b818110610e33575050500390f35b825173ffffffffffffffffffffffffffffffffffffffff16845285945060209384019390920191600101610e25565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610df5565b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f1610ec46129d2565b73ffffffffffffffffffffffffffffffffffffffff604051917fc5eabfb900000000000000000000000000000000000000000000000000000000602084015216602482015260243560448201527f0000000000000000000000000000000000000000000000000000000000000000600f0b6064820152606481526105e0608482612a61565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f0000000000000000000000000000000000000000000000000000000000000000600f0b8152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610ff26129d2565b610ffa61301e565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000601054161760105580f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c95760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576110b86129d2565b6110c06129f5565b90608435801515809103610c8b5773ffffffffffffffffffffffffffffffffffffffff6111429381604051947f6863f5bc0000000000000000000000000000000000000000000000000000000060208701521660248501521660448301526044356064830152606435608483015260a482015260a481526105e060c482612a61565b805181019060208181840193031261120d5760208101519067ffffffffffffffff8211610c8b57019181603f840112156102c95760208301519267ffffffffffffffff84116111e0578360051b91604051946111a16020850187612a61565b855260208080870194840101019384116102c95750604001905b8282106111d0576040518061049d8682612951565b81518152602091820191016111bb565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8280fd5b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043573ffffffffffffffffffffffffffffffffffffffff81168091036113e95761126a6129f5565b60643567ffffffffffffffff8111610c8b5736602382011215610c8b5780600401359067ffffffffffffffff82116113ed5736602483830101116113ed576113c3937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f846107ee9560246101049673ffffffffffffffffffffffffffffffffffffffff6040519a8b987fe49cd4750000000000000000000000000000000000000000000000000000000060208b0152848a0152166044880152604435606488015260c060848801528260e48801520186860137888582860101527f000000000000000000000000000000000000000000000000000000000000000060a48501527f000000000000000000000000000000000000000000000000000000000000000060c48501520116810103017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612a61565b6020818051810103126113e957602001518015158091036113e957602090604051908152f35b5080fd5b8480fd5b50346102c95760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576114296129d2565b6114316129f5565b906064359160a4358015158091036113ed578373ffffffffffffffffffffffffffffffffffffffff6114656114f49661306a565b9381604051967f8d01fa440000000000000000000000000000000000000000000000000000000060208901521660248701521660448501526044356064850152608484015260843560a484015260c483015260e48201527f000000000000000000000000000000000000000000000000000000000000000061010482015261010481526105e061012482612a61565b6040818051810103126113e95780604060208193015191015182519182526020820152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576060602060405161155881612a18565b838152015260405161156981612a18565b600954600f0b8152611579612c3d565b906020810191825260405192839260208452606084019251600f0b6020850152519160408085015282518091526020608085019301915b8181106115be575050500390f35b8251600f0b8452859450602093840193909201916001016115b0565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761161161301e565b60085460ff811615611621575080f35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001176008557f0f8eeedbc400fd6686703559f58d1e6143fdaed533f19a86c93d67a2fe4fb3318180a180f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405160128152f35b50346102c95760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761173b6129d2565b6117436129f5565b6044359173ffffffffffffffffffffffffffffffffffffffff811680855260026020526040852073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f2054907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82106117c0575b505061075a9350612ef9565b84821061186657801561183a57331561180e578560409161075a975260026020522073ffffffffffffffffffffffffffffffffffffffff33165f526020528360405f20910390555f806117b4565b6024867f94280d6200000000000000000000000000000000000000000000000000000000815280600452fd5b6024867fe602df0500000000000000000000000000000000000000000000000000000000815280600452fd5b60648686847ffb8f41b200000000000000000000000000000000000000000000000000000000835233600452602452604452fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060ff600854166040519015158152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600354604051908152f35b506101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107115761194b6129d2565b906024357fffffffff00000000000000000000000000000000000000000000000000000000811691828203610711576044359273ffffffffffffffffffffffffffffffffffffffff84169283850361071157606435936084359660c43580600f0b810361071157610104359060e43582151583036107115760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00541461254d5760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005560ff600854166124ef5780159081156124e4575b501561248657611a4390611a388b8a612cec565b9060a4358c8b612d3d565b9b859d9596949e9293915073ffffffffffffffffffffffffffffffffffffffff611a6c82612aa2565b90549060031b1c169973ffffffffffffffffffffffffffffffffffffffff611a9385612aa2565b90549060031b1c169b155f146122d95750878a73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001698898214806122cf575b156121f857505050863b15610711575f8e976004604051809a81937fd0e30db00000000000000000000000000000000000000000000000000000000083525af19687156121ed578f908f908f996121d6575b50611b70611b92915b611b6b611b4e86612ae7565b90549060031b1c611b5e87612aff565b90549060031b1c90612b81565b612b81565b91611b8d611b7d87612ae7565b90549060031b1c611b5e88612aff565b612b47565b908d987f000000000000000000000000000000000000000000000000000000000000000090811515806121cd575b612144575b5050611c6391611c45611c06611c5a93611bf0611be188612aff565b90549060031b1c821015612bd8565b611bf987612aff565b90549060031b1c90612b47565b611c0f86612ae7565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b611c51611be187612aff565b611bf986612aff565b611c0f85612ae7565b8b82600f0b13156120e6578b84600f0b131561208857611cec93611cd482611cac611ca6611cac96611c97611ca697612eb9565b90549060031b1c600f0b613210565b91612eb9565b9091906fffffffffffffffffffffffffffffffff83549160031b928116831b921b1916179055565b611cdd84612eb9565b90549060031b1c600f0b613268565b80612049575b15611f835773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b15611f7f5787809160248d60405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af18015611f74579188918c93611f56575b5081809381925af13d15611f51573d67ffffffffffffffff8111611f245760405190611dd160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160183612a61565b81528760203d92013e5b15611ec6577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a0915b611e10818a612b47565b73ffffffffffffffffffffffffffffffffffffffff604051931683528a60208401528b604084015260608301526080820152a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015611e95575b50505061049d90604051938493846040919493926060820195825260208201520152565b8280809381938290611ebd575b3390f115611eb1578080611e71565b604051903d90823e3d90fd5b506108fc611ea2565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b611ddb565b611f639193508290612a61565b611f7057868a915f611d7d565b8680fd5b6040513d8a823e3d90fd5b8780fd5b506040517fa9059cbb0000000000000000000000000000000000000000000000000000000087528360045289602452602087604481808a5af1906001885114821615612028575b60405215611ffc577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a091611e06565b602486867f5274afe7000000000000000000000000000000000000000000000000000000008252600452fd5b90600181151661204057863b15153d15161690611fca565b503d87823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168614611cf2565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a20616d6f756e744f7574203c3d20300000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4d53523a20616d6f756e74496e203c3d2030000000000000000000000000006044820152fd5b611c5a929a50611c06620f4240612162611c639694611c4594612b8e565b049b8c612175575b93505050918f611bc5565b6121c88d6121946121858a612aff565b91909283548360031b1c612b81565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b61216a565b50801515611bc0565b6121e3919e505f90612a61565b5f9c611b70611b39565b6040513d5f823e3d90fd5b60209293949596979899505f80809360649373ffffffffffffffffffffffffffffffffffffffff604051987f23b872dd00000000000000000000000000000000000000000000000000000000855216600452306024526044525af19060015f51148216156122ae575b6040525f6060521561228257908b95949392918e611b928f611b7090611b42565b887f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9060018115166122c6578a3b15153d15161690612261565b503d5f823e3d90fd5b5080341015611ae7565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529197506020826024818e5afa9182156121ed578f905f9361244e575b5060249291612352916040519160208301528d8583015260448201526044815261234c606482612a61565b8a6131ed565b5060208b604051938480927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa80156121ed578f925f91612415575b50906123a291612b47565b036123b7578b958e611b928f611b7090611b42565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e742066756e647300000000000000000000000000006044820152fd5b919250506020813d602011612446575b8161243260209383612a61565b8101031261071157518e91906123a2612397565b3d9150612425565b9250506020823d60201161247e575b8161246a60209383612a61565b81010312610711579051908e612352612321565b3d915061245d565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f737761703a20646561646c696e652065786365656465640000000000000000006044820152fd5b90504211155f611a24565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346107115760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107115761261a6129d2565b6024359033156126bc5773ffffffffffffffffffffffffffffffffffffffff1690811561269057335f52600260205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576040515f6004548060011c90600181168015612827575b6020831081146127fa578285529081156127b8575060011461275a575b61049d8361094281850382612a61565b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b80821061279e5750909150810160200161094261274a565b919260018160209254838588010152019101909291612786565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b84019091019150610942905061274a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f169161272d565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157604051806020600d54918281520190600d5f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5905f5b8181106128ad5761049d856108ab81870382612a61565b8254845260209093019260019283019201612896565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157600c548082526020820190600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7905f5b81811061293b5761049d856108ab81870382612a61565b8254845260209093019260019283019201612924565b60206040818301928281528451809452019201905f5b8181106129745750505090565b8251845260209384019390920191600101612967565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6040810190811067ffffffffffffffff821117612a3457604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612a3457604052565b600b54811015612aba57600b5f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600f54811015612aba57600f5f5260205f2001905f90565b600c54811015612aba57600c5f5260205f2001905f90565b600d54811015612aba57600d5f5260205f2001905f90565b600654811015612aba5760065f5260205f2001905f90565b91908203918211612b5457565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b91908201809211612b5457565b81810292918115918404141715612b5457565b8115612bab570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b15612bdf57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f62616c616e6365203c2070726f746f636f6c206f7765640000000000000000006044820152fd5b60405190600a548083528260208101600a5f5260205f20925f905b806001830110612ca557612c7e945491818110612c91575b10612c80575b500383612a61565b565b60801d600f0b81526020015f612c76565b92602060019184600f0b8152019301612c70565b9160029193506040600191865480600f0b825260801d600f0b6020820152019401920185929391612c58565b90816060910312610711578051916040602083015192015190565b9190826103e8026103e881048403612b545781612d0891612b81565b90815f52600760205260405f2054938415612d2257505050565b612d2d929450613143565b915f5260076020528160405f2055565b92949394919091612d69612d518784613160565b9050612d5c86612b17565b90549060031b1c906132be565b905f82600f0b1315612e5b57612d8f918486600954600f0b612d89612c3d565b90613557565b919092612dae8394612da18197612b17565b90549060031b1c90613182565b925f92849880612e3a575b508811612ddc57612dcc612dd992612b17565b90549060031b1c906134e8565b94565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f737761703a207472616e736665722065786365656473206d61780000000000006044820152fd5b909850612e49919350846131b4565b91612e548385612b81565b975f612db9565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761703a20696e70757420746f6f20736d616c6c20616674657220666565006044820152fd5b90600a54821015612aba57600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b73ffffffffffffffffffffffffffffffffffffffff16908115612ff25773ffffffffffffffffffffffffffffffffffffffff16918215612fc657815f52600160205260405f2054818110612f9457817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f52600184520360405f2055845f526001825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff5f5416330361303e57565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b600654156130855761307b90612b2f565b90549060031b1c90565b505f90565b905f8091602081519101845af48080613130575b156130b05750506130ad6132a5565b90565b156130f75773ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b3d15613108576040513d5f823e3d90fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b503d15158061309e5750813b151561309e565b90611b5e6131536130ad93612b2f565b90549060031b1c91612b2f565b9190801561317c576131756130ad91846131b4565b8093612b47565b505f9190565b61319661318f83836134e8565b92836132be565b90600f0b90600f0b126131a65790565b60018101809111612b545790565b9080156131e7576131c491612b8e565b620f4240810190818111612b5457620f423f01908111612b5457620f4240900490565b50505f90565b905f809160208151910182855af1808061313057156130b05750506130ad6132a5565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061324e575b1561071157600f0b90565b506f7fffffffffffffffffffffffffffffff811315613243565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061324e571561071157600f0b90565b604051903d82523d5f602084013e60203d830101604052565b81156107115777ffffffffffffffffffffffffffffffffffffffffffffffff811161333657906132f09160401b612ba1565b6fffffffffffffffffffffffffffffffff8111610711576fffffffffffffffffffffffffffffffff166f7fffffffffffffffffffffffffffffff811161071157600f0b90565b60c09181831c80936401000000008210156134db575b600282620100006133d99410156134cf575b6101008110156134c3575b60108110156134b7575b60048110156134ac575b10156134a4575b8360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b612ba1565b926fffffffffffffffffffffffffffffffff8411610711578160801c8402906fffffffffffffffffffffffffffffffff8316850290809460401b9082821061347a575b5003928160801b91828510613451575b60801c036134465761343e9203612ba1565b905b016132f0565b505050600190613440565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019061342c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f61341c565b600101613384565b91810191811c61337d565b6004928301921c613373565b6008928301921c613369565b6010928301921c61335e565b505060e082811c9061334c565b81156131e757600f0b5f8112610711576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116107115760401b81198111610711570190565b8051821015612aba5760209160051b010190565b955f959194939092849290875b875189101561358f5761358760019161357d8b8b613543565b51600f0b90613210565b980197613564565b909294975097909294975f81600f0b13156139cd576135ad91613a2b565b9384600f0b80156107115770010000000000000000000000000000000005917fffffffffffffffffffffffffffffffff80000000000000000000000000000000831215806139b3575b15610711576136326136379161362d61361595600f0b9586928b613543565b51600f0b613623898c613543565b51600f0b90613268565b613a2b565b613a6b565b9280600f0b905f8213613823575b50509061365191613a2b565b80600f0b68200000000000000000811361379f577fffffffffffffffffffffffffffffffff800000000000000000000000000000001461071157613699905f03600f0b613a6b565b600f0b6801000000000000000003907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082121580613785575b15610711576136e491600f0b90613a2b565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061376b575b1561071157600f0b925f84131561375757505061373b61374192613ac8565b90613a2b565b905f82600f0b131561374f57565b5f9250829150565b9091506137649250613543565b51600f0b90565b506f7fffffffffffffffffffffffffffffff81131561371c565b506f7fffffffffffffffffffffffffffffff8213156136d2565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4c4d53523a20612f6220746f6f206c617267652028776f756c64206f7665726660448201527f6c6f7720657870290000000000000000000000000000000000000000000000006064820152fd5b84600f9a939a0b8092131561392f5781156107115760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613915575b1561071157600f0b5f8113156138b75761388561388b91613ac8565b86613a2b565b9780600f0b89600f0b125f146138ab57505061365190875b90915f613645565b613651929198506138a3565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4d53523a20726174696f3c3d300000000000000000000000000000000000006044820152fd5b506f7fffffffffffffffffffffffffffffff811315613869565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4c4d53523a206c696d69745072696365203c3d2063757272656e74207072696360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152fd5b506f7fffffffffffffffffffffffffffffff8313156135f6565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061324e571561071157600f0b90565b600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000811261308557700171547652b82fe1777d0ffda0d23a7d126130ad910260801d600f0b613bf5565b600f0b5f811315610711575f908068010000000000000000821215613be8575b806401000000006002921215613bdc575b62010000811215613bd0575b610100811215613bc4575b6010811215613bb8575b6004811215613bad575b1215613ba3575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f8313613b8757506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d90565b8002908160ff1c9182607f011c918302019160011d9190613b62565b9060010190613b2b565b92810192811d613b24565b6004938401931d613b1a565b6008938401931d613b10565b6010938401931d613b05565b6020938401931d613af9565b506040915080821d613ae8565b80600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000081126131e7576f80000000000000000000000000000000915f6780000000000000008216600f0b136147f1575b5f6740000000000000008216600f0b136147d4575b5f6720000000000000008216600f0b136147b7575b5f6710000000000000008216600f0b1361479a575b5f6708000000000000008216600f0b1361477d575b5f6704000000000000008216600f0b13614760575b5f6702000000000000008216600f0b13614743575b5f6701000000000000008216600f0b13614726575b5f66800000000000008216600f0b13614709575b5f66400000000000008216600f0b136146ec575b5f66200000000000008216600f0b136146cf575b5f66100000000000008216600f0b136146b2575b5f66080000000000008216600f0b13614695575b5f66040000000000008216600f0b13614678575b5f66020000000000008216600f0b1361465b575b5f66010000000000008216600f0b1361463e575b5f658000000000008216600f0b13614621575b5f654000000000008216600f0b13614604575b5f652000000000008216600f0b136145e7575b5f651000000000008216600f0b136145ca575b5f650800000000008216600f0b136145ad575b5f650400000000008216600f0b13614590575b5f650200000000008216600f0b13614573575b5f650100000000008216600f0b13614556575b5f6480000000008216600f0b13614539575b5f6440000000008216600f0b1361451c575b5f6420000000008216600f0b136144ff575b5f6410000000008216600f0b136144e2575b5f6408000000008216600f0b136144c5575b5f6404000000008216600f0b136144a8575b5f6402000000008216600f0b1361448b575b5f6401000000008216600f0b1361446e575b5f63800000008216600f0b13614451575b5f63400000008216600f0b13614434575b5f63200000008216600f0b13614417575b5f63100000008216600f0b136143fa575b5f63080000008216600f0b136143dd575b5f63040000008216600f0b136143c0575b5f63020000008216600f0b136143a3575b5f63010000008216600f0b13614386575b5f628000008216600f0b13614369575b5f624000008216600f0b1361434c575b5f622000008216600f0b1361432f575b5f621000008216600f0b13614312575b5f620800008216600f0b136142f5575b5f620400008216600f0b136142d8575b5f620200008216600f0b136142bb575b5f620100008216600f0b1361429e575b5f6180008216600f0b13614281575b5f6140008216600f0b13614264575b5f6120008216600f0b13614247575b5f6110008216600f0b1361422a575b5f6108008216600f0b1361420d575b5f6104008216600f0b136141f0575b5f6102008216600f0b136141d3575b5f6101008216600f0b136141b6575b5f60808216600f0b13614199575b5f60408216600f0b1361417c575b5f60208216600f0b1361415f575b5f60108216600f0b13614142575b5f60088216600f0b13614125575b5f60048216600f0b13614108575b5f60028216600f0b136140ea575b60015f9116600f0b136140cd575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161071157600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c906140a3565b7001000000000000000162e42fefa39ef35890920260801c91614095565b9170010000000000000002c5c85fdf473de6b20260801c91614087565b91700100000000000000058b90bfbe8e7bcd6d0260801c91614079565b917001000000000000000b17217f7d1cf79afa0260801c9161406b565b91700100000000000000162e42fefa39ef366f0260801c9161405d565b917001000000000000002c5c85fdf473de6eca0260801c9161404f565b9170010000000000000058b90bfbe8e7bce5440260801c91614041565b91700100000000000000b17217f7d1cf79e9490260801c91614033565b9170010000000000000162e42fefa39ef44d910260801c91614024565b91700100000000000002c5c85fdf473dea871f0260801c91614015565b917001000000000000058b90bfbe8e7bdcbe2e0260801c91614006565b9170010000000000000b17217f7d1cf7d83c1a0260801c91613ff7565b917001000000000000162e42fefa39f02b772c0260801c91613fe8565b9170010000000000002c5c85fdf473e242ea380260801c91613fd9565b91700100000000000058b90bfbe8e7cc35c3f00260801c91613fca565b917001000000000000b17217f7d1cfb72b45e10260801c91613fbb565b91700100000000000162e42fefa39fe95583c20260801c91613fab565b917001000000000002c5c85fdf4741bea6e77e0260801c91613f9b565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c91613f8b565b91700100000000000b17217f7d1d351a389d400260801c91613f7b565b9170010000000000162e42fefa3ae53369388c0260801c91613f6b565b91700100000000002c5c85fdf477b662b269450260801c91613f5b565b917001000000000058b90bfbe8f71cb4e4b33d0260801c91613f4b565b9170010000000000b17217f7d20cf927c8e94c0260801c91613f3b565b917001000000000162e42fefa494f1478fde050260801c91613f2a565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c91613f19565b91700100000000058b90bfbe9ddbac5e109cce0260801c91613f08565b917001000000000b17217f7d5a7716bba4a9ae0260801c91613ef7565b91700100000000162e42fefb2fed257559bdaa0260801c91613ee6565b917001000000002c5c85fdf84bd62ae30a74cc0260801c91613ed5565b9170010000000058b90bfbf8479bd5a81b51ad0260801c91613ec4565b91700100000000b17217f80f4ef5aadda455540260801c91613eb3565b9170010000000162e42ff0999ce3541b9fffcf0260801c91613ea1565b91700100000002c5c85fe31f35a6a30da1be500260801c91613e8f565b917001000000058b90bfcdee5acd3c1cedc8230260801c91613e7d565b9170010000000b17217fba9c739aa5819f44f90260801c91613e6b565b917001000000162e42fff037df38aa2b219f060260801c91613e59565b9170010000002c5c8601cc6b9e94213c72737a0260801c91613e47565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91613e35565b917001000000b1721835514b86e6d96efd1bfe0260801c91613e23565b91700100000162e430e5a18f6119e3c02282a50260801c91613e10565b917001000002c5c863b73f016468f6bac5ca2b0260801c91613dfd565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91613dea565b91700100000b1721bcfc99d9f890ea069117630260801c91613dd7565b9170010000162e43f4f831060e02d839a9d16d0260801c91613dc4565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c91613db1565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c91613d9e565b9170010000b17255775c040618bf4a4ade83fc0260801c91613d8b565b917001000162e525ee054754457d59952920260260801c91613d77565b9170010002c5cc37da9491d0985c348c68e7b30260801c91613d63565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91613d4f565b917001000b175effdc76ba38e31671ca9397250260801c91613d3b565b91700100162f3904051fa128bca9c55c31e5df0260801c91613d27565b917001002c605e2e8cec506d21bfc89a23a00f0260801c91613d13565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c91613cff565b91700100b1afa5abcbed6129ab13ec11dc95430260801c91613ceb565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c91613cd6565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c91613cc1565b917001059b0d31585743ae7c548eb68ca417fd0260801c91613cac565b9170010b5586cf9890f6298b92b71842a983630260801c91613c97565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c91613c82565b917001306fe0a31b7152de8d5a46305c85edec0260801c91613c6d565b6fb504f333f9de6484597d89b3754abe9f9250613c5856fea26469706673582212201f3500b860bc62657692a3183901310b4a9d587e54c35da242d2bb0118485b5364736f6c634300081e0033","sourceMap":"2527:18524:49:-:0;;;;;;;;;;-1:-1:-1;2527:18524:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;505:62:46;;:::i;:::-;2527:18524:49;1993:22:45;;1989:91;;2527:18524:49;;;;;;;;;;;1104:49:46;;;;2527:18524:49;;1989:91:45;2527:18524:49;2038:31:45;;;;2527:18524:49;;;2038:31:45;2527:18524:49;;;;;;;;;;;;;;;;;;;4703:9;2527:18524;;;;;;;;;;;;;;;;;;5046:10;2527:18524;;5046:10;:::i;:::-;2527:18524;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;2797:11:35;2527:18524:49;;;2797:27:35;2527:18524:49;-1:-1:-1;2527:18524:49;;;;;-1:-1:-1;2527:18524:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11017:129;11095:50;;;;;;;:::i;:::-;2527:18524;;;11017:129;;:::i;:::-;2527:18524;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4327:33;2527:18524;;;;;;;;;;;;;;;;;;18948:47;18877:54;2527:18524;;:::i;:::-;;;:::i;:::-;;;;18775:29;;;:::i;:::-;2527:18524;;;;18573:271;18609:35;2527:18524;18573:271;;;2527:18524;;18573:271;;2527:18524;;;;;;;;;;;;;;;;;;;;;;;;;;18818:16;2527:18524;;;;;18573:271;;;;;;:::i;:::-;2527:18524;18914:9;2527:18524;18877:54;:::i;:::-;2527:18524;;;;18948:47;;;;;;:::i;:::-;2527:18524;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9993:54;2527:18524;;:::i;:::-;;;;:::i;:::-;;;;9794:167;9830:31;2527:18524;9794:167;;;2527:18524;;9794:167;;2527:18524;;;;;;;;;;;;;;;;;;;9794:167;;;;;;:::i;9993:54::-;2527:18524;;;10064:29;;;;;;;;;;2527:18524;;;;;;;;;;;;;;-1:-1:-1;2527:18524:49;;;;;;;;;;;;;;2624:5:35;2527:18524:49;;:::i;:::-;;;735:10:28;;2624:5:35;:::i;:::-;2527:18524:49;;;;;;;;;;;;;;;;;;;20749:54;2527:18524;20711:18;2527:18524;;;;20615:124;20651:46;20615:124;;;;;;;2527:18524;20615:124;;;;;;;:::i;:::-;2527:18524;20786:9;2527:18524;20749:54;:::i;:::-;;2527:18524;;;;;;;;;;;;;;;;;;;3570:5;2527:18524;;;;;;;3570:5;2527:18524;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1276:7:35;2527:18524:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;1276:7:35;2527:18524:49;;;;;-1:-1:-1;2527:18524:49;;;;;;;-1:-1:-1;2527:18524:49;;-1:-1:-1;2527:18524:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1276:7:35;2527:18524:49;;;;;;;-1:-1:-1;2527:18524:49;;-1:-1:-1;2527:18524:49;;-1:-1:-1;2527:18524:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4928:9;2527:18524;;;;;;;;;;;;;;;;;3736:20;2527:18524;;;;3736:20;:::i;:::-;2527:18524;;;;;;;;;;;;;;;;;;;5158:7;2527:18524;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17639:45;17568:54;17450:46;;;;;;2527:18524;17450:46;;;;:::i;:::-;2527:18524;;;;17196:340;17232:38;2527:18524;17196:340;;;2527:18524;;17196:340;;2527:18524;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17510:16;2527:18524;;;;;17196:340;;;;;;:::i;2527:18524::-;;;;;;;;;;;;;;;;505:62:46;;:::i;:::-;2527:18524:49;;;;;;;;;;1104:49:46;;;;2527:18524:49;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;2260:9:35;2527:18524:49;;;;;;;;;;;;;;;;;;;;;;;;;;5282:7;2527:18524;;;;;;;;5282:7;2527:18524;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2527:18524:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9092:54;2527:18524;;:::i;:::-;;;;8913:147;8949:38;2527:18524;8913:147;;;2527:18524;;8913:147;;2527:18524;;;;;;;9045:5;2527:18524;;;;;;;8913:147;;;;;;:::i;2527:18524::-;;;;;;;;;;;;;;;3446:5;2527:18524;;;;;;;;;;;;;;;;;;;;:::i;:::-;505:62:46;;:::i;:::-;2527:18524:49;;8257:31;2527:18524;;;8257:31;2527:18524;;;;;;;;;;;;;;;;;;4204:16;2527:18524;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;10533:54;2527:18524;;;;10319:182;10355:31;2527:18524;10319:182;;;2527:18524;;10319:182;;2527:18524;;;;;;;;;;;;;;;;;;;;;;;10319:182;;;;;;:::i;10533:54::-;2527:18524;;10604:31;;;2527:18524;10604:31;;;;2527:18524;;;;;;10604:31;;2527:18524;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20238:57;2527:18524;;;;19984:222;2527:18524;;;;;;;19984:222;;;20020:36;2527:18524;19984:222;;;;;;2527:18524;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20153:13;2527:18524;;;;20180:16;2527:18524;;;;;;;;19984:222;;2527:18524;19984:222;;;;;;:::i;20238:57::-;2527:18524;;;;20312:26;;2527:18524;;;;;20312:26;2527:18524;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;19522:30;2527:18524;19522:30;19625:54;19522:30;;:::i;:::-;2527:18524;;;;19302:290;19338:35;2527:18524;19302:290;;;2527:18524;;19302:290;;2527:18524;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19566:16;2527:18524;;;;;19302:290;;;;;;:::i;19625:54::-;2527:18524;;;;19696:37;;2527:18524;;;;19696:37;2527:18524;;19696:37;;;2527:18524;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;5526:5;2527:18524;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2527:18524:49;;;;;;;;;;;;;;;;;;;;;;;;;505:62:46;;:::i;:::-;8540:7:49;2527:18524;;;;8539:8;8535:81;;2527:18524;;;8535:81;2527:18524;;8574:4;2527:18524;8540:7;2527:18524;8597:8;;;;2527:18524;;;;;;;;;;;;;;;;;3965:13;2527:18524;;;;;;;;;;;;;;;;;;1997:2:35;2527:18524:49;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;6276:11:36;2527:18524:49;;;;;;735:10:28;2527:18524:49;-1:-1:-1;2527:18524:49;;;;-1:-1:-1;2527:18524:49;;6317:36:36;6336:17;6317:36;;6313:309;;2527:18524:49;4127:5:35;;;;;;:::i;6313:309:36:-;6373:24;;;6369:130;;5541:19;;5537:89;;735:10:28;5639:21:36;5635:90;;2527:18524:49;;;4127:5:35;2527:18524:49;;6276:11:36;2527:18524:49;;;;735:10:28;2527:18524:49;-1:-1:-1;2527:18524:49;;;;;-1:-1:-1;2527:18524:49;;;2407:1:31;;6313:309:36;;;;5635:90;2527:18524:49;5683:31:36;;;;2527:18524:49;;;5683:31:36;5537:89;2527:18524:49;5583:32:36;;;;2527:18524:49;;;5583:32:36;6369:130;2527:18524:49;6424:60:36;;;;;;735:10:28;2527:18524:49;;;;;;6424:60:36;2527:18524:49;;;;;;;;;;;;;;2932:7;2527:18524;;;;;;;;;;;;;;;;;;;;;;;2117:12:35;2527:18524:49;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2407:1:31;1505:66;2527:18524:49;4560:63:31;3644:93;;2407:1;1505:66;2407:1;2527:18524:49;3693:7:51;2527:18524:49;;;;11623:13;;:44;;;;;2527:18524;;;;;11903:125;11981:46;;;;;:::i;:::-;2527:18524;;;11903:125;;;:::i;:::-;12107:24;;;;;;;;;;;2527:18524;12107:24;;;:::i;:::-;2527:18524;;;;;;;12159:25;2527:18524;12159:25;;;:::i;:::-;2527:18524;;;;;;;12200:21;;12195:706;2527:18524;;;7032:13:51;;;2527:18524:49;7032:13:51;2527:18524:49;7023:22:51;;;;:45;;;12195:706:49;7019:180:51;;;7083:37;;;;;;;;2527:18524:49;;;;;;7083:37:51;;;;2527:18524:49;7083:37:51;;;;;;;;;;;;;;;;;7019:180;;13011:95:49;13136:91;7019:180:51;;13011:73:49;:36;;;:::i;:::-;2527:18524;;;;;;13050:34;;;:::i;:::-;2527:18524;;;;;;13011:73;;:::i;:::-;:95;:::i;:::-;13136:37;:75;:37;;;:::i;:::-;2527:18524;;;;;;13176:35;;;:::i;13136:75::-;:91;:::i;:::-;13307:22;;13343:16;;:20;;;;:35;;;12195:706;13339:242;;12195:706;13708:34;;13970:87;13708:34;13780:85;13819:46;14010:47;13708:34;13687:83;13708:34;;;:::i;:::-;2527:18524;;;;;;13695:47;;;13687:83;:::i;:::-;13831:34;;;:::i;:::-;2527:18524;;;;;;13819:46;;:::i;:::-;13780:36;;;:::i;:::-;:85;2527:18524;;;;;;;;;;;;;;;;;;;13780:85;13876:84;13897:35;;;:::i;13876:84::-;14022:35;;;:::i;14010:47::-;13970:37;;;:::i;:87::-;2527:18524;;;;28654:20:42;2527:18524:49;;;;;;;28716:21:42;2527:18524:49;;;28864:46:42;28826:14;28809:45;28826:14;28809;28826:28;28864:14;28826;;28881:29;28826:14;;:::i;:::-;2527:18524:49;;;;;;;;28826:28:42;:::i;:::-;28809:14;;:::i;:::-;:45;2527:18524:49;;;;;;;;;;;;;;;;;;;;;28809:45:42;28881:14;;;:::i;:::-;2527:18524:49;;;;;;;;28881:29:42;:::i;28864:46::-;7615:32:51;;;12195:706:49;7611:265:51;;;2527:18524:49;7664:13:51;2527:18524:49;7664:30:51;;;;;2527:18524:49;;;;;;;7664:30:51;;;;;2527:18524:49;7664:30:51;;2527:18524:49;7664:30:51;;2527:18524:49;7664:30:51;;;;;;;;;;;;;7611:265;7722:32;;;;;;;;2527:18524:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;14369:122;7611:265:51;2527:18524:49;7611:265:51;;14458:20:49;;;;:::i;:::-;2527:18524;;;;;;;;;;;;;;;;;;;;;;;;;14369:122;2527:18524;1505:66:31;2407:1;3553:21:51;3587:7;;;;3584:57;;7611:265;2527:18524:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3584:57:51;3608:33;;;;;;;;;;3584:57;3616:10;3608:33;;;;;3584:57;;;;3608:33;2527:18524:49;;;;;;;;;;3608:33:51;;;;;2527:18524:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7664:30:51;;;;;;;;:::i;:::-;2527:18524:49;;7664:30:51;;;;;;2527:18524:49;;;;7664:30:51;2527:18524:49;;;;;;;;;7664:30:51;2527:18524:49;;;7611:265:51;1306:37:26;2527:18524:49;8544:1067:26;8509:24;8544:1067;;;2527:18524:49;8544:1067:26;;2527:18524:49;8544:1067:26;2527:18524:49;8544:1067:26;2527:18524:49;8544:1067:26;;;;;;2527:18524:49;8544:1067:26;;;;;;;;7611:265:51;2527:18524:49;8544:1067:26;1305:38;1301:116;;14369:122:49;7611:265:51;2527:18524:49;7611:265:51;;;1301:116:26;2527:18524:49;1366:40:26;;;;;2527:18524:49;;1366:40:26;8544:1067;;2527:18524:49;8544:1067:26;;;;;;;;;;;;;;;;;-1:-1:-1;8544:1067:26;;;;;;;7615:32:51;7634:13;2527:18524:49;7634:13:51;2527:18524:49;7625:22:51;;7615:32;;2527:18524:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13339:242;14010:47;13408:26;;;13819:46;13438:9;13408:26;13970:87;13408:26;;13780:85;13408:26;;:::i;:::-;2527:18524;13474:14;;13470:101;;13339:242;;;;;;;;;13470:101;13508:48;:34;:48;:34;;;:::i;:::-;2527:18524;;;;;;;;;13508:48;:::i;:::-;2527:18524;;;;;;;;;;;;;;;;;;13508:48;13470:101;;13343:35;13367:11;;;;13343:35;;7083:37:51;;;;;2527:18524:49;7083:37:51;;:::i;:::-;2527:18524:49;;13011:95;7083:37:51;;;2527:18524:49;;;;;;;;;7019:180:51;2527:18524:49;1767:47:26;;;;;;;;;2527:18524:49;1767:47:26;;;2527:18524:49;1767:47:26;2527:18524:49;;10404:1148:26;;10365:28;10404:1148;;;2527:18524:49;10404:1148:26;7185:4:51;2527:18524:49;10404:1148:26;2527:18524:49;10404:1148:26;;;;2527:18524:49;;10404:1148:26;;;;;;;7019:180:51;2527:18524:49;10404:1148:26;2527:18524:49;;10404:1148:26;1766:48;1762:126;;7019:180:51;;;;;;;;13136:91:49;7019:180:51;13011:95:49;7019:180:51;;;1762:126:26;1837:40;;2527:18524:49;1837:40:26;2527:18524:49;;;;1837:40:26;10404:1148;;2527:18524:49;10404:1148:26;;;;;;;;;;;;;;;;;;;2527:18524:49;10404:1148:26;;;;;7023:45:51;7049:9;;;:19;;7023:45;;12195:706:49;2527:18524;;;12460:32;;12486:4;2527:18524;12460:32;;2527:18524;;;-1:-1:-1;2527:18524:49;;;;;12460:32;;;;;;;;;2527:18524;12460:32;;;12195:706;2527:18524;;;;2796:38:27;2527:18524:49;;;12526:62;2527:18524;12526:62;;;;;;;2527:18524;;;;;;12526:62;;;2527:18524;12526:62;;:::i;:::-;2796:38:27;;:::i;:::-;;2527:18524:49;;;;12761:32;;;;2527:18524;12761:32;;12486:4;2527:18524;12761:32;;2527:18524;12761:32;;;;;;;;2527:18524;12761:32;;;12195:706;12815:29;;;;;:::i;:::-;:52;2527:18524;;12195:706;;;13136:91;12195:706;13011:95;12195:706;;;2527:18524;;;;;;;;;;;;;;;;;;;;;;;12761:32;;;;;2527:18524;12761:32;;2527:18524;12761:32;;;;;;2527:18524;12761:32;;;:::i;:::-;;;2527:18524;;;;;;;;12815:29;12761:32;;;;;-1:-1:-1;12761:32:49;;12460;;;;2527:18524;12460:32;;2527:18524;12460:32;;;;;;2527:18524;12460:32;;;:::i;:::-;;;2527:18524;;;;;;;;2796:38:27;12460:32:49;;;;;-1:-1:-1;12460:32:49;;2527:18524;;;;;;;;;;;;;;;;;;;;;;;11623:44;11640:15;;;:27;;11623:44;;;2527:18524;;;;;;;;;;;;;;;;;;;;;;;3644:93:31;3696:30;2527:18524:49;3696:30:31;2527:18524:49;;3696:30:31;2527:18524:49;;;;;;;;;;;;;;;3019:13;2527:18524;;;;;;;;;;;;;;;;;:::i;:::-;;;735:10:28;;5541:19:36;5537:89;;2527:18524:49;;5639:21:36;;;5635:90;;735:10:28;2527:18524:49;;5734:11:36;2527:18524:49;;;;;;;;;;;;;;2407:1:31;2527:18524:49;;;;;5813:38:36;2527:18524:49;735:10:28;5813:38:36;;2527:18524:49;;;;;;;5635:90:36;5683:31;2527:18524:49;5683:31:36;2527:18524:49;;;;;5683:31:36;5537:89;5583:32;2527:18524:49;5583:32:36;2527:18524:49;;;;;5583:32:36;2527:18524:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;2527:18524:49;;-1:-1:-1;2527:18524:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2527:18524:49;;-1:-1:-1;2527:18524:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5403:6;2527:18524;;;;;;;5403:6;2527:18524;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4478:17;2527:18524;;;;;;;;4478:17;2527:18524;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;2527:18524:49;;;;;-1:-1:-1;2527:18524:49;;;;;;;;;;;;;;;;;;;;;:::o;:::-;12107:7;2527:18524;;;;;;12107:7;-1:-1:-1;2527:18524:49;;-1:-1:-1;2527:18524:49;;;-1:-1:-1;2527:18524:49;:::o;:::-;;;;;;;;;;;13011:19;2527:18524;;;;;;13011:19;-1:-1:-1;2527:18524:49;;-1:-1:-1;2527:18524:49;;;-1:-1:-1;2527:18524:49;:::o;:::-;13050:17;2527:18524;;;;;;13050:17;-1:-1:-1;2527:18524:49;;-1:-1:-1;2527:18524:49;;;-1:-1:-1;2527:18524:49;:::o;:::-;15757:6;2527:18524;;;;;;15757:6;-1:-1:-1;2527:18524:49;;-1:-1:-1;2527:18524:49;;;-1:-1:-1;2527:18524:49;:::o;:::-;3966:5:51;2527:18524:49;;;;;;3966:5:51;-1:-1:-1;2527:18524:49;;-1:-1:-1;2527:18524:49;;;-1:-1:-1;2527:18524:49;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2527:18524:49;;-1:-1:-1;2527:18524:49;;-1:-1:-1;2527:18524:49;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4879:289:51:-;;;2527:18524:49;4977:4:51;2527:18524:49;4977:4:51;2527:18524:49;;;;;;4977:12:51;;;;:::i;:::-;2527:18524:49;;-1:-1:-1;2527:18524:49;5005:9:51;2527:18524:49;;;-1:-1:-1;2527:18524:49;;5033:8:51;;;5029:133;;4879:289;;;:::o;5029:133::-;5097:20;;;;;:::i;:::-;2527:18524:49;-1:-1:-1;2527:18524:49;5005:9:51;2527:18524:49;;;;-1:-1:-1;2527:18524:49;2407:1:31;4879:289:51:o;15068:1761:49:-;;;;;;;;5432:32:51;15614::49;;;;:::i;:::-;15757:23;;;;;:::i;:::-;2527:18524;;;;;;5432:32:51;;:::i;:::-;2527:18524:49;-1:-1:-1;2527:18524:49;;;15799:26;2527:18524;;;3892:67:42;2527:18524:49;;;20990:5;2527:18524;;;;;:::i;:::-;3892:67:42;;:::i;:::-;16041:132:49;;;16265:66;16041:132;;16307:23;16041:132;16307:23;;:::i;:::-;2527:18524;;;;;;16265:66;;:::i;:::-;16415:11;-1:-1:-1;16436:27:49;;16477:10;;16473:118;;15068:1761;16643:22;;;2527:18524;;16797:24;5747:40:51;16797:24:49;;:::i;:::-;2527:18524;;;;;;5747:40:51;;:::i;:::-;15068:1761:49;:::o;2527:18524::-;;;;;;;;;;;;;;;;;;;;;;;16473:118;16513:35;;;;;;;;;:::i;:::-;16562:18;;;;;:::i;:::-;16473:118;;;;2527:18524;;;;;;;;;;;;;;;;;;;;;;;;;28826:11:42;2527:18524:49;;;;;;28826:11:42;-1:-1:-1;2527:18524:49;;;;;;;;;;;;;:::o;1110:300:36:-;2527:18524:49;;1193:18:36;;;1189:86;;2527:18524:49;;1288:16:36;;;1284:86;;2527:18524:49;1209:1:36;2527:18524:49;2025:9:36;2527:18524:49;;;1209:1:36;2527:18524:49;;2058:19:36;;;2054:115;;2527:18524:49;2801:32:36;2527:18524:49;;;;1209:1:36;2527:18524:49;2025:9:36;2527:18524:49;;;;1209:1:36;2527:18524:49;2407:1:31;2527:18524:49;1209:1:36;2527:18524:49;2025:9:36;2527:18524:49;;;1209:1:36;2527:18524:49;;;;;2407:1:31;;2527:18524:49;;;;;2801:32:36;1110:300::o;2054:115::-;2104:50;;1209:1;2104:50;;2527:18524:49;;;;;;1209:1:36;2104:50;1284:86;1327:32;1209:1;1327:32;1209:1;1327:32;2527:18524:49;;1209:1:36;1327:32;1189:86;1234:30;1209:1;1234:30;1209:1;1234:30;2527:18524:49;;1209:1:36;1234:30;640:170:46;2527:18524:49;699:6:46;2527:18524:49;;735:10:28;699:22:46;695:109;;640:170::o;695:109::-;744:49;699:6;744:49;735:10:28;744:49:46;2527:18524:49;;699:6:46;744:49;3887:138:51;3966:5;2527:18524:49;3966:17:51;3962:31;;4010:8;;;:::i;:::-;2527:18524:49;;;;;;3887:138:51;:::o;3962:31::-;3985:8;2527:18524:49;3985:8:51;:::o;4691:549:27:-;;-1:-1:-1;4691:549:27;;3417:129:30;;;;;;;;;;4874:72:27;;4691:549;4870:364;;;4969:25;;;;:::i;:::-;4962:32;:::o;4870:364::-;5011:223;;;2527:18524:49;5045:24:27;;-1:-1:-1;5045:24:27;2527:18524:49;5045:24:27;2527:18524:49;;-1:-1:-1;5045:24:27;5011:223;4463:73:30;5090:33:27;4463:73:30;;2527:18524:49;;;-1:-1:-1;2527:18524:49;;;;;5086:148:27;5204:19;-1:-1:-1;5204:19:27;;-1:-1:-1;5204:19:27;4874:72;-1:-1:-1;4463:73:30;4886:33:27;;;4874:72;4886:59;4923:18;;;:22;;4874:72;;4453:420:51;;4586:8;4555;4859:7;4453:420;4555:8;:::i;:::-;2527:18524:49;;;;;;4586:8:51;;:::i;903:262:53:-;;;1026:11;;1022:59;;1100:23;1143:15;1100:23;;;:::i;:::-;1143:15;;;:::i;1022:59::-;1053:17;1036:1;1053:17;;:::o;5893:600:51:-;6232:36;6059:40;;;;:::i;:::-;6232:36;;;:::i;:::-;2527:18524:49;;;;;;6381:30:51;6377:82;;5893:600;:::o;6377:82::-;6447:1;2527:18524:49;;;;;;;6427:21:51;:::o;403:228:53:-;;494:11;;490:25;;585:10;;;:::i;:::-;598:9;2527:18524:49;;;;;;;;;;;;;;;598:9:53;2527:18524:49;;403:228:53;:::o;490:25::-;507:8;;2527:18524:49;507:8:53;:::o;3165:696:27:-;;-1:-1:-1;3165:696:27;;832:128:30;;;;;;;;;;;3495:72:27;;3491:364;;;3590:25;;;;:::i;3517:219:0:-;;2527:18524:49;;;;;;805:35:0;3652:19;;;:42;;;3517:219;958:34;;;2527:18524:49;;3517:219:0;:::o;3652:42::-;3675:19;958:34;3675:19;;;3652:42;;3949:219;;2527:18524:49;;;;;;805:35:0;4084:19;;;:42;;;958:34;;;2527:18524:49;;3949:219:0;:::o;4625:334:30:-;4701:252;;;;;;;;;;;;;;;;;;;4625:334::o;8689:233:0:-;8790:6;;958:34;;23319:50;23314:55;;23319:50;;2527:18524:49;23388:13:0;2527:18524:49;23394:2:0;2527:18524:49;23388:13:0;:::i;:::-;24377:34;24367:44;;958:34;;24377;2527:18524:49;958:34:0;8851:29;;958:34;;2527:18524:49;;8689:233:0;:::o;23310:1040::-;23438:3;2527:18524:49;;;;;23486:17:0;23492:11;23486:17;;;23482:48;;23310:1040;23746:3;23543:13;23549:7;23811:45;23543:13;;;23539:44;;23310:1040;23602:5;23596:11;;;23592:40;;23310:1040;23651:4;23645:10;;;23641:39;;23310:1040;23699:3;23693:9;;;23689:38;;23310:1040;23740:9;;23736:23;;23310:1040;2527:18524:49;23836:1:0;2527:18524:49;;;;;;;;;;;;23811:45:0;:::i;:::-;23875:44;23885:34;23875:44;;958:34;;2527:18524:49;23959:3:0;2527:18524:49;;;23996:38:0;23885:34;23996:38;;2527:18524:49;;24046:21:0;;2527:18524:49;24095:2:0;2527:18524:49;24112:7:0;;;;24108:20;;23310:1040;2527:18524:49;;;;23959:3:0;2527:18524:49;24221:7:0;;;;24217:20;;23310:1040;23959:3;2527:18524:49;24313:15:0;2527:18524:49;;24331:6:0;2527:18524:49;;24331:6:0;:::i;:::-;24313:28;;2527:18524:49;23310:1040:0;;24313:28;;;;23836:1;24313:28;;;24217:20;2527:18524:49;;;24217:20:0;;;24108;2527:18524:49;;;-1:-1:-1;24108:20:0;;;23736:23;23758:1;2527:18524:49;23736:23:0;;23689:38;2527:18524:49;;;;;;23689:38:0;;23641:39;23666:1;2527:18524:49;;;;;23641:39:0;;23592:40;23618:1;2527:18524:49;;;;;23592:40:0;;23539:44;23567:2;2527:18524:49;;;;;23539:44:0;;23482:48;-1:-1:-1;;2527:18524:49;;;;;23482:48:0;;6267:513;6363:6;;6359:20;;2527:18524:49;;;6397:6:0;;958:34;;6455;6451:38;;2527:18524:49;;6495:2:0;2527:18524:49;;6547:3:0;2527:18524:49;;6575:50:0;6569:56;;958:34;;6495:2;2527:18524:49;;;6661:85:0;;958:34;;2527:18524:49;6267:513:0;:::o;41100:19:42:-;2527:18524:49;;41100:19:42;;;;;;;;;;;;:::o;5271:3068::-;;2527:18524:49;;5271:3068:42;;;;;;;;2527:18524:49;41642:10:42;2527:18524:49;;41654:20:42;;;;;41700:23;2527:18524:49;41710:12:42;;;;;:::i;:::-;41100:19;2527:18524:49;;41700:23:42;;:::i;:::-;2527:18524:49;;41642:10:42;;;41654:20;;;;;;;;;;;2527:18524:49;;;;5760:22:42;2527:18524:49;;;5830:21:42;;;:::i;:::-;5942:25;2527:18524:49;;;7136:6:0;;958:34;;2527:18524:49;;7206:19:0;805:35;7206:19;;;:42;;;41637:128:42;958:34:0;;;6060:40:42;41316:20;2527:18524:49;6060:30:42;:12;2527:18524:49;;;6060:12:42;;;;;:::i;:::-;41100:19;2527:18524:49;;6077:12:42;;;;:::i;:::-;41100:19;2527:18524:49;;6060:30:42;;:::i;:::-;:40;:::i;:::-;41316:20;:::i;:::-;2527:18524:49;;;;6380:22:42;2527:18524:49;6380:22:42;;6376:991;;41637:128;7471:11;;;;;;:::i;:::-;2527:18524:49;;;41225:20:42;7582:19;;41225:20;;805:35:0;9170:14;958:34;;41316:20:42;2527:18524:49;;;;;41316:20:42;:::i;:::-;2527:18524:49;;;;4084:19:0;805:35;4084:19;;;:42;;;41637:128:42;958:34:0;;;7883:22:42;2527:18524:49;;;7883:22:42;;:::i;:::-;2527:18524:49;;;;805:35:0;3652:19;;;:42;;;41637:128:42;958:34:0;;;2527:18524:49;;8021:18:42;2527:18524:49;8021:18:42;;;8017:112;;41408:19;;;8195:14;41408:19;;:::i;:::-;8195:14;;:::i;:::-;2527:18524:49;;;;;8279:14:42;;8275:58;;5271:3068::o;8275:58::-;2527:18524:49;;-1:-1:-1;2527:18524:49;;-1:-1:-1;8309:13:42:o;8017:112::-;8069:12;;;;;;;:::i;:::-;41100:19;2527:18524:49;;8095:23:42;:::o;3652:42:0:-;3675:19;958:34;3675:19;;;3652:42;;4084;4107:19;958:34;4107:19;;;4084:42;;41225:20:42;;7182:2:0;2527:18524:49;41225:20:42;;;;;;;;;;;;2527:18524:49;41225:20:42;2527:18524:49;;;41225:20:42;;;;;;;6376:991;2527:18524:49;;;;;;6542:16:42;;;;6538:98;;7136:6:0;;958:34;;7182:2;2527:18524:49;;;;805:35:0;7206:19;;;:42;;;6376:991:42;958:34:0;;;2527:18524:49;;;6806:28:42;;41100:19;;;41408;6990:18;41408:19;;:::i;:::-;6990:18;;:::i;:::-;2527:18524:49;;;;;;;7116:12:42;7112:245;7116:12;;;7148:19;;7471:11;7148:19;;7112:245;6376:991;;;;;7112:245;7471:11;7112:245;;;;;;41100:19;;7182:2:0;2527:18524:49;41100:19:42;;;;;;;;;;;;2527:18524:49;41100:19:42;2527:18524:49;;;41100:19:42;;7206:42:0;7229:19;958:34;7229:19;;;7206:42;;6538:98:42;6578:43;7182:2:0;2527:18524:49;6578:43:42;;;41100:19;6578:43;;;41100:19;;;;;2527:18524:49;41100:19:42;2527:18524:49;;;41100:19:42;;;;;;6578:43;7206:42:0;7229:19;958:34;7229:19;;;7206:42;;2527:18524:49;;;;;;;;;;;;;;;;;;;;;;;4395:225:0;;2527:18524:49;;;;;;4517:2:0;2527:18524:49;805:35:0;4536:19;;;:42;;;958:34;;;2527:18524:49;;4395:225:0;:::o;22569:296::-;2527:18524:49;;22661:20:0;22657:24;;958:34;;;22711:21;22707:25;;22703:39;;22810:35;22771:83;2527:18524:49;;22849:3:0;2527:18524:49;;;22771:83:0;:::i;15150:221::-;2527:18524:49;;15241:1:0;15237:5;;958:34;;;15241:1;14261:13;;14292:19;14286:25;;;14282:56;;15150:221;14349:17;14355:11;14599:3;14349:17;;;14345:48;;15150:221;14410:7;14404:13;;;14400:44;;15150:221;14461:5;14455:11;;;14451:40;;15150:221;14508:4;14502:10;;;14498:39;;15150:221;14554:3;14548:9;;;14544:38;;15150:221;14593:9;;14589:23;;15150:221;2527:18524:49;;;14675:2:0;2527:18524:49;;14737:3:0;2527:18524:49;;14760:31:0;14773:18;14755:176;14793:7;15241:1;14793:7;;;;2527:18524:49;15317:34:0;2527:18524:49;;;;;15355:3:0;2527:18524:49;15150:221:0;:::o;14802:9::-;2527:18524:49;;;;;;;;14737:3:0;2527:18524:49;;;;;;14802:9:0;14810:1;2527:18524:49;14760:31:0;;;;14589:23;2527:18524:49;14611:1:0;2527:18524:49;14589:23:0;;;14544:38;2527:18524:49;;;;;;14544:38:0;;14498:39;14523:1;2527:18524:49;;;;;14498:39:0;;14451:40;14477:1;2527:18524:49;;;;;14451:40:0;;14400:44;14428:2;2527:18524:49;;;;;14400:44:0;;14345:48;14377:2;2527:18524:49;;;;;14345:48:0;;14282:56;-1:-1:-1;14322:2:0;;-1:-1:-1;2527:18524:49;;;14282:56:0;;15549:6841;2527:18524:49;;;15643:20:0;15639:24;;958:34;;;15693:21;15689:25;;15685:39;;15763:34;15810:22;2527:18524:49;15814:18:0;15810:22;;2527:18524:49;;15810:26:0;15806:100;;15549:6841;2527:18524:49;15922:18:0;15918:22;;2527:18524:49;;15918:26:0;15914:100;;15549:6841;2527:18524:49;16030:18:0;16026:22;;2527:18524:49;;16026:26:0;16022:100;;15549:6841;2527:18524:49;16138:18:0;16134:22;;2527:18524:49;;16134:26:0;16130:100;;15549:6841;2527:18524:49;16246:17:0;16242:21;;2527:18524:49;;16242:25:0;16238:99;;15549:6841;2527:18524:49;16353:17:0;16349:21;;2527:18524:49;;16349:25:0;16345:99;;15549:6841;2527:18524:49;16460:17:0;16456:21;;2527:18524:49;;16456:25:0;16452:99;;15549:6841;2527:18524:49;16567:17:0;16563:21;;2527:18524:49;;16563:25:0;16559:99;;15549:6841;2527:18524:49;16674:16:0;16670:20;;2527:18524:49;;16670:24:0;16666:98;;15549:6841;2527:18524:49;16780:16:0;16776:20;;2527:18524:49;;16776:24:0;16772:98;;15549:6841;2527:18524:49;16886:16:0;16882:20;;2527:18524:49;;16882:24:0;16878:98;;15549:6841;2527:18524:49;16992:16:0;16988:20;;2527:18524:49;;16988:24:0;16984:98;;15549:6841;2527:18524:49;17098:15:0;17094:19;;2527:18524:49;;17094:23:0;17090:97;;15549:6841;2527:18524:49;17203:15:0;17199:19;;2527:18524:49;;17199:23:0;17195:97;;15549:6841;2527:18524:49;17308:15:0;17304:19;;2527:18524:49;;17304:23:0;17300:97;;15549:6841;2527:18524:49;17413:15:0;17409:19;;2527:18524:49;;17409:23:0;17405:97;;15549:6841;2527:18524:49;17518:14:0;17514:18;;2527:18524:49;;17514:22:0;17510:96;;15549:6841;2527:18524:49;17622:14:0;17618:18;;2527:18524:49;;17618:22:0;17614:96;;15549:6841;2527:18524:49;17726:14:0;17722:18;;2527:18524:49;;17722:22:0;17718:96;;15549:6841;2527:18524:49;17830:14:0;17826:18;;2527:18524:49;;17826:22:0;17822:96;;15549:6841;2527:18524:49;17934:13:0;17930:17;;2527:18524:49;;17930:21:0;17926:95;;15549:6841;2527:18524:49;18037:13:0;18033:17;;2527:18524:49;;18033:21:0;18029:95;;15549:6841;2527:18524:49;18140:13:0;18136:17;;2527:18524:49;;18136:21:0;18132:95;;15549:6841;2527:18524:49;18243:13:0;18239:17;;2527:18524:49;;18239:21:0;18235:95;;15549:6841;2527:18524:49;18346:12:0;18342:16;;2527:18524:49;;18342:20:0;18338:94;;15549:6841;2527:18524:49;18448:12:0;18444:16;;2527:18524:49;;18444:20:0;18440:94;;15549:6841;2527:18524:49;18550:12:0;18546:16;;2527:18524:49;;18546:20:0;18542:94;;15549:6841;2527:18524:49;18652:12:0;18648:16;;2527:18524:49;;18648:20:0;18644:94;;15549:6841;2527:18524:49;18754:11:0;18750:15;;2527:18524:49;;18750:19:0;18746:93;;15549:6841;2527:18524:49;18855:11:0;18851:15;;2527:18524:49;;18851:19:0;18847:93;;15549:6841;2527:18524:49;18956:11:0;18952:15;;2527:18524:49;;18952:19:0;18948:93;;15549:6841;2527:18524:49;19057:11:0;19053:15;;2527:18524:49;;19053:19:0;19049:93;;15549:6841;2527:18524:49;19158:10:0;19154:14;;2527:18524:49;;19154:18:0;19150:92;;15549:6841;2527:18524:49;19258:10:0;19254:14;;2527:18524:49;;19254:18:0;19250:92;;15549:6841;2527:18524:49;19358:10:0;19354:14;;2527:18524:49;;19354:18:0;19350:92;;15549:6841;2527:18524:49;19458:10:0;19454:14;;2527:18524:49;;19454:18:0;19450:92;;15549:6841;2527:18524:49;19558:9:0;19554:13;;2527:18524:49;;19554:17:0;19550:91;;15549:6841;2527:18524:49;19657:9:0;19653:13;;2527:18524:49;;19653:17:0;19649:91;;15549:6841;2527:18524:49;19756:9:0;19752:13;;2527:18524:49;;19752:17:0;19748:91;;15549:6841;2527:18524:49;19855:9:0;19851:13;;2527:18524:49;;19851:17:0;19847:91;;15549:6841;2527:18524:49;19954:8:0;19950:12;;2527:18524:49;;19950:16:0;19946:90;;15549:6841;2527:18524:49;20052:8:0;20048:12;;2527:18524:49;;20048:16:0;20044:90;;15549:6841;2527:18524:49;20150:8:0;20146:12;;2527:18524:49;;20146:16:0;20142:90;;15549:6841;2527:18524:49;20248:8:0;20244:12;;2527:18524:49;;20244:16:0;20240:90;;15549:6841;2527:18524:49;20346:7:0;20342:11;;2527:18524:49;;20342:15:0;20338:89;;15549:6841;2527:18524:49;20443:7:0;20439:11;;2527:18524:49;;20439:15:0;20435:89;;15549:6841;2527:18524:49;20540:7:0;20536:11;;2527:18524:49;;20536:15:0;20532:89;;15549:6841;2527:18524:49;20637:7:0;20633:11;;2527:18524:49;;20633:15:0;20629:89;;15549:6841;2527:18524:49;20734:6:0;20730:10;;2527:18524:49;;20730:14:0;20726:88;;15549:6841;2527:18524:49;20830:6:0;20826:10;;2527:18524:49;;20826:14:0;20822:88;;15549:6841;2527:18524:49;20926:6:0;20922:10;;2527:18524:49;;20922:14:0;20918:88;;15549:6841;2527:18524:49;21022:6:0;21018:10;;2527:18524:49;;21018:14:0;21014:88;;15549:6841;2527:18524:49;21118:5:0;21114:9;;2527:18524:49;;21114:13:0;21110:87;;15549:6841;2527:18524:49;21213:5:0;21209:9;;2527:18524:49;;21209:13:0;21205:87;;15549:6841;2527:18524:49;21308:5:0;21304:9;;2527:18524:49;;21304:13:0;21300:87;;15549:6841;2527:18524:49;21403:5:0;21399:9;;2527:18524:49;;21399:13:0;21395:87;;15549:6841;2527:18524:49;21498:4:0;21494:8;;2527:18524:49;;21494:12:0;21490:86;;15549:6841;2527:18524:49;21592:4:0;21588:8;;2527:18524:49;;21588:12:0;21584:86;;15549:6841;2527:18524:49;21686:4:0;21682:8;;2527:18524:49;;21682:12:0;21678:86;;15549:6841;2527:18524:49;21780:4:0;21776:8;;2527:18524:49;;21776:12:0;21772:86;;15549:6841;2527:18524:49;21874:3:0;21870:7;;2527:18524:49;;21870:11:0;21866:85;;15549:6841;2527:18524:49;21967:3:0;21963:7;;2527:18524:49;;21963:11:0;21959:85;;15549:6841;2527:18524:49;22060:3:0;22056:7;;2527:18524:49;;22056:11:0;22052:85;;15549:6841;22153:3;2527:18524:49;22149:7:0;;2527:18524:49;;22149:11:0;22145:85;;15549:6841;21592:4;2527:18524:49;;;22267:2:0;2527:18524:49;;;;958:34:0;22300:38;;958:34;;2527:18524:49;;15549:6841:0;:::o;22145:85::-;2527:18524:49;22188:35:0;2527:18524:49;21498:4:0;2527:18524:49;22145:85:0;;;22052;22095:35;2527:18524:49;;;21498:4:0;2527:18524:49;;22052:85:0;;21959;2527:18524:49;22002:35:0;2527:18524:49;21498:4:0;2527:18524:49;21959:85:0;;;21866;2527:18524:49;21909:35:0;2527:18524:49;21498:4:0;2527:18524:49;21866:85:0;;;21772:86;2527:18524:49;21816:35:0;2527:18524:49;21498:4:0;2527:18524:49;21772:86:0;;;21678;2527:18524:49;21722:35:0;2527:18524:49;21498:4:0;2527:18524:49;21678:86:0;;;21584;2527:18524:49;21628:35:0;2527:18524:49;21498:4:0;2527:18524:49;21584:86:0;;;21490;2527:18524:49;21534:35:0;2527:18524:49;21498:4:0;2527:18524:49;21490:86:0;;;21395:87;2527:18524:49;21440:35:0;2527:18524:49;21479:3:0;2527:18524:49;21395:87:0;;;21300;2527:18524:49;21345:35:0;2527:18524:49;21384:3:0;2527:18524:49;21300:87:0;;;21205;2527:18524:49;21250:35:0;2527:18524:49;21289:3:0;2527:18524:49;21205:87:0;;;21110;2527:18524:49;21155:35:0;2527:18524:49;21194:3:0;2527:18524:49;21110:87:0;;;21014:88;2527:18524:49;21060:35:0;2527:18524:49;21099:3:0;2527:18524:49;21014:88:0;;;20918;2527:18524:49;20964:35:0;2527:18524:49;21003:3:0;2527:18524:49;20918:88:0;;;20822;2527:18524:49;20868:35:0;2527:18524:49;20907:3:0;2527:18524:49;20822:88:0;;;20726;2527:18524:49;20772:35:0;2527:18524:49;20811:3:0;2527:18524:49;20726:88:0;;;20629:89;2527:18524:49;20676:35:0;2527:18524:49;20715:3:0;2527:18524:49;20629:89:0;;;20532;2527:18524:49;20579:35:0;2527:18524:49;20618:3:0;2527:18524:49;20532:89:0;;;20435;2527:18524:49;20482:35:0;2527:18524:49;20521:3:0;2527:18524:49;20435:89:0;;;20338;2527:18524:49;20385:35:0;2527:18524:49;20424:3:0;2527:18524:49;20338:89:0;;;20240:90;2527:18524:49;20288:35:0;2527:18524:49;20327:3:0;2527:18524:49;20240:90:0;;;20142;2527:18524:49;20190:35:0;2527:18524:49;20229:3:0;2527:18524:49;20142:90:0;;;20044;2527:18524:49;20092:35:0;2527:18524:49;20131:3:0;2527:18524:49;20044:90:0;;;19946;2527:18524:49;19994:35:0;2527:18524:49;20033:3:0;2527:18524:49;19946:90:0;;;19847:91;2527:18524:49;19896:35:0;2527:18524:49;19935:3:0;2527:18524:49;19847:91:0;;;19748;2527:18524:49;19797:35:0;2527:18524:49;19836:3:0;2527:18524:49;19748:91:0;;;19649;2527:18524:49;19698:35:0;2527:18524:49;19737:3:0;2527:18524:49;19649:91:0;;;19550;2527:18524:49;19599:35:0;2527:18524:49;19638:3:0;2527:18524:49;19550:91:0;;;19450:92;2527:18524:49;19500:35:0;2527:18524:49;19539:3:0;2527:18524:49;19450:92:0;;;19350;2527:18524:49;19400:35:0;2527:18524:49;19439:3:0;2527:18524:49;19350:92:0;;;19250;2527:18524:49;19300:35:0;2527:18524:49;19339:3:0;2527:18524:49;19250:92:0;;;19150;2527:18524:49;19200:35:0;2527:18524:49;19239:3:0;2527:18524:49;19150:92:0;;;19049:93;2527:18524:49;19100:35:0;2527:18524:49;19139:3:0;2527:18524:49;19049:93:0;;;18948;2527:18524:49;18999:35:0;2527:18524:49;19038:3:0;2527:18524:49;18948:93:0;;;18847;2527:18524:49;18898:35:0;2527:18524:49;18937:3:0;2527:18524:49;18847:93:0;;;18746;2527:18524:49;18797:35:0;2527:18524:49;18836:3:0;2527:18524:49;18746:93:0;;;18644:94;2527:18524:49;18696:35:0;2527:18524:49;18735:3:0;2527:18524:49;18644:94:0;;;18542;2527:18524:49;18594:35:0;2527:18524:49;18633:3:0;2527:18524:49;18542:94:0;;;18440;2527:18524:49;18492:35:0;2527:18524:49;18531:3:0;2527:18524:49;18440:94:0;;;18338;2527:18524:49;18390:35:0;2527:18524:49;18429:3:0;2527:18524:49;18338:94:0;;;18235:95;2527:18524:49;18288:35:0;2527:18524:49;18327:3:0;2527:18524:49;18235:95:0;;;18132;2527:18524:49;18185:35:0;2527:18524:49;18224:3:0;2527:18524:49;18132:95:0;;;18029;2527:18524:49;18082:35:0;2527:18524:49;18121:3:0;2527:18524:49;18029:95:0;;;17926;2527:18524:49;17979:35:0;2527:18524:49;18018:3:0;2527:18524:49;17926:95:0;;;17822:96;2527:18524:49;17876:35:0;2527:18524:49;17915:3:0;2527:18524:49;17822:96:0;;;17718;2527:18524:49;17772:35:0;2527:18524:49;17811:3:0;2527:18524:49;17718:96:0;;;17614;2527:18524:49;17668:35:0;2527:18524:49;17707:3:0;2527:18524:49;17614:96:0;;;17510;2527:18524:49;17564:35:0;2527:18524:49;17603:3:0;2527:18524:49;17510:96:0;;;17405:97;2527:18524:49;17460:35:0;2527:18524:49;17499:3:0;2527:18524:49;17405:97:0;;;17300;2527:18524:49;17355:35:0;2527:18524:49;17394:3:0;2527:18524:49;17300:97:0;;;17195;2527:18524:49;17250:35:0;2527:18524:49;17289:3:0;2527:18524:49;17195:97:0;;;17090;2527:18524:49;17145:35:0;2527:18524:49;17184:3:0;2527:18524:49;17090:97:0;;;16984:98;2527:18524:49;17040:35:0;2527:18524:49;17079:3:0;2527:18524:49;16984:98:0;;;16878;2527:18524:49;16934:35:0;2527:18524:49;16973:3:0;2527:18524:49;16878:98:0;;;16772;2527:18524:49;16828:35:0;2527:18524:49;16867:3:0;2527:18524:49;16772:98:0;;;16666;2527:18524:49;16722:35:0;2527:18524:49;16761:3:0;2527:18524:49;16666:98:0;;;16559:99;2527:18524:49;16616:35:0;2527:18524:49;16655:3:0;2527:18524:49;16559:99:0;;;16452;2527:18524:49;16509:35:0;2527:18524:49;16548:3:0;2527:18524:49;16452:99:0;;;16345;2527:18524:49;16402:35:0;2527:18524:49;16441:3:0;2527:18524:49;16345:99:0;;;16238;2527:18524:49;16295:35:0;2527:18524:49;16334:3:0;2527:18524:49;16238:99:0;;;16130:100;2527:18524:49;16188:35:0;2527:18524:49;16227:3:0;2527:18524:49;16130:100:0;;;16022;2527:18524:49;16080:35:0;2527:18524:49;16119:3:0;2527:18524:49;16022:100:0;;;15914;2527:18524:49;15972:35:0;2527:18524:49;16011:3:0;2527:18524:49;15914:100:0;;;15806;2527:18524:49;;-1:-1:-1;15806:100:0;","linkReferences":{},"immutableReferences":{"48761":[{"start":3859,"length":32},{"start":3967,"length":32}],"48798":[{"start":4936,"length":32},{"start":5798,"length":32}],"48809":[{"start":1452,"length":32},{"start":3157,"length":32},{"start":4189,"length":32},{"start":4974,"length":32},{"start":5310,"length":32},{"start":7063,"length":32}],"48833":[{"start":791,"length":32},{"start":1527,"length":32}],"48846":[{"start":2053,"length":32},{"start":2674,"length":32}],"50149":[{"start":6845,"length":32},{"start":7438,"length":32},{"start":8289,"length":32},{"start":9663,"length":32}]}},"methodIdentifiers":{"LMSR()":"476e44b6","allProtocolFeesOwed()":"017504b6","allTokens()":"6ff97f1d","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(address,address,uint256,uint256,bool)":"6863f5bc","burnSwap(address,address,uint256,uint256,uint256,bool)":"491e7998","collectProtocolFees()":"a1af5b9a","decimals()":"313ce567","denominators()":"017cf661","fee(uint256,uint256)":"939f5ea4","fees()":"9af1d35a","flashFeePpm()":"31596a6a","flashLoan(address,address,uint256,bytes)":"5cffe9de","getToken(uint256)":"e4b50cb8","initialMint(address,uint256)":"6d8d0ff3","kappa()":"6bba3f2f","kill()":"41c0e1b5","killed()":"1f3a0e41","mint(address,address,uint256,uint256)":"b3f1c93d","mintImpl()":"f0d1ae4f","name()":"06fdde03","numTokens()":"8e499bcf","owner()":"8da5cb5b","protocolFeeAddress()":"cce516b7","protocolFeePpm()":"6b4082d1","renounceOwnership()":"715018a6","setProtocolFeeAddress(address)":"6b7b9112","swap(address,bytes4,address,uint256,uint256,uint256,int128,uint256,bool)":"0eeee627","swapAmounts(uint256,uint256,uint256,int128)":"d516b8c6","swapMint(address,address,uint256,uint256,uint256)":"cb717f3a","swapMintImpl()":"95176066","swapToLimit(address,address,uint256,uint256,int128,uint256,bool)":"79a68d53","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b","wrapperToken()":"0d246214"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens_\",\"type\":\"address[]\"},{\"internalType\":\"int128\",\"name\":\"kappa_\",\"type\":\"int128\"},{\"internalType\":\"uint256[]\",\"name\":\"fees_\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"flashFeePpm_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolFeePpm_\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"protocolFeeAddress_\",\"type\":\"address\"},{\"internalType\":\"contract NativeWrapper\",\"name\":\"wrapperToken_\",\"type\":\"address\"},{\"internalType\":\"contract PartyPoolSwapImpl\",\"name\":\"swapImpl_\",\"type\":\"address\"},{\"internalType\":\"contract PartyPoolMintImpl\",\"name\":\"mintImpl_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpBurned\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFee\",\"type\":\"uint256\"}],\"name\":\"BurnSwap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC3156FlashBorrower\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFee\",\"type\":\"uint256\"}],\"name\":\"Flash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Killed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpMinted\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"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\":[],\"name\":\"ProtocolFeesCollected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFee\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFee\",\"type\":\"uint256\"}],\"name\":\"SwapMint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"LMSR\",\"outputs\":[{\"components\":[{\"internalType\":\"int128\",\"name\":\"kappa\",\"type\":\"int128\"},{\"internalType\":\"int128[]\",\"name\":\"qInternal\",\"type\":\"int128[]\"}],\"internalType\":\"struct LMSRStabilized.State\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allProtocolFeesOwed\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allTokens\",\"outputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"withdrawAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"name\":\"burnSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outFee\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectProtocolFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"denominators\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"j\",\"type\":\"uint256\"}],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fees\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"flashFeePpm\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC3156FlashBorrower\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenAddr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flashLoan\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"}],\"name\":\"getToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpTokens\",\"type\":\"uint256\"}],\"name\":\"initialMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lpMinted\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kappa\",\"outputs\":[{\"internalType\":\"int128\",\"name\":\"\",\"type\":\"int128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kill\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpTokenAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lpMinted\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintImpl\",\"outputs\":[{\"internalType\":\"contract PartyPoolMintImpl\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"numTokens\",\"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\":\"protocolFeeAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolFeePpm\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeAddress\",\"type\":\"address\"}],\"name\":\"setProtocolFeeAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"int128\",\"name\":\"limitPrice\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inFee\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"inputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"int128\",\"name\":\"limitPrice\",\"type\":\"int128\"}],\"name\":\"swapAmounts\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountInUsed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lpMinted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inFee\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"swapMintImpl\",\"outputs\":[{\"internalType\":\"contract PartyPoolSwapImpl\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"int128\",\"name\":\"limitPrice\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"name\":\"swapToLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountInUsed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inFee\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wrapperToken\",\"outputs\":[{\"internalType\":\"contract NativeWrapper\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"The contract stores per-token uint `_bases` used to scale token units into the internal Q64.64 representation used by the LMSR library. Cached on-chain uint balances are kept to reduce balanceOf() calls. The contract uses ceiling/floor rules described in function comments to bias rounding in favor of the pool (i.e., floor outputs to users, ceil inputs/fees where appropriate). Mutating methods have re-entrancy locks. The contract may be \\\"killed\\\" by the admin in case any security issue is discovered, in which case all swaps and mints are disabled, and only the burn() method remains functional to allow LP's to withdraw their assets.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"ProtocolFeesCollected()\":{\"details\":\"After collection, the protocolFee accounting array will be zeroed out.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"burn(address,address,uint256,uint256,bool)\":{\"details\":\"This function forwards the call to the burn implementation via delegatecall\",\"params\":{\"deadline\":\"timestamp after which the transaction will revert. Pass 0 to ignore.\",\"lpAmount\":\"amount of LP tokens to burn (proportional withdrawal)\",\"payer\":\"address that provides the LP tokens to burn\",\"receiver\":\"address that receives the withdrawn tokens\",\"unwrap\":\"if true and the native token is being withdrawn, it is unwraped and sent as native currency\"}},\"burnSwap(address,address,uint256,uint256,uint256,bool)\":{\"details\":\"The function burns LP tokens (authorization via allowance if needed), sends the single-asset payout and updates LMSR state.\",\"params\":{\"deadline\":\"optional deadline\",\"lpAmount\":\"amount of LP tokens to burn\",\"outputTokenIndex\":\"index of target asset to receive\",\"payer\":\"who burns LP tokens\",\"receiver\":\"who receives the single asset\"},\"returns\":{\"amountOut\":\"uint amount of asset outputTokenIndex sent to receiver\",\"outFee\":\"uint amount of output asset kept by the LP's and protocol as a fee\"}},\"collectProtocolFees()\":{\"details\":\"Anyone can call; must have protocolFeeAddress != address(0) to be operational.\"},\"constructor\":{\"params\":{\"fees_\":\"per-asset swap fees in ppm (length must equal tokens_.length)\",\"flashFeePpm_\":\"fee in parts-per-million, taken for flash loans\",\"kappa_\":\"liquidity parameter \\u03ba (Q64.64) used to derive b = \\u03ba * S(q)\",\"mintImpl_\":\"address of the Mint implementation contract\",\"name_\":\"LP token name\",\"owner_\":\"Admin account that can disable the vault using kill()\",\"swapImpl_\":\"address of the SwapMint implementation contract\",\"symbol_\":\"LP token symbol\",\"tokens_\":\"token addresses (n)\"}},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` _tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"denominators()\":{\"details\":\"denominators()[i] is the base for tokens[i]. These bases are chosen by deployer and must match token decimals.\"},\"flashLoan(address,address,uint256,bytes)\":{\"details\":\"Initiate a flash loan.\",\"params\":{\"amount\":\"The amount of tokens lent.\",\"data\":\"Arbitrary data structure, intended to contain user-defined parameters.\",\"receiver\":\"The receiver of the tokens in the loan, and the receiver of the callback.\",\"token\":\"The loan currency.\"}},\"getToken(uint256)\":{\"details\":\"tokens[i] corresponds to the i-th asset and maps to index i in the internal LMSR arrays.\"},\"initialMint(address,uint256)\":{\"details\":\"Assumes tokens have already been transferred to the pool prior to calling. Can only be called when the pool is uninitialized (totalSupply() == 0 or _lmsr.nAssets == 0).\",\"params\":{\"lpTokens\":\"The number of LP tokens to issue for this mint. If 0, then the number of tokens returned will equal the LMSR internal q total\",\"receiver\":\"address that receives the LP tokens\"}},\"kappa()\":{\"details\":\"Pools are constructed with a \\u03ba value; this getter exposes the \\u03ba used by the pool.\"},\"mint(address,address,uint256,uint256)\":{\"details\":\"This function forwards the call to the mint implementation via delegatecall\",\"params\":{\"deadline\":\"timestamp after which the transaction will revert. Pass 0 to ignore.\",\"lpTokenAmount\":\"desired amount of LP _tokens to mint\",\"payer\":\"address that provides the input _tokens\",\"receiver\":\"address that receives the LP _tokens\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"protocolFeePpm()\":{\"details\":\"This is the fraction (in ppm) of the pool-collected fees that are owed to the protocol.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"swap(address,bytes4,address,uint256,uint256,uint256,int128,uint256,bool)\":{\"details\":\"This function transfers the exact gross input (including fee) from payer and sends the computed output to receiver. Non-standard tokens (fee-on-transfer, rebasers) are rejected via balance checks.\",\"params\":{\"deadline\":\"timestamp after which the transaction will revert. Pass 0 to ignore.\",\"inputTokenIndex\":\"index of input asset\",\"limitPrice\":\"maximum acceptable marginal price (64.64 fixed point). Pass 0 to ignore.\",\"maxAmountIn\":\"maximum amount of token inputTokenIndex (uint256) to transfer in (inclusive of fees)\",\"outputTokenIndex\":\"index of output asset\",\"payer\":\"address of the account that pays for the swap\",\"receiver\":\"address that will receive the output tokens\",\"selector\":\"If zero, then regular ERC20 approvals must be given by the payere to the pool to move the required input amount. If this selector is nonzero, then a callback style funding mechanism is used where the given selector is invoked on the payer, passing the arguments of (address inputToken, uint256 inputAmount). The callback function must send the given amount of input coin to the pool in ordr to continue the swap transaction, otherwise \\\"Insufficient funds\\\" is thrown.\"},\"returns\":{\"amountIn\":\"actual input used (uint256), amountOut actual output sent (uint256), inFee fee taken from the input (uint256)\"}},\"swapAmounts(uint256,uint256,uint256,int128)\":{\"params\":{\"inputTokenIndex\":\"index of input token\",\"limitPrice\":\"maximum acceptable marginal price (pass 0 to ignore)\",\"maxAmountIn\":\"maximum gross input allowed (inclusive of fee)\",\"outputTokenIndex\":\"index of output token\"},\"returns\":{\"amountIn\":\"gross input amount to transfer (includes fee), amountOut output amount user would receive, inFee fee taken from input amount\"}},\"swapMint(address,address,uint256,uint256,uint256)\":{\"details\":\"This function forwards the call to the swapMint implementation via delegatecall\",\"params\":{\"deadline\":\"optional deadline\",\"inputTokenIndex\":\"index of the input token\",\"maxAmountIn\":\"maximum uint token input (inclusive of fee)\",\"payer\":\"who transfers the input token\",\"receiver\":\"who receives the minted LP _tokens\"},\"returns\":{\"amountInUsed\":\"actual input used (uint256), lpMinted actual LP minted (uint256), inFee fee taken from the input (uint256)\"}},\"swapToLimit(address,address,uint256,uint256,int128,uint256,bool)\":{\"details\":\"If balances prevent fully reaching the limit, the function caps and returns actuals. The payer must transfer the exact gross input computed by the view.\",\"params\":{\"deadline\":\"timestamp after which the transaction will revert. Pass 0 to ignore.\",\"inputTokenIndex\":\"index of input asset\",\"limitPrice\":\"target marginal price to reach (must be > 0)\",\"outputTokenIndex\":\"index of output asset\",\"payer\":\"address of the account that pays for the swap\",\"receiver\":\"address that will receive the output tokens\"},\"returns\":{\"amountInUsed\":\"actual input used excluding fee (uint256), amountOut actual output sent (uint256), inFee fee taken from the input (uint256)\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s _tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"stateVariables\":{\"KAPPA\":{\"details\":\"Pool is constructed with a fixed \\u03ba. Clients that previously passed tradeFrac/targetSlippage should use LMSRStabilized.computeKappaFromSlippage(...) to derive \\u03ba and pass it here.\"}},\"title\":\"PartyPool - LMSR-backed multi-asset pool with LP ERC20 token\",\"version\":1},\"userdoc\":{\"events\":{\"BurnSwap(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted instead of Burn when a burnSwap is executed.\"},\"ProtocolFeesCollected()\":{\"notice\":\"Emitted when protocol fees are collected from this pool.\"},\"SwapMint(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted instead of Swap when a single-token swapMint is executed.\"}},\"kind\":\"user\",\"methods\":{\"allProtocolFeesOwed()\":{\"notice\":\"Protocol fee ledger accessor. Returns tokens owed (raw uint token units) from this pool as protocol fees that have not yet been transferred out.\"},\"allTokens()\":{\"notice\":\"Returns the list of all token addresses in the pool (copy).\"},\"burn(address,address,uint256,uint256,bool)\":{\"notice\":\"Burn LP tokens and withdraw the proportional basket to receiver.\"},\"burnSwap(address,address,uint256,uint256,uint256,bool)\":{\"notice\":\"Burn LP tokens then swap the redeemed proportional basket into a single asset `outputTokenIndex` and send to receiver.\"},\"collectProtocolFees()\":{\"notice\":\"Transfer all protocol fees to the configured protocolFeeAddress and zero the ledger.\"},\"denominators()\":{\"notice\":\"Per-token uint base denominators used to convert uint token amounts <-> internal Q64.64 representation.\"},\"fee(uint256,uint256)\":{\"notice\":\"Effective combined fee in ppm for (i as input, j as output)\"},\"fees()\":{\"notice\":\"Per-asset swap fees in ppm.\"},\"flashFeePpm()\":{\"notice\":\"Flash-loan fee in parts-per-million (ppm) applied to flash borrow amounts.\"},\"getToken(uint256)\":{\"notice\":\"Token addresses comprising the pool. Effectively immutable after construction.\"},\"initialMint(address,uint256)\":{\"notice\":\"Initial mint to set up pool for the first time.\"},\"kappa()\":{\"notice\":\"Liquidity parameter \\u03ba (Q64.64) used by the LMSR kernel: b = \\u03ba * S(q)\"},\"kill()\":{\"notice\":\"If a security problem is found, the vault owner may call this function to permanently disable swap and mint functionality, leaving only burns (withdrawals) working.\"},\"killed()\":{\"notice\":\"If true, the vault has been disabled by the owner and only burns (withdrawals) are allowed.\"},\"mint(address,address,uint256,uint256)\":{\"notice\":\"Proportional mint for existing pool.\"},\"numTokens()\":{\"notice\":\"Returns the number of tokens (n) in the pool.\"},\"protocolFeeAddress()\":{\"notice\":\"Address to which collected protocol _tokens will be sent on collectProtocolFees()\"},\"protocolFeePpm()\":{\"notice\":\"Protocol fee share (ppm) applied to fees collected by the pool (floored when accrued)\"},\"swap(address,bytes4,address,uint256,uint256,uint256,int128,uint256,bool)\":{\"notice\":\"Swap input token inputTokenIndex -> token outputTokenIndex. Payer must approve token inputTokenIndex.\"},\"swapAmounts(uint256,uint256,uint256,int128)\":{\"notice\":\"External view to quote exact-in swap amounts (gross input incl. fee and output), matching swap() computations\"},\"swapMint(address,address,uint256,uint256,uint256)\":{\"notice\":\"Single-token mint: deposit a single token, charge swap-LMSR cost, and mint LP.\"},\"swapToLimit(address,address,uint256,uint256,int128,uint256,bool)\":{\"notice\":\"Swap up to the price limit; computes max input to reach limit then performs swap.\"},\"wrapperToken()\":{\"notice\":\"Token contract used for wrapping native currency\"}},\"notice\":\"A multi-asset liquidity pool backed by the LMSRStabilized pricing model. The pool issues an ERC20 LP token representing proportional ownership. It supports: - Proportional minting and burning of LP tokens, - Exact-input swaps and swaps-to-price-limits, - Single-token mint (swapMint) and single-asset withdrawal (burnSwap), - ERC-3156 flash loans\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/PartyPool.sol\":\"PartyPool\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/abdk-libraries-solidity/ABDKMath64x64.sol\":{\"keccak256\":\"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97\",\"license\":\"BSD-4-Clause\",\"urls\":[\"bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7\",\"dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol\":{\"keccak256\":\"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd\",\"dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashLender.sol\":{\"keccak256\":\"0x3a3549277762438ad9a38fce50493ed8995b806f78aabff02d51b4e1671ce6f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f105ec892766b8a41ece6d3b10a4e434166cc8db4ddb8451493a2de93cf7d893\",\"dweb:/ipfs/QmP5wxpX9cDzKtToA2cM5jbb928UN8DtGyV1cG4w7jPJCt\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd\",\"dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0x25f9b099413f805b4c4bbad8cc179326c10be237aec00349caf91524f8db0bbc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dcfb75af07ad33b1f8e966f793db3df8fbcfb14103ed3644c0c634658a8fd099\",\"dweb:/ipfs/QmPWamdkbcKwG3ah2G9TZtKHzQmjnunsWoPWr5KKfbrKNb\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168\",\"dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd274645d15bb7e4fcb9c833e401b2c5837404f90057f11a49118f25e0af7c76f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d38e0b997bb7aebae26d190b03d0991feb0d204c45f945e60014e1ca9175de69\",\"dweb:/ipfs/QmWzsUHHAZcjMyF8uMDEtNpMTkYZdQrfvdKPobXvwVHKo6\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x50e81a8b089e3f382b6c915aa0166773de64ea4756e8f9479d9943a5f956ddf5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bfeb96a150537222e2191c03887127499a4f21dfb5f9a7211da4d81749b52848\",\"dweb:/ipfs/QmYR75ECbsBuxSiXmGvGfNKJRLoK5MdLUZL1bd8SixzxL4\"]},\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161\",\"dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"src/ERC20External.sol\":{\"keccak256\":\"0x421f511bb3aa7258fb7121aa66b9a2e8e0b7a07b7e51c800c714f7acbfd599d3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b3fde56a83eae12a31eb4875d8952a99d18591fe0f18b6a12392c8f48f76af46\",\"dweb:/ipfs/QmeApbmGv6Z2b1JynvBxaAK1j1eWhGYpeNEP56V8XXvpcz\"]},\"src/ERC20Internal.sol\":{\"keccak256\":\"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f\",\"dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk\"]},\"src/IOwnable.sol\":{\"keccak256\":\"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1\",\"dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9\"]},\"src/IPartyFlashCallback.sol\":{\"keccak256\":\"0xff1d473d27c4dc75441a5f0db2d761916cce4a702f660e998467791efd1d9b2e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3220d69c62ed8c8106762c92857f24011284e8ddcfa5db4210e506b112fa1870\",\"dweb:/ipfs/QmYoZiGsVwoJvyPMcsSste4tq93wVBgDqCZkwPY7dvyLBJ\"]},\"src/IPartyInfo.sol\":{\"keccak256\":\"0x80e88e8c29cdf12426f16b4bf2a088397fcc31c2664564f7f26117dc85009af7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b91392cbda8adfccf9bea2e584616c4b3359d7381a18f5f3e5c9c71618786051\",\"dweb:/ipfs/QmWtWb1gVs2pzFkjwDj4mcdoCnQLPbwq4Qxbh38VEdWwAW\"]},\"src/IPartyPool.sol\":{\"keccak256\":\"0x55d3656b1a4c75801852066b7ba871212e5e807917b3b9029349349fae39375c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://009b67ccf1d28a04a2407a05ddda8f954033b7ac70f7fd5cbedbf779e867df9f\",\"dweb:/ipfs/QmS5vQcfma6PN28Q6qQwqa7KmUKu2KST72jwF8ffsj6Bw2\"]},\"src/LMSRStabilized.sol\":{\"keccak256\":\"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3\",\"dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB\"]},\"src/LMSRStabilizedBalancedPair.sol\":{\"keccak256\":\"0x782f3baf92f74152c0b93b95199abbb3a36c75c921454260c8b0237f91d7c59d\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://04d463c4fdcb6c8e2ebf9aed649ff21cca759ba73a4c93659e30c7df25e26c81\",\"dweb:/ipfs/QmUxmWytiw5VYJRUrFbSGm1oWmDPQ4q23pnkmK1q9P4apN\"]},\"src/NativeWrapper.sol\":{\"keccak256\":\"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238\",\"dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB\"]},\"src/OwnableExternal.sol\":{\"keccak256\":\"0x0a0199368ad20a31e7169b3e56449bf022c9d680e0d487c118608a7f14cb7efb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3348a063649e01acf9c6aa6b7ce2ecf62ace8c6f1467477de7d605996f08ec64\",\"dweb:/ipfs/QmSoxb35FFsNCgXgWn91CupvjpGmyM31wcfxAVpVFFPecX\"]},\"src/OwnableInternal.sol\":{\"keccak256\":\"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca\",\"dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE\"]},\"src/PartyPool.sol\":{\"keccak256\":\"0xf4af110b4cd06a00ee1ec2bd61e887662dcb26aaf6903b9910902614b50e4955\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://691fabaffecdf698601cc0696099e3bfa44ed60097b8f9b9f01cd4bf703bbb77\",\"dweb:/ipfs/QmXuPX2zu8sN9VyePDvVra4QP8LN2knNxbiGsMGzYAyS8S\"]},\"src/PartyPoolBase.sol\":{\"keccak256\":\"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5\",\"dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5\"]},\"src/PartyPoolHelpers.sol\":{\"keccak256\":\"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5\",\"dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP\"]},\"src/PartyPoolMintImpl.sol\":{\"keccak256\":\"0xe9d9927cecd46a1f836b2c43e9d6184642b9e695c7462e5fb7c671a38aab7398\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8d821911d7982fc302929198539b27f72be100b91450c98d2e0081519f776499\",\"dweb:/ipfs/QmRChx1DPD1gKXwfD1m6aQ7pgh1aX6CvYLNX41ufdJteaJ\"]},\"src/PartyPoolSwapImpl.sol\":{\"keccak256\":\"0x71ecbd6d0fb106031baed7e4c21694ef24f0112af7d975325b98b1b0463ba5b2\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://64f8f8bae2f89ca495b9edacd012363b55e78a198f100650beb2b1238e8ef11f\",\"dweb:/ipfs/QmVfihiw9TqncuEfZKx7c6WEHiGFfRQyhtfdTGzfN7emNY\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"contract IERC20[]","name":"tokens_","type":"address[]"},{"internalType":"int128","name":"kappa_","type":"int128"},{"internalType":"uint256[]","name":"fees_","type":"uint256[]"},{"internalType":"uint256","name":"flashFeePpm_","type":"uint256"},{"internalType":"uint256","name":"protocolFeePpm_","type":"uint256"},{"internalType":"address","name":"protocolFeeAddress_","type":"address"},{"internalType":"contract NativeWrapper","name":"wrapperToken_","type":"address"},{"internalType":"contract PartyPoolSwapImpl","name":"swapImpl_","type":"address"},{"internalType":"contract PartyPoolMintImpl","name":"mintImpl_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":false},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"uint256[]","name":"amounts","type":"uint256[]","indexed":false},{"internalType":"uint256","name":"lpBurned","type":"uint256","indexed":false}],"type":"event","name":"Burn","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":true},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"contract IERC20","name":"tokenOut","type":"address","indexed":true},{"internalType":"uint256","name":"amountIn","type":"uint256","indexed":false},{"internalType":"uint256","name":"amountOut","type":"uint256","indexed":false},{"internalType":"uint256","name":"lpFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolFee","type":"uint256","indexed":false}],"type":"event","name":"BurnSwap","anonymous":false},{"inputs":[{"internalType":"address","name":"initiator","type":"address","indexed":true},{"internalType":"contract IERC3156FlashBorrower","name":"receiver","type":"address","indexed":true},{"internalType":"contract IERC20","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"lpFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolFee","type":"uint256","indexed":false}],"type":"event","name":"Flash","anonymous":false},{"inputs":[],"type":"event","name":"Killed","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":false},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"uint256[]","name":"amounts","type":"uint256[]","indexed":false},{"internalType":"uint256","name":"lpMinted","type":"uint256","indexed":false}],"type":"event","name":"Mint","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":[],"type":"event","name":"ProtocolFeesCollected","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":false},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"contract IERC20","name":"tokenIn","type":"address","indexed":true},{"internalType":"contract IERC20","name":"tokenOut","type":"address","indexed":true},{"internalType":"uint256","name":"amountIn","type":"uint256","indexed":false},{"internalType":"uint256","name":"amountOut","type":"uint256","indexed":false},{"internalType":"uint256","name":"lpFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolFee","type":"uint256","indexed":false}],"type":"event","name":"Swap","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":true},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"contract IERC20","name":"tokenIn","type":"address","indexed":true},{"internalType":"uint256","name":"amountIn","type":"uint256","indexed":false},{"internalType":"uint256","name":"amountOut","type":"uint256","indexed":false},{"internalType":"uint256","name":"lpFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolFee","type":"uint256","indexed":false}],"type":"event","name":"SwapMint","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"LMSR","outputs":[{"internalType":"struct LMSRStabilized.State","name":"","type":"tuple","components":[{"internalType":"int128","name":"kappa","type":"int128"},{"internalType":"int128[]","name":"qInternal","type":"int128[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"allProtocolFeesOwed","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"allTokens","outputs":[{"internalType":"contract IERC20[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"lpAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"unwrap","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"burn","outputs":[{"internalType":"uint256[]","name":"withdrawAmounts","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"lpAmount","type":"uint256"},{"internalType":"uint256","name":"outputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"unwrap","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"burnSwap","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"outFee","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"collectProtocolFees"},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"denominators","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"i","type":"uint256"},{"internalType":"uint256","name":"j","type":"uint256"}],"stateMutability":"view","type":"function","name":"fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"fees","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"flashFeePpm","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"contract IERC3156FlashBorrower","name":"receiver","type":"address"},{"internalType":"address","name":"tokenAddr","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"flashLoan","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"i","type":"uint256"}],"stateMutability":"view","type":"function","name":"getToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"lpTokens","type":"uint256"}],"stateMutability":"payable","type":"function","name":"initialMint","outputs":[{"internalType":"uint256","name":"lpMinted","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"kappa","outputs":[{"internalType":"int128","name":"","type":"int128"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"kill"},{"inputs":[],"stateMutability":"view","type":"function","name":"killed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"lpTokenAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"payable","type":"function","name":"mint","outputs":[{"internalType":"uint256","name":"lpMinted","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mintImpl","outputs":[{"internalType":"contract PartyPoolMintImpl","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"numTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"protocolFeeAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"protocolFeePpm","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"feeAddress","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setProtocolFeeAddress"},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"bytes4","name":"selector","type":"bytes4"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"inputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"outputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"int128","name":"limitPrice","type":"int128"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"unwrap","type":"bool"}],"stateMutability":"payable","type":"function","name":"swap","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"inFee","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"inputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"outputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"int128","name":"limitPrice","type":"int128"}],"stateMutability":"view","type":"function","name":"swapAmounts","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"inFee","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"inputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"payable","type":"function","name":"swapMint","outputs":[{"internalType":"uint256","name":"amountInUsed","type":"uint256"},{"internalType":"uint256","name":"lpMinted","type":"uint256"},{"internalType":"uint256","name":"inFee","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"swapMintImpl","outputs":[{"internalType":"contract PartyPoolSwapImpl","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"inputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"outputTokenIndex","type":"uint256"},{"internalType":"int128","name":"limitPrice","type":"int128"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"unwrap","type":"bool"}],"stateMutability":"payable","type":"function","name":"swapToLimit","outputs":[{"internalType":"uint256","name":"amountInUsed","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"inFee","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"wrapperToken","outputs":[{"internalType":"contract NativeWrapper","name":"","type":"address"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"burn(address,address,uint256,uint256,bool)":{"details":"This function forwards the call to the burn implementation via delegatecall","params":{"deadline":"timestamp after which the transaction will revert. Pass 0 to ignore.","lpAmount":"amount of LP tokens to burn (proportional withdrawal)","payer":"address that provides the LP tokens to burn","receiver":"address that receives the withdrawn tokens","unwrap":"if true and the native token is being withdrawn, it is unwraped and sent as native currency"}},"burnSwap(address,address,uint256,uint256,uint256,bool)":{"details":"The function burns LP tokens (authorization via allowance if needed), sends the single-asset payout and updates LMSR state.","params":{"deadline":"optional deadline","lpAmount":"amount of LP tokens to burn","outputTokenIndex":"index of target asset to receive","payer":"who burns LP tokens","receiver":"who receives the single asset"},"returns":{"amountOut":"uint amount of asset outputTokenIndex sent to receiver","outFee":"uint amount of output asset kept by the LP's and protocol as a fee"}},"collectProtocolFees()":{"details":"Anyone can call; must have protocolFeeAddress != address(0) to be operational."},"constructor":{"params":{"fees_":"per-asset swap fees in ppm (length must equal tokens_.length)","flashFeePpm_":"fee in parts-per-million, taken for flash loans","kappa_":"liquidity parameter κ (Q64.64) used to derive b = κ * S(q)","mintImpl_":"address of the Mint implementation contract","name_":"LP token name","owner_":"Admin account that can disable the vault using kill()","swapImpl_":"address of the SwapMint implementation contract","symbol_":"LP token symbol","tokens_":"token addresses (n)"}},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` _tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"denominators()":{"details":"denominators()[i] is the base for tokens[i]. These bases are chosen by deployer and must match token decimals."},"flashLoan(address,address,uint256,bytes)":{"details":"Initiate a flash loan.","params":{"amount":"The amount of tokens lent.","data":"Arbitrary data structure, intended to contain user-defined parameters.","receiver":"The receiver of the tokens in the loan, and the receiver of the callback.","token":"The loan currency."}},"getToken(uint256)":{"details":"tokens[i] corresponds to the i-th asset and maps to index i in the internal LMSR arrays."},"initialMint(address,uint256)":{"details":"Assumes tokens have already been transferred to the pool prior to calling. Can only be called when the pool is uninitialized (totalSupply() == 0 or _lmsr.nAssets == 0).","params":{"lpTokens":"The number of LP tokens to issue for this mint. If 0, then the number of tokens returned will equal the LMSR internal q total","receiver":"address that receives the LP tokens"}},"kappa()":{"details":"Pools are constructed with a κ value; this getter exposes the κ used by the pool."},"mint(address,address,uint256,uint256)":{"details":"This function forwards the call to the mint implementation via delegatecall","params":{"deadline":"timestamp after which the transaction will revert. Pass 0 to ignore.","lpTokenAmount":"desired amount of LP _tokens to mint","payer":"address that provides the input _tokens","receiver":"address that receives the LP _tokens"}},"name()":{"details":"Returns the name of the token."},"owner()":{"details":"Returns the address of the current owner."},"protocolFeePpm()":{"details":"This is the fraction (in ppm) of the pool-collected fees that are owed to the protocol."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"swap(address,bytes4,address,uint256,uint256,uint256,int128,uint256,bool)":{"details":"This function transfers the exact gross input (including fee) from payer and sends the computed output to receiver. Non-standard tokens (fee-on-transfer, rebasers) are rejected via balance checks.","params":{"deadline":"timestamp after which the transaction will revert. Pass 0 to ignore.","inputTokenIndex":"index of input asset","limitPrice":"maximum acceptable marginal price (64.64 fixed point). Pass 0 to ignore.","maxAmountIn":"maximum amount of token inputTokenIndex (uint256) to transfer in (inclusive of fees)","outputTokenIndex":"index of output asset","payer":"address of the account that pays for the swap","receiver":"address that will receive the output tokens","selector":"If zero, then regular ERC20 approvals must be given by the payere to the pool to move the required input amount. If this selector is nonzero, then a callback style funding mechanism is used where the given selector is invoked on the payer, passing the arguments of (address inputToken, uint256 inputAmount). The callback function must send the given amount of input coin to the pool in ordr to continue the swap transaction, otherwise \"Insufficient funds\" is thrown."},"returns":{"amountIn":"actual input used (uint256), amountOut actual output sent (uint256), inFee fee taken from the input (uint256)"}},"swapAmounts(uint256,uint256,uint256,int128)":{"params":{"inputTokenIndex":"index of input token","limitPrice":"maximum acceptable marginal price (pass 0 to ignore)","maxAmountIn":"maximum gross input allowed (inclusive of fee)","outputTokenIndex":"index of output token"},"returns":{"amountIn":"gross input amount to transfer (includes fee), amountOut output amount user would receive, inFee fee taken from input amount"}},"swapMint(address,address,uint256,uint256,uint256)":{"details":"This function forwards the call to the swapMint implementation via delegatecall","params":{"deadline":"optional deadline","inputTokenIndex":"index of the input token","maxAmountIn":"maximum uint token input (inclusive of fee)","payer":"who transfers the input token","receiver":"who receives the minted LP _tokens"},"returns":{"amountInUsed":"actual input used (uint256), lpMinted actual LP minted (uint256), inFee fee taken from the input (uint256)"}},"swapToLimit(address,address,uint256,uint256,int128,uint256,bool)":{"details":"If balances prevent fully reaching the limit, the function caps and returns actuals. The payer must transfer the exact gross input computed by the view.","params":{"deadline":"timestamp after which the transaction will revert. Pass 0 to ignore.","inputTokenIndex":"index of input asset","limitPrice":"target marginal price to reach (must be > 0)","outputTokenIndex":"index of output asset","payer":"address of the account that pays for the swap","receiver":"address that will receive the output tokens"},"returns":{"amountInUsed":"actual input used excluding fee (uint256), amountOut actual output sent (uint256), inFee fee taken from the input (uint256)"}},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s _tokens of at least `value`."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{"allProtocolFeesOwed()":{"notice":"Protocol fee ledger accessor. Returns tokens owed (raw uint token units) from this pool as protocol fees that have not yet been transferred out."},"allTokens()":{"notice":"Returns the list of all token addresses in the pool (copy)."},"burn(address,address,uint256,uint256,bool)":{"notice":"Burn LP tokens and withdraw the proportional basket to receiver."},"burnSwap(address,address,uint256,uint256,uint256,bool)":{"notice":"Burn LP tokens then swap the redeemed proportional basket into a single asset `outputTokenIndex` and send to receiver."},"collectProtocolFees()":{"notice":"Transfer all protocol fees to the configured protocolFeeAddress and zero the ledger."},"denominators()":{"notice":"Per-token uint base denominators used to convert uint token amounts <-> internal Q64.64 representation."},"fee(uint256,uint256)":{"notice":"Effective combined fee in ppm for (i as input, j as output)"},"fees()":{"notice":"Per-asset swap fees in ppm."},"flashFeePpm()":{"notice":"Flash-loan fee in parts-per-million (ppm) applied to flash borrow amounts."},"getToken(uint256)":{"notice":"Token addresses comprising the pool. Effectively immutable after construction."},"initialMint(address,uint256)":{"notice":"Initial mint to set up pool for the first time."},"kappa()":{"notice":"Liquidity parameter κ (Q64.64) used by the LMSR kernel: b = κ * S(q)"},"kill()":{"notice":"If a security problem is found, the vault owner may call this function to permanently disable swap and mint functionality, leaving only burns (withdrawals) working."},"killed()":{"notice":"If true, the vault has been disabled by the owner and only burns (withdrawals) are allowed."},"mint(address,address,uint256,uint256)":{"notice":"Proportional mint for existing pool."},"numTokens()":{"notice":"Returns the number of tokens (n) in the pool."},"protocolFeeAddress()":{"notice":"Address to which collected protocol _tokens will be sent on collectProtocolFees()"},"protocolFeePpm()":{"notice":"Protocol fee share (ppm) applied to fees collected by the pool (floored when accrued)"},"swap(address,bytes4,address,uint256,uint256,uint256,int128,uint256,bool)":{"notice":"Swap input token inputTokenIndex -> token outputTokenIndex. Payer must approve token inputTokenIndex."},"swapAmounts(uint256,uint256,uint256,int128)":{"notice":"External view to quote exact-in swap amounts (gross input incl. fee and output), matching swap() computations"},"swapMint(address,address,uint256,uint256,uint256)":{"notice":"Single-token mint: deposit a single token, charge swap-LMSR cost, and mint LP."},"swapToLimit(address,address,uint256,uint256,int128,uint256,bool)":{"notice":"Swap up to the price limit; computes max input to reach limit then performs swap."},"wrapperToken()":{"notice":"Token contract used for wrapping native currency"}},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/PartyPool.sol":"PartyPool"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/abdk-libraries-solidity/ABDKMath64x64.sol":{"keccak256":"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97","urls":["bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7","dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN"],"license":"BSD-4-Clause"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d","urls":["bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100","dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc","urls":["bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037","dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44","urls":["bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d","dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol":{"keccak256":"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e","urls":["bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd","dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashLender.sol":{"keccak256":"0x3a3549277762438ad9a38fce50493ed8995b806f78aabff02d51b4e1671ce6f5","urls":["bzz-raw://f105ec892766b8a41ece6d3b10a4e434166cc8db4ddb8451493a2de93cf7d893","dweb:/ipfs/QmP5wxpX9cDzKtToA2cM5jbb928UN8DtGyV1cG4w7jPJCt"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86","urls":["bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd","dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0x25f9b099413f805b4c4bbad8cc179326c10be237aec00349caf91524f8db0bbc","urls":["bzz-raw://dcfb75af07ad33b1f8e966f793db3df8fbcfb14103ed3644c0c634658a8fd099","dweb:/ipfs/QmPWamdkbcKwG3ah2G9TZtKHzQmjnunsWoPWr5KKfbrKNb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9","urls":["bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168","dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd274645d15bb7e4fcb9c833e401b2c5837404f90057f11a49118f25e0af7c76f","urls":["bzz-raw://d38e0b997bb7aebae26d190b03d0991feb0d204c45f945e60014e1ca9175de69","dweb:/ipfs/QmWzsUHHAZcjMyF8uMDEtNpMTkYZdQrfvdKPobXvwVHKo6"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol":{"keccak256":"0x50e81a8b089e3f382b6c915aa0166773de64ea4756e8f9479d9943a5f956ddf5","urls":["bzz-raw://bfeb96a150537222e2191c03887127499a4f21dfb5f9a7211da4d81749b52848","dweb:/ipfs/QmYR75ECbsBuxSiXmGvGfNKJRLoK5MdLUZL1bd8SixzxL4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol":{"keccak256":"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0","urls":["bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161","dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"},"src/ERC20External.sol":{"keccak256":"0x421f511bb3aa7258fb7121aa66b9a2e8e0b7a07b7e51c800c714f7acbfd599d3","urls":["bzz-raw://b3fde56a83eae12a31eb4875d8952a99d18591fe0f18b6a12392c8f48f76af46","dweb:/ipfs/QmeApbmGv6Z2b1JynvBxaAK1j1eWhGYpeNEP56V8XXvpcz"],"license":"UNLICENSED"},"src/ERC20Internal.sol":{"keccak256":"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36","urls":["bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f","dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk"],"license":"UNLICENSED"},"src/IOwnable.sol":{"keccak256":"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990","urls":["bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1","dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9"],"license":"MIT"},"src/IPartyFlashCallback.sol":{"keccak256":"0xff1d473d27c4dc75441a5f0db2d761916cce4a702f660e998467791efd1d9b2e","urls":["bzz-raw://3220d69c62ed8c8106762c92857f24011284e8ddcfa5db4210e506b112fa1870","dweb:/ipfs/QmYoZiGsVwoJvyPMcsSste4tq93wVBgDqCZkwPY7dvyLBJ"],"license":"UNLICENSED"},"src/IPartyInfo.sol":{"keccak256":"0x80e88e8c29cdf12426f16b4bf2a088397fcc31c2664564f7f26117dc85009af7","urls":["bzz-raw://b91392cbda8adfccf9bea2e584616c4b3359d7381a18f5f3e5c9c71618786051","dweb:/ipfs/QmWtWb1gVs2pzFkjwDj4mcdoCnQLPbwq4Qxbh38VEdWwAW"],"license":"UNLICENSED"},"src/IPartyPool.sol":{"keccak256":"0x55d3656b1a4c75801852066b7ba871212e5e807917b3b9029349349fae39375c","urls":["bzz-raw://009b67ccf1d28a04a2407a05ddda8f954033b7ac70f7fd5cbedbf779e867df9f","dweb:/ipfs/QmS5vQcfma6PN28Q6qQwqa7KmUKu2KST72jwF8ffsj6Bw2"],"license":"UNLICENSED"},"src/LMSRStabilized.sol":{"keccak256":"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b","urls":["bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3","dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB"],"license":"UNLICENSED"},"src/LMSRStabilizedBalancedPair.sol":{"keccak256":"0x782f3baf92f74152c0b93b95199abbb3a36c75c921454260c8b0237f91d7c59d","urls":["bzz-raw://04d463c4fdcb6c8e2ebf9aed649ff21cca759ba73a4c93659e30c7df25e26c81","dweb:/ipfs/QmUxmWytiw5VYJRUrFbSGm1oWmDPQ4q23pnkmK1q9P4apN"],"license":"UNLICENSED"},"src/NativeWrapper.sol":{"keccak256":"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579","urls":["bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238","dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB"],"license":"UNLICENSED"},"src/OwnableExternal.sol":{"keccak256":"0x0a0199368ad20a31e7169b3e56449bf022c9d680e0d487c118608a7f14cb7efb","urls":["bzz-raw://3348a063649e01acf9c6aa6b7ce2ecf62ace8c6f1467477de7d605996f08ec64","dweb:/ipfs/QmSoxb35FFsNCgXgWn91CupvjpGmyM31wcfxAVpVFFPecX"],"license":"MIT"},"src/OwnableInternal.sol":{"keccak256":"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581","urls":["bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca","dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE"],"license":"MIT"},"src/PartyPool.sol":{"keccak256":"0xf4af110b4cd06a00ee1ec2bd61e887662dcb26aaf6903b9910902614b50e4955","urls":["bzz-raw://691fabaffecdf698601cc0696099e3bfa44ed60097b8f9b9f01cd4bf703bbb77","dweb:/ipfs/QmXuPX2zu8sN9VyePDvVra4QP8LN2knNxbiGsMGzYAyS8S"],"license":"UNLICENSED"},"src/PartyPoolBase.sol":{"keccak256":"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999","urls":["bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5","dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5"],"license":"UNLICENSED"},"src/PartyPoolHelpers.sol":{"keccak256":"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c","urls":["bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5","dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP"],"license":"UNLICENSED"},"src/PartyPoolMintImpl.sol":{"keccak256":"0xe9d9927cecd46a1f836b2c43e9d6184642b9e695c7462e5fb7c671a38aab7398","urls":["bzz-raw://8d821911d7982fc302929198539b27f72be100b91450c98d2e0081519f776499","dweb:/ipfs/QmRChx1DPD1gKXwfD1m6aQ7pgh1aX6CvYLNX41ufdJteaJ"],"license":"UNLICENSED"},"src/PartyPoolSwapImpl.sol":{"keccak256":"0x71ecbd6d0fb106031baed7e4c21694ef24f0112af7d975325b98b1b0463ba5b2","urls":["bzz-raw://64f8f8bae2f89ca495b9edacd012363b55e78a198f100650beb2b1238e8ef11f","dweb:/ipfs/QmVfihiw9TqncuEfZKx7c6WEHiGFfRQyhtfdTGzfN7emNY"],"license":"UNLICENSED"}},"version":1},"id":49} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"owner_","type":"address","internalType":"address"},{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"},{"name":"tokens_","type":"address[]","internalType":"contract IERC20[]"},{"name":"kappa_","type":"int128","internalType":"int128"},{"name":"fees_","type":"uint256[]","internalType":"uint256[]"},{"name":"flashFeePpm_","type":"uint256","internalType":"uint256"},{"name":"protocolFeePpm_","type":"uint256","internalType":"uint256"},{"name":"protocolFeeAddress_","type":"address","internalType":"address"},{"name":"wrapperToken_","type":"address","internalType":"contract NativeWrapper"},{"name":"swapImpl_","type":"address","internalType":"contract PartyPoolSwapImpl"},{"name":"mintImpl_","type":"address","internalType":"contract PartyPoolMintImpl"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"LMSR","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct LMSRStabilized.State","components":[{"name":"kappa","type":"int128","internalType":"int128"},{"name":"qInternal","type":"int128[]","internalType":"int128[]"}]}],"stateMutability":"view"},{"type":"function","name":"allProtocolFeesOwed","inputs":[],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"allTokens","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"contract IERC20[]"}],"stateMutability":"view"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"lpAmount","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"unwrap","type":"bool","internalType":"bool"}],"outputs":[{"name":"withdrawAmounts","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"burnSwap","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"lpAmount","type":"uint256","internalType":"uint256"},{"name":"outputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"unwrap","type":"bool","internalType":"bool"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"outFee","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"collectProtocolFees","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"denominators","inputs":[],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"fee","inputs":[{"name":"i","type":"uint256","internalType":"uint256"},{"name":"j","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"fees","inputs":[],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"flashFeePpm","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"flashLoan","inputs":[{"name":"receiver","type":"address","internalType":"contract IERC3156FlashBorrower"},{"name":"tokenAddr","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"getToken","inputs":[{"name":"i","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"initialMint","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"lpTokens","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"lpMinted","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"kappa","inputs":[],"outputs":[{"name":"","type":"int128","internalType":"int128"}],"stateMutability":"view"},{"type":"function","name":"kill","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"killed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"lpTokenAmount","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"lpMinted","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"mintImpl","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract PartyPoolMintImpl"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"numTokens","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":"protocolFeeAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"protocolFeePpm","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setProtocolFeeAddress","inputs":[{"name":"feeAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"swap","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"fundingSelector","type":"bytes4","internalType":"bytes4"},{"name":"receiver","type":"address","internalType":"address"},{"name":"inputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"outputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"maxAmountIn","type":"uint256","internalType":"uint256"},{"name":"limitPrice","type":"int128","internalType":"int128"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"unwrap","type":"bool","internalType":"bool"}],"outputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"inFee","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"swapAmounts","inputs":[{"name":"inputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"outputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"maxAmountIn","type":"uint256","internalType":"uint256"},{"name":"limitPrice","type":"int128","internalType":"int128"}],"outputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"inFee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"swapMint","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"inputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"maxAmountIn","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountInUsed","type":"uint256","internalType":"uint256"},{"name":"lpMinted","type":"uint256","internalType":"uint256"},{"name":"inFee","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"swapMintImpl","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract PartyPoolSwapImpl"}],"stateMutability":"view"},{"type":"function","name":"swapToLimit","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"inputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"outputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"limitPrice","type":"int128","internalType":"int128"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"unwrap","type":"bool","internalType":"bool"}],"outputs":[{"name":"amountInUsed","type":"uint256","internalType":"uint256"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"inFee","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"wrapperToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract NativeWrapper"}],"stateMutability":"view"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Burn","inputs":[{"name":"payer","type":"address","indexed":false,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"amounts","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"lpBurned","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BurnSwap","inputs":[{"name":"payer","type":"address","indexed":true,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"tokenOut","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lpFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Flash","inputs":[{"name":"initiator","type":"address","indexed":true,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"contract IERC3156FlashBorrower"},{"name":"token","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lpFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Killed","inputs":[],"anonymous":false},{"type":"event","name":"Mint","inputs":[{"name":"payer","type":"address","indexed":false,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"amounts","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"lpMinted","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":"ProtocolFeesCollected","inputs":[],"anonymous":false},{"type":"event","name":"Swap","inputs":[{"name":"payer","type":"address","indexed":false,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"tokenIn","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"tokenOut","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lpFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SwapMint","inputs":[{"name":"payer","type":"address","indexed":true,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"tokenIn","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lpFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x610140604052346106ee576155688038038061001a81610a6a565b9283398101610180828203126106ee5761003382610a8f565b60208301516001600160401b0381116106ee5782610052918501610aa3565b60408401519091906001600160401b0381116106ee5783610074918601610aa3565b60608501519094906001600160401b0381116106ee5781019284601f850112156106ee578351956100ac6100a788610af4565b610a6a565b9460208689815201906020829960051b820101908882116106ee57602001915b818310610a4a57505050608083015180600f0b81036106ee5760a08401516001600160401b0381116106ee5784019680601f890112156106ee5787516101146100a782610af4565b986020808b848152019260051b8201019283116106ee57602001905b828210610a3a5750505060c08401519760e0850151926101536101008701610a8f565b610120870151979095906001600160a01b03891689036106ee57610140880151976001600160a01b03891689036106ee576101600151986001600160a01b038a168a036106ee5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00556080526001600160a01b03168015610a27575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a38051906001600160401b0382116106335760045490600182811c92168015610a1d575b60208310146109405781601f8493116109cf575b50602090601f8311600114610969575f9261095e575b50508160011b915f199060031b1c1916176004555b8051906001600160401b0382116106335760055490600182811c92168015610954575b60208310146109405781601f849311610904575b50602090601f831160011461089e575f92610893575b50508160011b915f199060031b1c1916176005555b60018751111561084e578651906001600160401b0382116106335768010000000000000000821161063357600b5482600b55808310610814575b50600b5f5260205f205f5b8381106107f7575050505060a05285518551036107be5761033a8651610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600654836006558084106107a2575b500160065f5260205f205f5b83811061078e57505050505f5b86518110156104185761271061039c8289610b49565b5110156103e1576103ad8188610b49565b51906006548110156103cd5760019160065f528160205f20015501610386565b634e487b7160e01b5f52603260045260245ffd5b60405162461bcd60e51b815260206004820152600f60248201526e506f6f6c3a20666565203e3d20312560881b6044820152606490fd5b50866127108110156107495760c05262061a8081101561070457801580156106f2575b156106ee5760e052601080546001600160a01b0319166001600160a01b039290921691909117905561012052610100528051905f5b8281106106a7578261048181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600d5483600d5580841061068b575b5001600d5f5260205f205f5b83811061067757846104d181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600f5483600f5580841061065b575b5001600f5f5260205f205f5b8381106106475761052085610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600c5483600c55808410610617575b500190600c5f5260205f20915f5b82811061060357604051614a0a9081610b5e8239608051818181611ac301528181611d1401528181612067015261278a015260a051818181610f130152610f7f015260c05181818161134801526116a6015260e0518181816105ac01528181610c550152818161105d0152818161136e015281816114be0152611b9d01526101005181818161031701526105f70152610120518181816108050152610a720152f35b600190602083519301928186015501610561565b61062d90600c5f5284845f209182019101610b0b565b83610553565b634e487b7160e01b5f52604160045260245ffd5b600190602084519401938184015501610510565b61067190600f5f5284845f209182019101610b0b565b84610504565b6001906020845194019381840155016104c0565b6106a190600d5f5284845f209182019101610b0b565b846104b4565b60018101908181116106da576001600160a01b03906106c69084610b49565b51165f52600e6020528060405f2055610470565b634e487b7160e01b5f52601160045260245ffd5b5f80fd5b506001600160a01b038216151561043b565b60405162461bcd60e51b815260206004820152601960248201527f506f6f6c3a2070726f746f636f6c20666565203e3d20343025000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601560248201527f506f6f6c3a20666c61736820666565203e3d20312500000000000000000000006044820152606490fd5b600190602084519401938184015501610379565b6107b89060065f5284845f209182019101610b0b565b5f61036d565b60405162461bcd60e51b81526020600482015260116024820152700a0deded87440cccacae640d8cadccee8d607b1b6044820152606490fd5b82516001600160a01b031681830155602090920191600101610319565b600b5f52610848907f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9908101908401610b0b565b5f61030e565b60405162461bcd60e51b815260206004820152601360248201527f506f6f6c3a206e656564203e31206173736574000000000000000000000000006044820152606490fd5b015190505f806102bf565b60055f9081528281209350601f198516905b8181106108ec57509084600195949392106108d4575b505050811b016005556102d4565b01515f1960f88460031b161c191690555f80806108c6565b929360206001819287860151815501950193016108b0565b6109309060055f5260205f20601f850160051c81019160208610610936575b601f0160051c0190610b0b565b5f6102a9565b9091508190610923565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610295565b015190505f8061025d565b60045f9081528281209350601f198516905b8181106109b7575090846001959493921061099f575b505050811b01600455610272565b01515f1960f88460031b161c191690555f8080610991565b9293602060018192878601518155019501930161097b565b60045f52610a17907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f850160051c8101916020861061093657601f0160051c0190610b0b565b5f610247565b91607f1691610233565b631e4fbdf760e01b5f525f60045260245ffd5b8151815260209182019101610130565b82516001600160a01b03811681036106ee578152602092830192016100cc565b6040519190601f01601f191682016001600160401b0381118382101761063357604052565b51906001600160a01b03821682036106ee57565b81601f820112156106ee578051906001600160401b03821161063357610ad2601f8301601f1916602001610a6a565b92828452602083830101116106ee57815f9260208093018386015e8301015290565b6001600160401b0381116106335760051b60200190565b818110610b16575050565b5f8155600101610b0b565b90610b2e6100a783610af4565b8281528092610b3f601f1991610af4565b0190602036910137565b80518210156103cd5760209160051b01019056fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c908163017504b614612a8e57508063017cf661146129fc57806306fdde03146128b3578063095ea7b3146127ae5780630d246214146127405780630eeee6271461191757806318160ddd146118db5780631f3a0e411461189a57806323b872dd14611703578063313ce567146116c957806331596a6a1461167057806341c0e1b5146115da578063476e44b614611519578063491e7998146113f15780635cffe9de146112115780636863f5bc146110805780636b4082d1146110275780636b7b911214610fa55780636bba3f2f14610f495780636d8d0ff314610e8e5780636ff97f1d14610d8e57806370a0823114610d2b578063715018a614610c8f57806379a68d5314610b6b5780638da5cb5b14610b1a5780638e499bcf14610ade578063939f5ea414610a965780639517606614610a2757806395d89b41146108cd5780639af1d35a1461082e578063a1af5b9a14610765578063a9059cbb14610715578063b3f1c93d14610648578063cb717f3a146104f3578063cce516b7146104a1578063d516b8c614610416578063dd62ed3e1461039d578063e4b50cb81461033b578063f0d1ae4f146102cc5763f2fde38b0361000f57346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610228612b9d565b6102306131e9565b16801561029d5773ffffffffffffffffffffffffffffffffffffffff8254827fffffffffffffffffffffffff00000000000000000000000000000000000000008216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b6024827f1e4fbdf700000000000000000000000000000000000000000000000000000000815280600452fd5b80fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff61038d600435612c6d565b90549060031b1c16604051908152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff60406103ec612b9d565b92826103f6612bc0565b9416815260026020522091165f52602052602060405f2054604051908152f35b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043590602435916064359182600f0b83036102c95761049d61047985858561046f838261330e565b9260443591612f08565b92505050604093919351938493846040919493926060820195825260208201520152565b0390f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff60105416604051908152f35b5060a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761049d61062b61061c61052f612b9d565b610537612bc0565b60443573ffffffffffffffffffffffffffffffffffffffff61055882613235565b9281604051957f3dd3c8050000000000000000000000000000000000000000000000000000000060208801521660248601521660448401526064830152606435608483015260843560a483015260c48201527f000000000000000000000000000000000000000000000000000000000000000060e482015260e481526105e061010482612c2c565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016613255565b60208082518301019101612e9c565b604080519384526020840192909252908201529081906060820190565b5060807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f161067e612b9d565b73ffffffffffffffffffffffffffffffffffffffff61069b612bc0565b81604051937fb3f1c93d00000000000000000000000000000000000000000000000000000000602086015216602484015216604482015260443560648201526064356084820152608481526105e060a482612c2c565b602081519181808201938492010103126107115760209051604051908152f35b5f80fd5b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761075a610750612b9d565b60243590336130c4565b602060405160018152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761082a73ffffffffffffffffffffffffffffffffffffffff60105416604051907f2a54db010000000000000000000000000000000000000000000000000000000060208301526024820152602481526107ee604482612c2c565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016613255565b5080f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760405180916020600654928381520191600682527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f915b8181106108b75761049d856108ab81870382612c2c565b60405191829182612b1c565b8254845260209093019260019283019201610894565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576040519080600554908160011c91600181168015610a1d575b6020841081146109f0578386529081156109ab575060011461094e575b61049d8461094281860382612c2c565b60405191829182612b55565b600581527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0939250905b8082106109915750909150810160200161094282610932565b919260018160209254838588010152019101909291610978565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208087019190915292151560051b850190920192506109429150839050610932565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b92607f1692610915565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020610ad660243560043561330e565b604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600b54604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b5060e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610b9e612b9d565b90610ba7612bc0565b906044356064356084359182600f0b809303610c8b5760c435938415158095036102c95761049d61062b61061c89898989898973ffffffffffffffffffffffffffffffffffffffff610bf98383612eb7565b9581604051987f8a3d858d0000000000000000000000000000000000000000000000000000000060208b01521660248901521660448701526064860152608485015260a484015260a43560c484015260e48301526101048201527f000000000000000000000000000000000000000000000000000000000000000061012482015261012481526107ee61014482612c2c565b8380fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610cc66131e9565b8073ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604060209173ffffffffffffffffffffffffffffffffffffffff610d7d612b9d565b168152600183522054604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604051806020600b5491828152018091600b85527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db990855b818110610e625750505082610e0b910383612c2c565b604051928392602084019060208552518091526040840192915b818110610e33575050500390f35b825173ffffffffffffffffffffffffffffffffffffffff16845285945060209384019390920191600101610e25565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610df5565b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f1610ec4612b9d565b73ffffffffffffffffffffffffffffffffffffffff604051917fc5eabfb900000000000000000000000000000000000000000000000000000000602084015216602482015260243560448201527f0000000000000000000000000000000000000000000000000000000000000000600f0b6064820152606481526105e0608482612c2c565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f0000000000000000000000000000000000000000000000000000000000000000600f0b8152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610ff2612b9d565b610ffa6131e9565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000601054161760105580f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c95760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576110b8612b9d565b6110c0612bc0565b90608435801515809103610c8b5773ffffffffffffffffffffffffffffffffffffffff6111429381604051947f6863f5bc0000000000000000000000000000000000000000000000000000000060208701521660248501521660448301526044356064830152606435608483015260a482015260a481526105e060c482612c2c565b805181019060208181840193031261120d5760208101519067ffffffffffffffff8211610c8b57019181603f840112156102c95760208301519267ffffffffffffffff84116111e0578360051b91604051946111a16020850187612c2c565b855260208080870194840101019384116102c95750604001905b8282106111d0576040518061049d8682612b1c565b81518152602091820191016111bb565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8280fd5b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043573ffffffffffffffffffffffffffffffffffffffff81168091036113e95761126a612bc0565b60643567ffffffffffffffff8111610c8b5736602382011215610c8b5780600401359067ffffffffffffffff82116113ed5736602483830101116113ed576113c3937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f846107ee9560246101049673ffffffffffffffffffffffffffffffffffffffff6040519a8b987fe49cd4750000000000000000000000000000000000000000000000000000000060208b0152848a0152166044880152604435606488015260c060848801528260e48801520186860137888582860101527f000000000000000000000000000000000000000000000000000000000000000060a48501527f000000000000000000000000000000000000000000000000000000000000000060c48501520116810103017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612c2c565b6020818051810103126113e957602001518015158091036113e957602090604051908152f35b5080fd5b8480fd5b50346102c95760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957611429612b9d565b611431612bc0565b906064359160a4358015158091036113ed578373ffffffffffffffffffffffffffffffffffffffff6114656114f496613235565b9381604051967f8d01fa440000000000000000000000000000000000000000000000000000000060208901521660248701521660448501526044356064850152608484015260843560a484015260c483015260e48201527f000000000000000000000000000000000000000000000000000000000000000061010482015261010481526105e061012482612c2c565b6040818051810103126113e95780604060208193015191015182519182526020820152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576060602060405161155881612be3565b838152015260405161156981612be3565b600954600f0b8152611579612e08565b906020810191825260405192839260208452606084019251600f0b6020850152519160408085015282518091526020608085019301915b8181106115be575050500390f35b8251600f0b8452859450602093840193909201916001016115b0565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576116116131e9565b60085460ff811615611621575080f35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001176008557f0f8eeedbc400fd6686703559f58d1e6143fdaed533f19a86c93d67a2fe4fb3318180a180f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405160128152f35b50346102c95760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761173b612b9d565b611743612bc0565b6044359173ffffffffffffffffffffffffffffffffffffffff811680855260026020526040852073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f2054907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82106117c0575b505061075a93506130c4565b84821061186657801561183a57331561180e578560409161075a975260026020522073ffffffffffffffffffffffffffffffffffffffff33165f526020528360405f20910390555f806117b4565b6024867f94280d6200000000000000000000000000000000000000000000000000000000815280600452fd5b6024867fe602df0500000000000000000000000000000000000000000000000000000000815280600452fd5b60648686847ffb8f41b200000000000000000000000000000000000000000000000000000000835233600452602452604452fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060ff600854166040519015158152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600354604051908152f35b506101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107115761194b612b9d565b602435917fffffffff00000000000000000000000000000000000000000000000000000000831690818403610711576044359173ffffffffffffffffffffffffffffffffffffffff83169485840361071157606435956084359560c4359687600f0b9687890361071157610104359860e4358a15158b036107115760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146127185760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005560ff600854166126ba5780159081156126af575b501561265157611a4690611a3b848d612eb7565b9060a435858e612f08565b9c859e95979392949f915073ffffffffffffffffffffffffffffffffffffffff611a6f83612c6d565b90549060031b1c169a73ffffffffffffffffffffffffffffffffffffffff611a9686612c6d565b90549060031b1c169c80155f146122df57505050878a73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001698898214806122d5575b156121fe57505050863b15610711575f8e976004604051809a81937fd0e30db00000000000000000000000000000000000000000000000000000000083525af19687156121f3578f908f908f996121dc575b50611b76611b98915b611b71611b5486612cb2565b90549060031b1c611b6487612cca565b90549060031b1c90612d4c565b612d4c565b91611b93611b8387612cb2565b90549060031b1c611b6488612cca565b612d12565b908d987f000000000000000000000000000000000000000000000000000000000000000090811515806121d3575b61214a575b5050611c6991611c4b611c0c611c6093611bf6611be788612cca565b90549060031b1c821015612da3565b611bff87612cca565b90549060031b1c90612d12565b611c1586612cb2565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b611c57611be787612cca565b611bff86612cca565b611c1585612cb2565b8b82600f0b13156120ec578b84600f0b131561208e57611cf293611cda82611cb2611cac611cb296611c9d611cac97613084565b90549060031b1c600f0b6133db565b91613084565b9091906fffffffffffffffffffffffffffffffff83549160031b928116831b921b1916179055565b611ce384613084565b90549060031b1c600f0b613433565b8061204f575b15611f895773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b15611f855787809160248d60405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af18015611f7a579188918c93611f5c575b5081809381925af13d15611f57573d67ffffffffffffffff8111611f2a5760405190611dd760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160183612c2c565b81528760203d92013e5b15611ecc577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a0915b611e16818a612d12565b73ffffffffffffffffffffffffffffffffffffffff604051931683528a60208401528b604084015260608301526080820152a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015611e9b575b50505061049d90604051938493846040919493926060820195825260208201520152565b8280809381938290611ec3575b3390f115611eb7578080611e77565b604051903d90823e3d90fd5b506108fc611ea8565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b611de1565b611f699193508290612c2c565b611f7657868a915f611d83565b8680fd5b6040513d8a823e3d90fd5b8780fd5b506040517fa9059cbb0000000000000000000000000000000000000000000000000000000087528360045289602452602087604481808a5af190600188511482161561202e575b60405215612002577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a091611e0c565b602486867f5274afe7000000000000000000000000000000000000000000000000000000008252600452fd5b90600181151661204657863b15153d15161690611fd0565b503d87823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168614611cf8565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a20616d6f756e744f7574203c3d20300000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4d53523a20616d6f756e74496e203c3d2030000000000000000000000000006044820152fd5b611c60929a50611c0c620f4240612168611c699694611c4b94612d59565b049b8c61217b575b93505050918f611bcb565b6121ce8d61219a61218b8a612cca565b91909283548360031b1c612d4c565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b612170565b50801515611bc6565b6121e9919e505f90612c2c565b5f9c611b76611b3f565b6040513d5f823e3d90fd5b60209293949596979899505f80809360649373ffffffffffffffffffffffffffffffffffffffff604051987f23b872dd00000000000000000000000000000000000000000000000000000000855216600452306024526044525af19060015f51148216156122b4575b6040525f6060521561228857908b95949392918e611b988f611b7690611b48565b887f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9060018115166122cc578a3b15153d15161690612267565b503d5f823e3d90fd5b5080341015611aed565b92985090917c0100000000000000000000000000000000000000000000000000000000036124a55750612421576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526020816024818d5afa80156121f3578e915f916123ea575b50612377906123716123618a612cb2565b90549060031b1c611b648b612cca565b90612d12565b0361238c578b958e611b988f611b7690611b48565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496e636f72726563742070726566756e64696e6720616d6f756e7400000000006044820152fd5b9150506020813d602011612419575b8161240660209383612c2c565b8101031261071157518d90612377612350565b3d91506123f9565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f50726566756e64696e672063616e6e6f7420626520757365642077697468206160448201527f206c696d697420707269636500000000000000000000000000000000000000006064820152fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015291506020826024818e5afa9182156121f3578f905f93612619575b506024929161251d916040519160208301528d85830152604482015260448152612517606482612c2c565b8a6133b8565b5060208b604051938480927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa80156121f3578f925f916125e0575b509061256d91612d12565b03612582578b958e611b988f611b7690611b48565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e742066756e647300000000000000000000000000006044820152fd5b919250506020813d602011612611575b816125fd60209383612c2c565b8101031261071157518e919061256d612562565b3d91506125f0565b9250506020823d602011612649575b8161263560209383612c2c565b81010312610711579051908e61251d6124ec565b3d9150612628565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f737761703a20646561646c696e652065786365656465640000000000000000006044820152fd5b90504211155f611a27565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346107115760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576127e5612b9d565b6024359033156128875773ffffffffffffffffffffffffffffffffffffffff1690811561285b57335f52600260205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576040515f6004548060011c906001811680156129f2575b6020831081146129c5578285529081156129835750600114612925575b61049d8361094281850382612c2c565b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b80821061296957509091508101602001610942612915565b919260018160209254838588010152019101909291612951565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b840190910191506109429050612915565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916128f8565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157604051806020600d54918281520190600d5f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5905f5b818110612a785761049d856108ab81870382612c2c565b8254845260209093019260019283019201612a61565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157600c548082526020820190600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7905f5b818110612b065761049d856108ab81870382612c2c565b8254845260209093019260019283019201612aef565b60206040818301928281528451809452019201905f5b818110612b3f5750505090565b8251845260209384019390920191600101612b32565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6040810190811067ffffffffffffffff821117612bff57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612bff57604052565b600b54811015612c8557600b5f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600f54811015612c8557600f5f5260205f2001905f90565b600c54811015612c8557600c5f5260205f2001905f90565b600d54811015612c8557600d5f5260205f2001905f90565b600654811015612c855760065f5260205f2001905f90565b91908203918211612d1f57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b91908201809211612d1f57565b81810292918115918404141715612d1f57565b8115612d76570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b15612daa57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f62616c616e6365203c2070726f746f636f6c206f7765640000000000000000006044820152fd5b60405190600a548083528260208101600a5f5260205f20925f905b806001830110612e7057612e49945491818110612e5c575b10612e4b575b500383612c2c565b565b60801d600f0b81526020015f612e41565b92602060019184600f0b8152019301612e3b565b9160029193506040600191865480600f0b825260801d600f0b6020820152019401920185929391612e23565b90816060910312610711578051916040602083015192015190565b9190826103e8026103e881048403612d1f5781612ed391612d4c565b90815f52600760205260405f2054938415612eed57505050565b612ef892945061330e565b915f5260076020528160405f2055565b92949394919091612f34612f1c878461332b565b9050612f2786612ce2565b90549060031b1c90613489565b905f82600f0b131561302657612f5a918486600954600f0b612f54612e08565b90613722565b919092612f798394612f6c8197612ce2565b90549060031b1c9061334d565b925f92849880613005575b508811612fa757612f97612fa492612ce2565b90549060031b1c906136b3565b94565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f737761703a207472616e736665722065786365656473206d61780000000000006044820152fd5b9098506130149193508461337f565b9161301f8385612d4c565b975f612f84565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761703a20696e70757420746f6f20736d616c6c20616674657220666565006044820152fd5b90600a54821015612c8557600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b73ffffffffffffffffffffffffffffffffffffffff169081156131bd5773ffffffffffffffffffffffffffffffffffffffff1691821561319157815f52600160205260405f205481811061315f57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f52600184520360405f2055845f526001825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff5f5416330361320957565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b600654156132505761324690612cfa565b90549060031b1c90565b505f90565b905f8091602081519101845af480806132fb575b1561327b575050613278613470565b90565b156132c25773ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b3d156132d3576040513d5f823e3d90fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b503d1515806132695750813b1515613269565b90611b6461331e61327893612cfa565b90549060031b1c91612cfa565b9190801561334757613340613278918461337f565b8093612d12565b505f9190565b61336161335a83836136b3565b9283613489565b90600f0b90600f0b126133715790565b60018101809111612d1f5790565b9080156133b25761338f91612d59565b620f4240810190818111612d1f57620f423f01908111612d1f57620f4240900490565b50505f90565b905f809160208151910182855af180806132fb571561327b575050613278613470565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613419575b1561071157600f0b90565b506f7fffffffffffffffffffffffffffffff81131561340e565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613419571561071157600f0b90565b604051903d82523d5f602084013e60203d830101604052565b81156107115777ffffffffffffffffffffffffffffffffffffffffffffffff811161350157906134bb9160401b612d6c565b6fffffffffffffffffffffffffffffffff8111610711576fffffffffffffffffffffffffffffffff166f7fffffffffffffffffffffffffffffff811161071157600f0b90565b60c09181831c80936401000000008210156136a6575b600282620100006135a494101561369a575b61010081101561368e575b6010811015613682575b6004811015613677575b101561366f575b8360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b612d6c565b926fffffffffffffffffffffffffffffffff8411610711578160801c8402906fffffffffffffffffffffffffffffffff8316850290809460401b90828210613645575b5003928160801b9182851061361c575b60801c03613611576136099203612d6c565b905b016134bb565b50505060019061360b565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906135f7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f6135e7565b60010161354f565b91810191811c613548565b6004928301921c61353e565b6008928301921c613534565b6010928301921c613529565b505060e082811c90613517565b81156133b257600f0b5f8112610711576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116107115760401b81198111610711570190565b8051821015612c855760209160051b010190565b955f959194939092849290875b875189101561375a576137526001916137488b8b61370e565b51600f0b906133db565b98019761372f565b909294975097909294975f81600f0b1315613b985761377891613bf6565b9384600f0b80156107115770010000000000000000000000000000000005917fffffffffffffffffffffffffffffffff8000000000000000000000000000000083121580613b7e575b15610711576137fd613802916137f86137e095600f0b9586928b61370e565b51600f0b6137ee898c61370e565b51600f0b90613433565b613bf6565b613c36565b9280600f0b905f82136139ee575b50509061381c91613bf6565b80600f0b68200000000000000000811361396a577fffffffffffffffffffffffffffffffff800000000000000000000000000000001461071157613864905f03600f0b613c36565b600f0b6801000000000000000003907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082121580613950575b15610711576138af91600f0b90613bf6565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613936575b1561071157600f0b925f84131561392257505061390661390c92613c93565b90613bf6565b905f82600f0b131561391a57565b5f9250829150565b90915061392f925061370e565b51600f0b90565b506f7fffffffffffffffffffffffffffffff8113156138e7565b506f7fffffffffffffffffffffffffffffff82131561389d565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4c4d53523a20612f6220746f6f206c617267652028776f756c64206f7665726660448201527f6c6f7720657870290000000000000000000000000000000000000000000000006064820152fd5b84600f9a939a0b80921315613afa5781156107115760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613ae0575b1561071157600f0b5f811315613a8257613a50613a5691613c93565b86613bf6565b9780600f0b89600f0b125f14613a7657505061381c90875b90915f613810565b61381c92919850613a6e565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4d53523a20726174696f3c3d300000000000000000000000000000000000006044820152fd5b506f7fffffffffffffffffffffffffffffff811315613a34565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4c4d53523a206c696d69745072696365203c3d2063757272656e74207072696360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152fd5b506f7fffffffffffffffffffffffffffffff8313156137c1565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613419571561071157600f0b90565b600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000811261325057700171547652b82fe1777d0ffda0d23a7d12613278910260801d600f0b613dc0565b600f0b5f811315610711575f908068010000000000000000821215613db3575b806401000000006002921215613da7575b62010000811215613d9b575b610100811215613d8f575b6010811215613d83575b6004811215613d78575b1215613d6e575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f8313613d5257506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d90565b8002908160ff1c9182607f011c918302019160011d9190613d2d565b9060010190613cf6565b92810192811d613cef565b6004938401931d613ce5565b6008938401931d613cdb565b6010938401931d613cd0565b6020938401931d613cc4565b506040915080821d613cb3565b80600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000081126133b2576f80000000000000000000000000000000915f6780000000000000008216600f0b136149bc575b5f6740000000000000008216600f0b1361499f575b5f6720000000000000008216600f0b13614982575b5f6710000000000000008216600f0b13614965575b5f6708000000000000008216600f0b13614948575b5f6704000000000000008216600f0b1361492b575b5f6702000000000000008216600f0b1361490e575b5f6701000000000000008216600f0b136148f1575b5f66800000000000008216600f0b136148d4575b5f66400000000000008216600f0b136148b7575b5f66200000000000008216600f0b1361489a575b5f66100000000000008216600f0b1361487d575b5f66080000000000008216600f0b13614860575b5f66040000000000008216600f0b13614843575b5f66020000000000008216600f0b13614826575b5f66010000000000008216600f0b13614809575b5f658000000000008216600f0b136147ec575b5f654000000000008216600f0b136147cf575b5f652000000000008216600f0b136147b2575b5f651000000000008216600f0b13614795575b5f650800000000008216600f0b13614778575b5f650400000000008216600f0b1361475b575b5f650200000000008216600f0b1361473e575b5f650100000000008216600f0b13614721575b5f6480000000008216600f0b13614704575b5f6440000000008216600f0b136146e7575b5f6420000000008216600f0b136146ca575b5f6410000000008216600f0b136146ad575b5f6408000000008216600f0b13614690575b5f6404000000008216600f0b13614673575b5f6402000000008216600f0b13614656575b5f6401000000008216600f0b13614639575b5f63800000008216600f0b1361461c575b5f63400000008216600f0b136145ff575b5f63200000008216600f0b136145e2575b5f63100000008216600f0b136145c5575b5f63080000008216600f0b136145a8575b5f63040000008216600f0b1361458b575b5f63020000008216600f0b1361456e575b5f63010000008216600f0b13614551575b5f628000008216600f0b13614534575b5f624000008216600f0b13614517575b5f622000008216600f0b136144fa575b5f621000008216600f0b136144dd575b5f620800008216600f0b136144c0575b5f620400008216600f0b136144a3575b5f620200008216600f0b13614486575b5f620100008216600f0b13614469575b5f6180008216600f0b1361444c575b5f6140008216600f0b1361442f575b5f6120008216600f0b13614412575b5f6110008216600f0b136143f5575b5f6108008216600f0b136143d8575b5f6104008216600f0b136143bb575b5f6102008216600f0b1361439e575b5f6101008216600f0b13614381575b5f60808216600f0b13614364575b5f60408216600f0b13614347575b5f60208216600f0b1361432a575b5f60108216600f0b1361430d575b5f60088216600f0b136142f0575b5f60048216600f0b136142d3575b5f60028216600f0b136142b5575b60015f9116600f0b13614298575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161071157600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c9061426e565b7001000000000000000162e42fefa39ef35890920260801c91614260565b9170010000000000000002c5c85fdf473de6b20260801c91614252565b91700100000000000000058b90bfbe8e7bcd6d0260801c91614244565b917001000000000000000b17217f7d1cf79afa0260801c91614236565b91700100000000000000162e42fefa39ef366f0260801c91614228565b917001000000000000002c5c85fdf473de6eca0260801c9161421a565b9170010000000000000058b90bfbe8e7bce5440260801c9161420c565b91700100000000000000b17217f7d1cf79e9490260801c916141fe565b9170010000000000000162e42fefa39ef44d910260801c916141ef565b91700100000000000002c5c85fdf473dea871f0260801c916141e0565b917001000000000000058b90bfbe8e7bdcbe2e0260801c916141d1565b9170010000000000000b17217f7d1cf7d83c1a0260801c916141c2565b917001000000000000162e42fefa39f02b772c0260801c916141b3565b9170010000000000002c5c85fdf473e242ea380260801c916141a4565b91700100000000000058b90bfbe8e7cc35c3f00260801c91614195565b917001000000000000b17217f7d1cfb72b45e10260801c91614186565b91700100000000000162e42fefa39fe95583c20260801c91614176565b917001000000000002c5c85fdf4741bea6e77e0260801c91614166565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c91614156565b91700100000000000b17217f7d1d351a389d400260801c91614146565b9170010000000000162e42fefa3ae53369388c0260801c91614136565b91700100000000002c5c85fdf477b662b269450260801c91614126565b917001000000000058b90bfbe8f71cb4e4b33d0260801c91614116565b9170010000000000b17217f7d20cf927c8e94c0260801c91614106565b917001000000000162e42fefa494f1478fde050260801c916140f5565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c916140e4565b91700100000000058b90bfbe9ddbac5e109cce0260801c916140d3565b917001000000000b17217f7d5a7716bba4a9ae0260801c916140c2565b91700100000000162e42fefb2fed257559bdaa0260801c916140b1565b917001000000002c5c85fdf84bd62ae30a74cc0260801c916140a0565b9170010000000058b90bfbf8479bd5a81b51ad0260801c9161408f565b91700100000000b17217f80f4ef5aadda455540260801c9161407e565b9170010000000162e42ff0999ce3541b9fffcf0260801c9161406c565b91700100000002c5c85fe31f35a6a30da1be500260801c9161405a565b917001000000058b90bfcdee5acd3c1cedc8230260801c91614048565b9170010000000b17217fba9c739aa5819f44f90260801c91614036565b917001000000162e42fff037df38aa2b219f060260801c91614024565b9170010000002c5c8601cc6b9e94213c72737a0260801c91614012565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91614000565b917001000000b1721835514b86e6d96efd1bfe0260801c91613fee565b91700100000162e430e5a18f6119e3c02282a50260801c91613fdb565b917001000002c5c863b73f016468f6bac5ca2b0260801c91613fc8565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91613fb5565b91700100000b1721bcfc99d9f890ea069117630260801c91613fa2565b9170010000162e43f4f831060e02d839a9d16d0260801c91613f8f565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c91613f7c565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c91613f69565b9170010000b17255775c040618bf4a4ade83fc0260801c91613f56565b917001000162e525ee054754457d59952920260260801c91613f42565b9170010002c5cc37da9491d0985c348c68e7b30260801c91613f2e565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91613f1a565b917001000b175effdc76ba38e31671ca9397250260801c91613f06565b91700100162f3904051fa128bca9c55c31e5df0260801c91613ef2565b917001002c605e2e8cec506d21bfc89a23a00f0260801c91613ede565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c91613eca565b91700100b1afa5abcbed6129ab13ec11dc95430260801c91613eb6565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c91613ea1565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c91613e8c565b917001059b0d31585743ae7c548eb68ca417fd0260801c91613e77565b9170010b5586cf9890f6298b92b71842a983630260801c91613e62565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c91613e4d565b917001306fe0a31b7152de8d5a46305c85edec0260801c91613e38565b6fb504f333f9de6484597d89b3754abe9f9250613e2356fea2646970667358221220eb055801e8ab9805a5a63034ae9b30d67850f64e3702721cdac9d52abc57ce0e64736f6c634300081e0033","sourceMap":"2274:18983:48:-:0;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;2274:18983:48;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;2274:18983:48;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;2274:18983:48;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2274:18983:48;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;2274:18983:48;;;;;;;;;;;-1:-1:-1;;;;;2274:18983:48;;;;;;;;;;-1:-1:-1;;;;;2274:18983:48;;;;;;;1505:66:29;2274:18983:48;;1149:24:50;-1:-1:-1;;;;;2274:18983:48;1018:26:44;;1014:95;;-1:-1:-1;2274:18983:48;;-1:-1:-1;;;;;;2274:18983:48;;;;;;-1:-1:-1;;;;;2274:18983:48;;1104:49:45;;-1:-1:-1;1104:49:45;2274:18983:48;;;-1:-1:-1;;;;;2274:18983:48;;;;882:13:33;2274:18983:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2274:18983:48;;;;;;;;;;;;;;;;;;;882:13:33;2274:18983:48;;;;;-1:-1:-1;;;;;2274:18983:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2274:18983:48;;;;;;;;;;;;;;;;;;;;;;;;;6422:18;2274:18983;;;;;;-1:-1:-1;;;;;2274:18983:48;;;;;;;;;6474:17;2274:18983;;6474:17;2274:18983;;;;;;;;6474:17;-1:-1:-1;2274:18983:48;;-1:-1:-1;2274:18983:48;-1:-1:-1;2274:18983:48;;;;;;6501:14;;;;2274:18983;6501:14;2274:18983;;;;6533:30;2274:18983;;6645:27;2274:18983;;6645:27;:::i;:::-;2274:18983;;;-1:-1:-1;;;;;2274:18983:48;;;;;;;;;;;6637:35;2274:18983;;6637:35;2274:18983;;;;;;;;;6637:35;-1:-1:-1;2274:18983:48;;-1:-1:-1;2274:18983:48;-1:-1:-1;2274:18983:48;;;;;;6687:13;;;;-1:-1:-1;6720:3:48;2274:18983;;6702:16;;;;;6792:6;6781:8;;;;:::i;:::-;2274:18983;6781:17;2274:18983;;;6843:8;;;;:::i;:::-;2274:18983;;6637:35;2274:18983;;;;;;;;6637:35;-1:-1:-1;2274:18983:48;;;-1:-1:-1;2274:18983:48;;;;6687:13;;2274:18983;;;;-1:-1:-1;2274:18983:48;;882:13:33;2274:18983:48;;-1:-1:-1;2274:18983:48;;;;-1:-1:-1;;;2274:18983:48;;;882:13:33;2274:18983:48;;;;;;;;-1:-1:-1;;;2274:18983:48;;;;;;;6702:16;;;6792:6;6879:21;;2274:18983;;;;6936:28;7000:7;6982:25;;2274:18983;;;7145:20;;:57;;;;6682:180;2274:18983;;;;7213:34;7257:40;2274:18983;;-1:-1:-1;;;;;;2274:18983:48;-1:-1:-1;;;;;2274:18983:48;;;;;;;;;;;7307:21;2274:18983;7338:21;2274:18983;;;-1:-1:-1;7477:5:48;;;;;;7702:16;;;;:::i;:::-;2274:18983;;;-1:-1:-1;;;;;2274:18983:48;;;;;;;;;;;7693:25;2274:18983;;7693:25;2274:18983;;;;;;7460:126;2274:18983;;7693:25;-1:-1:-1;2274:18983:48;;-1:-1:-1;2274:18983:48;-1:-1:-1;2274:18983:48;;;;;;7808:16;;;;:::i;:::-;2274:18983;;;-1:-1:-1;;;;;2274:18983:48;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2274:18983:48;;-1:-1:-1;2274:18983:48;-1:-1:-1;2274:18983:48;;;;;;7854:16;;;:::i;:::-;2274:18983;;;-1:-1:-1;;;;;2274:18983:48;;;;;;;;;;;7834:36;2274:18983;;7834:36;2274:18983;;;;;;;;;;7834:36;-1:-1:-1;2274:18983:48;;-1:-1:-1;2274:18983:48;;-1:-1:-1;2274:18983:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7834:36;-1:-1:-1;2274:18983:48;;;-1:-1:-1;2274:18983:48;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;2274:18983:48;;882:13:33;2274:18983:48;;-1:-1:-1;2274:18983:48;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2274:18983:48;;;-1:-1:-1;2274:18983:48;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7693:25;-1:-1:-1;2274:18983:48;;;-1:-1:-1;2274:18983:48;;;;;;;:::i;:::-;;;;7465:10;2274:18983;;;;;;;;;-1:-1:-1;;;;;2274:18983:48;7527:10;;;;:::i;:::-;2274:18983;;-1:-1:-1;2274:18983:48;7499:27;2274:18983;;;;-1:-1:-1;2274:18983:48;;7465:10;;2274:18983;;;;-1:-1:-1;2274:18983:48;;882:13:33;2274:18983:48;;-1:-1:-1;2274:18983:48;;-1:-1:-1;2274:18983:48;;7145:57;-1:-1:-1;;;;;;2274:18983:48;;7169:33;;7145:57;;2274:18983;;;-1:-1:-1;;;2274:18983:48;;;882:13:33;2274:18983:48;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2274:18983:48;;;882:13:33;2274:18983:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6637:35;-1:-1:-1;2274:18983:48;;;-1:-1:-1;2274:18983:48;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;2274:18983:48;;;882:13:33;2274:18983:48;;;;;;;;-1:-1:-1;;;2274:18983:48;;;;;;;;;;-1:-1:-1;;;;;2274:18983:48;;;;;;;;;;;;;;;6474:17;-1:-1:-1;2274:18983:48;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;2274:18983:48;;;882:13:33;2274:18983:48;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2274:18983:48;;;;;;-1:-1:-1;2274:18983:48;;;;;;;-1:-1:-1;;;2274:18983:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2274:18983:48;;-1:-1:-1;2274:18983:48;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;2274:18983:48;;;;;;;;-1:-1:-1;2274:18983:48;;882:13:33;2274:18983:48;;-1:-1:-1;2274:18983:48;;;;;;;;;;;;-1:-1:-1;2274:18983:48;;;;;882:13:33;-1:-1:-1;2274:18983:48;;;;;;;-1:-1:-1;;;2274:18983:48;;;;;;;;;;;;;;;;;;;;;;;;;;;882:13:33;2274:18983:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;882:13:33;-1:-1:-1;2274:18983:48;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;1014:95:44;1067:31;;;-1:-1:-1;1067:31:44;-1:-1:-1;1067:31:44;2274:18983:48;;-1:-1:-1;1067:31:44;2274:18983:48;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2274:18983:48;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2274:18983:48;;;-1:-1:-1;;;;;2274:18983:48;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;2274:18983:48;;;;;;:::o;:::-;;;;;;;;;;;;-1:-1:-1;;;;;2274:18983:48;;;;;;;;-1:-1:-1;;2274:18983:48;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;2274:18983:48;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;2274:18983:48;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c908163017504b614612a8e57508063017cf661146129fc57806306fdde03146128b3578063095ea7b3146127ae5780630d246214146127405780630eeee6271461191757806318160ddd146118db5780631f3a0e411461189a57806323b872dd14611703578063313ce567146116c957806331596a6a1461167057806341c0e1b5146115da578063476e44b614611519578063491e7998146113f15780635cffe9de146112115780636863f5bc146110805780636b4082d1146110275780636b7b911214610fa55780636bba3f2f14610f495780636d8d0ff314610e8e5780636ff97f1d14610d8e57806370a0823114610d2b578063715018a614610c8f57806379a68d5314610b6b5780638da5cb5b14610b1a5780638e499bcf14610ade578063939f5ea414610a965780639517606614610a2757806395d89b41146108cd5780639af1d35a1461082e578063a1af5b9a14610765578063a9059cbb14610715578063b3f1c93d14610648578063cb717f3a146104f3578063cce516b7146104a1578063d516b8c614610416578063dd62ed3e1461039d578063e4b50cb81461033b578063f0d1ae4f146102cc5763f2fde38b0361000f57346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610228612b9d565b6102306131e9565b16801561029d5773ffffffffffffffffffffffffffffffffffffffff8254827fffffffffffffffffffffffff00000000000000000000000000000000000000008216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b6024827f1e4fbdf700000000000000000000000000000000000000000000000000000000815280600452fd5b80fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff61038d600435612c6d565b90549060031b1c16604051908152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff60406103ec612b9d565b92826103f6612bc0565b9416815260026020522091165f52602052602060405f2054604051908152f35b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043590602435916064359182600f0b83036102c95761049d61047985858561046f838261330e565b9260443591612f08565b92505050604093919351938493846040919493926060820195825260208201520152565b0390f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff60105416604051908152f35b5060a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761049d61062b61061c61052f612b9d565b610537612bc0565b60443573ffffffffffffffffffffffffffffffffffffffff61055882613235565b9281604051957f3dd3c8050000000000000000000000000000000000000000000000000000000060208801521660248601521660448401526064830152606435608483015260843560a483015260c48201527f000000000000000000000000000000000000000000000000000000000000000060e482015260e481526105e061010482612c2c565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016613255565b60208082518301019101612e9c565b604080519384526020840192909252908201529081906060820190565b5060807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f161067e612b9d565b73ffffffffffffffffffffffffffffffffffffffff61069b612bc0565b81604051937fb3f1c93d00000000000000000000000000000000000000000000000000000000602086015216602484015216604482015260443560648201526064356084820152608481526105e060a482612c2c565b602081519181808201938492010103126107115760209051604051908152f35b5f80fd5b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761075a610750612b9d565b60243590336130c4565b602060405160018152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761082a73ffffffffffffffffffffffffffffffffffffffff60105416604051907f2a54db010000000000000000000000000000000000000000000000000000000060208301526024820152602481526107ee604482612c2c565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016613255565b5080f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760405180916020600654928381520191600682527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f915b8181106108b75761049d856108ab81870382612c2c565b60405191829182612b1c565b8254845260209093019260019283019201610894565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576040519080600554908160011c91600181168015610a1d575b6020841081146109f0578386529081156109ab575060011461094e575b61049d8461094281860382612c2c565b60405191829182612b55565b600581527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0939250905b8082106109915750909150810160200161094282610932565b919260018160209254838588010152019101909291610978565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208087019190915292151560051b850190920192506109429150839050610932565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b92607f1692610915565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020610ad660243560043561330e565b604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600b54604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b5060e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610b9e612b9d565b90610ba7612bc0565b906044356064356084359182600f0b809303610c8b5760c435938415158095036102c95761049d61062b61061c89898989898973ffffffffffffffffffffffffffffffffffffffff610bf98383612eb7565b9581604051987f8a3d858d0000000000000000000000000000000000000000000000000000000060208b01521660248901521660448701526064860152608485015260a484015260a43560c484015260e48301526101048201527f000000000000000000000000000000000000000000000000000000000000000061012482015261012481526107ee61014482612c2c565b8380fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610cc66131e9565b8073ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604060209173ffffffffffffffffffffffffffffffffffffffff610d7d612b9d565b168152600183522054604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604051806020600b5491828152018091600b85527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db990855b818110610e625750505082610e0b910383612c2c565b604051928392602084019060208552518091526040840192915b818110610e33575050500390f35b825173ffffffffffffffffffffffffffffffffffffffff16845285945060209384019390920191600101610e25565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610df5565b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f1610ec4612b9d565b73ffffffffffffffffffffffffffffffffffffffff604051917fc5eabfb900000000000000000000000000000000000000000000000000000000602084015216602482015260243560448201527f0000000000000000000000000000000000000000000000000000000000000000600f0b6064820152606481526105e0608482612c2c565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f0000000000000000000000000000000000000000000000000000000000000000600f0b8152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610ff2612b9d565b610ffa6131e9565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000601054161760105580f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c95760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576110b8612b9d565b6110c0612bc0565b90608435801515809103610c8b5773ffffffffffffffffffffffffffffffffffffffff6111429381604051947f6863f5bc0000000000000000000000000000000000000000000000000000000060208701521660248501521660448301526044356064830152606435608483015260a482015260a481526105e060c482612c2c565b805181019060208181840193031261120d5760208101519067ffffffffffffffff8211610c8b57019181603f840112156102c95760208301519267ffffffffffffffff84116111e0578360051b91604051946111a16020850187612c2c565b855260208080870194840101019384116102c95750604001905b8282106111d0576040518061049d8682612b1c565b81518152602091820191016111bb565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8280fd5b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043573ffffffffffffffffffffffffffffffffffffffff81168091036113e95761126a612bc0565b60643567ffffffffffffffff8111610c8b5736602382011215610c8b5780600401359067ffffffffffffffff82116113ed5736602483830101116113ed576113c3937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f846107ee9560246101049673ffffffffffffffffffffffffffffffffffffffff6040519a8b987fe49cd4750000000000000000000000000000000000000000000000000000000060208b0152848a0152166044880152604435606488015260c060848801528260e48801520186860137888582860101527f000000000000000000000000000000000000000000000000000000000000000060a48501527f000000000000000000000000000000000000000000000000000000000000000060c48501520116810103017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612c2c565b6020818051810103126113e957602001518015158091036113e957602090604051908152f35b5080fd5b8480fd5b50346102c95760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957611429612b9d565b611431612bc0565b906064359160a4358015158091036113ed578373ffffffffffffffffffffffffffffffffffffffff6114656114f496613235565b9381604051967f8d01fa440000000000000000000000000000000000000000000000000000000060208901521660248701521660448501526044356064850152608484015260843560a484015260c483015260e48201527f000000000000000000000000000000000000000000000000000000000000000061010482015261010481526105e061012482612c2c565b6040818051810103126113e95780604060208193015191015182519182526020820152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576060602060405161155881612be3565b838152015260405161156981612be3565b600954600f0b8152611579612e08565b906020810191825260405192839260208452606084019251600f0b6020850152519160408085015282518091526020608085019301915b8181106115be575050500390f35b8251600f0b8452859450602093840193909201916001016115b0565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576116116131e9565b60085460ff811615611621575080f35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001176008557f0f8eeedbc400fd6686703559f58d1e6143fdaed533f19a86c93d67a2fe4fb3318180a180f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405160128152f35b50346102c95760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761173b612b9d565b611743612bc0565b6044359173ffffffffffffffffffffffffffffffffffffffff811680855260026020526040852073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f2054907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82106117c0575b505061075a93506130c4565b84821061186657801561183a57331561180e578560409161075a975260026020522073ffffffffffffffffffffffffffffffffffffffff33165f526020528360405f20910390555f806117b4565b6024867f94280d6200000000000000000000000000000000000000000000000000000000815280600452fd5b6024867fe602df0500000000000000000000000000000000000000000000000000000000815280600452fd5b60648686847ffb8f41b200000000000000000000000000000000000000000000000000000000835233600452602452604452fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060ff600854166040519015158152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600354604051908152f35b506101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107115761194b612b9d565b602435917fffffffff00000000000000000000000000000000000000000000000000000000831690818403610711576044359173ffffffffffffffffffffffffffffffffffffffff83169485840361071157606435956084359560c4359687600f0b9687890361071157610104359860e4358a15158b036107115760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146127185760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005560ff600854166126ba5780159081156126af575b501561265157611a4690611a3b848d612eb7565b9060a435858e612f08565b9c859e95979392949f915073ffffffffffffffffffffffffffffffffffffffff611a6f83612c6d565b90549060031b1c169a73ffffffffffffffffffffffffffffffffffffffff611a9686612c6d565b90549060031b1c169c80155f146122df57505050878a73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001698898214806122d5575b156121fe57505050863b15610711575f8e976004604051809a81937fd0e30db00000000000000000000000000000000000000000000000000000000083525af19687156121f3578f908f908f996121dc575b50611b76611b98915b611b71611b5486612cb2565b90549060031b1c611b6487612cca565b90549060031b1c90612d4c565b612d4c565b91611b93611b8387612cb2565b90549060031b1c611b6488612cca565b612d12565b908d987f000000000000000000000000000000000000000000000000000000000000000090811515806121d3575b61214a575b5050611c6991611c4b611c0c611c6093611bf6611be788612cca565b90549060031b1c821015612da3565b611bff87612cca565b90549060031b1c90612d12565b611c1586612cb2565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b611c57611be787612cca565b611bff86612cca565b611c1585612cb2565b8b82600f0b13156120ec578b84600f0b131561208e57611cf293611cda82611cb2611cac611cb296611c9d611cac97613084565b90549060031b1c600f0b6133db565b91613084565b9091906fffffffffffffffffffffffffffffffff83549160031b928116831b921b1916179055565b611ce384613084565b90549060031b1c600f0b613433565b8061204f575b15611f895773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b15611f855787809160248d60405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af18015611f7a579188918c93611f5c575b5081809381925af13d15611f57573d67ffffffffffffffff8111611f2a5760405190611dd760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160183612c2c565b81528760203d92013e5b15611ecc577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a0915b611e16818a612d12565b73ffffffffffffffffffffffffffffffffffffffff604051931683528a60208401528b604084015260608301526080820152a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015611e9b575b50505061049d90604051938493846040919493926060820195825260208201520152565b8280809381938290611ec3575b3390f115611eb7578080611e77565b604051903d90823e3d90fd5b506108fc611ea8565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b611de1565b611f699193508290612c2c565b611f7657868a915f611d83565b8680fd5b6040513d8a823e3d90fd5b8780fd5b506040517fa9059cbb0000000000000000000000000000000000000000000000000000000087528360045289602452602087604481808a5af190600188511482161561202e575b60405215612002577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a091611e0c565b602486867f5274afe7000000000000000000000000000000000000000000000000000000008252600452fd5b90600181151661204657863b15153d15161690611fd0565b503d87823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168614611cf8565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a20616d6f756e744f7574203c3d20300000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4d53523a20616d6f756e74496e203c3d2030000000000000000000000000006044820152fd5b611c60929a50611c0c620f4240612168611c699694611c4b94612d59565b049b8c61217b575b93505050918f611bcb565b6121ce8d61219a61218b8a612cca565b91909283548360031b1c612d4c565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b612170565b50801515611bc6565b6121e9919e505f90612c2c565b5f9c611b76611b3f565b6040513d5f823e3d90fd5b60209293949596979899505f80809360649373ffffffffffffffffffffffffffffffffffffffff604051987f23b872dd00000000000000000000000000000000000000000000000000000000855216600452306024526044525af19060015f51148216156122b4575b6040525f6060521561228857908b95949392918e611b988f611b7690611b48565b887f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9060018115166122cc578a3b15153d15161690612267565b503d5f823e3d90fd5b5080341015611aed565b92985090917c0100000000000000000000000000000000000000000000000000000000036124a55750612421576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526020816024818d5afa80156121f3578e915f916123ea575b50612377906123716123618a612cb2565b90549060031b1c611b648b612cca565b90612d12565b0361238c578b958e611b988f611b7690611b48565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496e636f72726563742070726566756e64696e6720616d6f756e7400000000006044820152fd5b9150506020813d602011612419575b8161240660209383612c2c565b8101031261071157518d90612377612350565b3d91506123f9565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f50726566756e64696e672063616e6e6f7420626520757365642077697468206160448201527f206c696d697420707269636500000000000000000000000000000000000000006064820152fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015291506020826024818e5afa9182156121f3578f905f93612619575b506024929161251d916040519160208301528d85830152604482015260448152612517606482612c2c565b8a6133b8565b5060208b604051938480927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa80156121f3578f925f916125e0575b509061256d91612d12565b03612582578b958e611b988f611b7690611b48565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e742066756e647300000000000000000000000000006044820152fd5b919250506020813d602011612611575b816125fd60209383612c2c565b8101031261071157518e919061256d612562565b3d91506125f0565b9250506020823d602011612649575b8161263560209383612c2c565b81010312610711579051908e61251d6124ec565b3d9150612628565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f737761703a20646561646c696e652065786365656465640000000000000000006044820152fd5b90504211155f611a27565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346107115760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576127e5612b9d565b6024359033156128875773ffffffffffffffffffffffffffffffffffffffff1690811561285b57335f52600260205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576040515f6004548060011c906001811680156129f2575b6020831081146129c5578285529081156129835750600114612925575b61049d8361094281850382612c2c565b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b80821061296957509091508101602001610942612915565b919260018160209254838588010152019101909291612951565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b840190910191506109429050612915565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916128f8565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157604051806020600d54918281520190600d5f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5905f5b818110612a785761049d856108ab81870382612c2c565b8254845260209093019260019283019201612a61565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157600c548082526020820190600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7905f5b818110612b065761049d856108ab81870382612c2c565b8254845260209093019260019283019201612aef565b60206040818301928281528451809452019201905f5b818110612b3f5750505090565b8251845260209384019390920191600101612b32565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6040810190811067ffffffffffffffff821117612bff57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612bff57604052565b600b54811015612c8557600b5f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600f54811015612c8557600f5f5260205f2001905f90565b600c54811015612c8557600c5f5260205f2001905f90565b600d54811015612c8557600d5f5260205f2001905f90565b600654811015612c855760065f5260205f2001905f90565b91908203918211612d1f57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b91908201809211612d1f57565b81810292918115918404141715612d1f57565b8115612d76570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b15612daa57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f62616c616e6365203c2070726f746f636f6c206f7765640000000000000000006044820152fd5b60405190600a548083528260208101600a5f5260205f20925f905b806001830110612e7057612e49945491818110612e5c575b10612e4b575b500383612c2c565b565b60801d600f0b81526020015f612e41565b92602060019184600f0b8152019301612e3b565b9160029193506040600191865480600f0b825260801d600f0b6020820152019401920185929391612e23565b90816060910312610711578051916040602083015192015190565b9190826103e8026103e881048403612d1f5781612ed391612d4c565b90815f52600760205260405f2054938415612eed57505050565b612ef892945061330e565b915f5260076020528160405f2055565b92949394919091612f34612f1c878461332b565b9050612f2786612ce2565b90549060031b1c90613489565b905f82600f0b131561302657612f5a918486600954600f0b612f54612e08565b90613722565b919092612f798394612f6c8197612ce2565b90549060031b1c9061334d565b925f92849880613005575b508811612fa757612f97612fa492612ce2565b90549060031b1c906136b3565b94565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f737761703a207472616e736665722065786365656473206d61780000000000006044820152fd5b9098506130149193508461337f565b9161301f8385612d4c565b975f612f84565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761703a20696e70757420746f6f20736d616c6c20616674657220666565006044820152fd5b90600a54821015612c8557600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b73ffffffffffffffffffffffffffffffffffffffff169081156131bd5773ffffffffffffffffffffffffffffffffffffffff1691821561319157815f52600160205260405f205481811061315f57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f52600184520360405f2055845f526001825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff5f5416330361320957565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b600654156132505761324690612cfa565b90549060031b1c90565b505f90565b905f8091602081519101845af480806132fb575b1561327b575050613278613470565b90565b156132c25773ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b3d156132d3576040513d5f823e3d90fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b503d1515806132695750813b1515613269565b90611b6461331e61327893612cfa565b90549060031b1c91612cfa565b9190801561334757613340613278918461337f565b8093612d12565b505f9190565b61336161335a83836136b3565b9283613489565b90600f0b90600f0b126133715790565b60018101809111612d1f5790565b9080156133b25761338f91612d59565b620f4240810190818111612d1f57620f423f01908111612d1f57620f4240900490565b50505f90565b905f809160208151910182855af180806132fb571561327b575050613278613470565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613419575b1561071157600f0b90565b506f7fffffffffffffffffffffffffffffff81131561340e565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613419571561071157600f0b90565b604051903d82523d5f602084013e60203d830101604052565b81156107115777ffffffffffffffffffffffffffffffffffffffffffffffff811161350157906134bb9160401b612d6c565b6fffffffffffffffffffffffffffffffff8111610711576fffffffffffffffffffffffffffffffff166f7fffffffffffffffffffffffffffffff811161071157600f0b90565b60c09181831c80936401000000008210156136a6575b600282620100006135a494101561369a575b61010081101561368e575b6010811015613682575b6004811015613677575b101561366f575b8360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b612d6c565b926fffffffffffffffffffffffffffffffff8411610711578160801c8402906fffffffffffffffffffffffffffffffff8316850290809460401b90828210613645575b5003928160801b9182851061361c575b60801c03613611576136099203612d6c565b905b016134bb565b50505060019061360b565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906135f7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f6135e7565b60010161354f565b91810191811c613548565b6004928301921c61353e565b6008928301921c613534565b6010928301921c613529565b505060e082811c90613517565b81156133b257600f0b5f8112610711576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116107115760401b81198111610711570190565b8051821015612c855760209160051b010190565b955f959194939092849290875b875189101561375a576137526001916137488b8b61370e565b51600f0b906133db565b98019761372f565b909294975097909294975f81600f0b1315613b985761377891613bf6565b9384600f0b80156107115770010000000000000000000000000000000005917fffffffffffffffffffffffffffffffff8000000000000000000000000000000083121580613b7e575b15610711576137fd613802916137f86137e095600f0b9586928b61370e565b51600f0b6137ee898c61370e565b51600f0b90613433565b613bf6565b613c36565b9280600f0b905f82136139ee575b50509061381c91613bf6565b80600f0b68200000000000000000811361396a577fffffffffffffffffffffffffffffffff800000000000000000000000000000001461071157613864905f03600f0b613c36565b600f0b6801000000000000000003907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082121580613950575b15610711576138af91600f0b90613bf6565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613936575b1561071157600f0b925f84131561392257505061390661390c92613c93565b90613bf6565b905f82600f0b131561391a57565b5f9250829150565b90915061392f925061370e565b51600f0b90565b506f7fffffffffffffffffffffffffffffff8113156138e7565b506f7fffffffffffffffffffffffffffffff82131561389d565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4c4d53523a20612f6220746f6f206c617267652028776f756c64206f7665726660448201527f6c6f7720657870290000000000000000000000000000000000000000000000006064820152fd5b84600f9a939a0b80921315613afa5781156107115760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613ae0575b1561071157600f0b5f811315613a8257613a50613a5691613c93565b86613bf6565b9780600f0b89600f0b125f14613a7657505061381c90875b90915f613810565b61381c92919850613a6e565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4d53523a20726174696f3c3d300000000000000000000000000000000000006044820152fd5b506f7fffffffffffffffffffffffffffffff811315613a34565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4c4d53523a206c696d69745072696365203c3d2063757272656e74207072696360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152fd5b506f7fffffffffffffffffffffffffffffff8313156137c1565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613419571561071157600f0b90565b600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000811261325057700171547652b82fe1777d0ffda0d23a7d12613278910260801d600f0b613dc0565b600f0b5f811315610711575f908068010000000000000000821215613db3575b806401000000006002921215613da7575b62010000811215613d9b575b610100811215613d8f575b6010811215613d83575b6004811215613d78575b1215613d6e575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f8313613d5257506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d90565b8002908160ff1c9182607f011c918302019160011d9190613d2d565b9060010190613cf6565b92810192811d613cef565b6004938401931d613ce5565b6008938401931d613cdb565b6010938401931d613cd0565b6020938401931d613cc4565b506040915080821d613cb3565b80600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000081126133b2576f80000000000000000000000000000000915f6780000000000000008216600f0b136149bc575b5f6740000000000000008216600f0b1361499f575b5f6720000000000000008216600f0b13614982575b5f6710000000000000008216600f0b13614965575b5f6708000000000000008216600f0b13614948575b5f6704000000000000008216600f0b1361492b575b5f6702000000000000008216600f0b1361490e575b5f6701000000000000008216600f0b136148f1575b5f66800000000000008216600f0b136148d4575b5f66400000000000008216600f0b136148b7575b5f66200000000000008216600f0b1361489a575b5f66100000000000008216600f0b1361487d575b5f66080000000000008216600f0b13614860575b5f66040000000000008216600f0b13614843575b5f66020000000000008216600f0b13614826575b5f66010000000000008216600f0b13614809575b5f658000000000008216600f0b136147ec575b5f654000000000008216600f0b136147cf575b5f652000000000008216600f0b136147b2575b5f651000000000008216600f0b13614795575b5f650800000000008216600f0b13614778575b5f650400000000008216600f0b1361475b575b5f650200000000008216600f0b1361473e575b5f650100000000008216600f0b13614721575b5f6480000000008216600f0b13614704575b5f6440000000008216600f0b136146e7575b5f6420000000008216600f0b136146ca575b5f6410000000008216600f0b136146ad575b5f6408000000008216600f0b13614690575b5f6404000000008216600f0b13614673575b5f6402000000008216600f0b13614656575b5f6401000000008216600f0b13614639575b5f63800000008216600f0b1361461c575b5f63400000008216600f0b136145ff575b5f63200000008216600f0b136145e2575b5f63100000008216600f0b136145c5575b5f63080000008216600f0b136145a8575b5f63040000008216600f0b1361458b575b5f63020000008216600f0b1361456e575b5f63010000008216600f0b13614551575b5f628000008216600f0b13614534575b5f624000008216600f0b13614517575b5f622000008216600f0b136144fa575b5f621000008216600f0b136144dd575b5f620800008216600f0b136144c0575b5f620400008216600f0b136144a3575b5f620200008216600f0b13614486575b5f620100008216600f0b13614469575b5f6180008216600f0b1361444c575b5f6140008216600f0b1361442f575b5f6120008216600f0b13614412575b5f6110008216600f0b136143f5575b5f6108008216600f0b136143d8575b5f6104008216600f0b136143bb575b5f6102008216600f0b1361439e575b5f6101008216600f0b13614381575b5f60808216600f0b13614364575b5f60408216600f0b13614347575b5f60208216600f0b1361432a575b5f60108216600f0b1361430d575b5f60088216600f0b136142f0575b5f60048216600f0b136142d3575b5f60028216600f0b136142b5575b60015f9116600f0b13614298575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161071157600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c9061426e565b7001000000000000000162e42fefa39ef35890920260801c91614260565b9170010000000000000002c5c85fdf473de6b20260801c91614252565b91700100000000000000058b90bfbe8e7bcd6d0260801c91614244565b917001000000000000000b17217f7d1cf79afa0260801c91614236565b91700100000000000000162e42fefa39ef366f0260801c91614228565b917001000000000000002c5c85fdf473de6eca0260801c9161421a565b9170010000000000000058b90bfbe8e7bce5440260801c9161420c565b91700100000000000000b17217f7d1cf79e9490260801c916141fe565b9170010000000000000162e42fefa39ef44d910260801c916141ef565b91700100000000000002c5c85fdf473dea871f0260801c916141e0565b917001000000000000058b90bfbe8e7bdcbe2e0260801c916141d1565b9170010000000000000b17217f7d1cf7d83c1a0260801c916141c2565b917001000000000000162e42fefa39f02b772c0260801c916141b3565b9170010000000000002c5c85fdf473e242ea380260801c916141a4565b91700100000000000058b90bfbe8e7cc35c3f00260801c91614195565b917001000000000000b17217f7d1cfb72b45e10260801c91614186565b91700100000000000162e42fefa39fe95583c20260801c91614176565b917001000000000002c5c85fdf4741bea6e77e0260801c91614166565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c91614156565b91700100000000000b17217f7d1d351a389d400260801c91614146565b9170010000000000162e42fefa3ae53369388c0260801c91614136565b91700100000000002c5c85fdf477b662b269450260801c91614126565b917001000000000058b90bfbe8f71cb4e4b33d0260801c91614116565b9170010000000000b17217f7d20cf927c8e94c0260801c91614106565b917001000000000162e42fefa494f1478fde050260801c916140f5565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c916140e4565b91700100000000058b90bfbe9ddbac5e109cce0260801c916140d3565b917001000000000b17217f7d5a7716bba4a9ae0260801c916140c2565b91700100000000162e42fefb2fed257559bdaa0260801c916140b1565b917001000000002c5c85fdf84bd62ae30a74cc0260801c916140a0565b9170010000000058b90bfbf8479bd5a81b51ad0260801c9161408f565b91700100000000b17217f80f4ef5aadda455540260801c9161407e565b9170010000000162e42ff0999ce3541b9fffcf0260801c9161406c565b91700100000002c5c85fe31f35a6a30da1be500260801c9161405a565b917001000000058b90bfcdee5acd3c1cedc8230260801c91614048565b9170010000000b17217fba9c739aa5819f44f90260801c91614036565b917001000000162e42fff037df38aa2b219f060260801c91614024565b9170010000002c5c8601cc6b9e94213c72737a0260801c91614012565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91614000565b917001000000b1721835514b86e6d96efd1bfe0260801c91613fee565b91700100000162e430e5a18f6119e3c02282a50260801c91613fdb565b917001000002c5c863b73f016468f6bac5ca2b0260801c91613fc8565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91613fb5565b91700100000b1721bcfc99d9f890ea069117630260801c91613fa2565b9170010000162e43f4f831060e02d839a9d16d0260801c91613f8f565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c91613f7c565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c91613f69565b9170010000b17255775c040618bf4a4ade83fc0260801c91613f56565b917001000162e525ee054754457d59952920260260801c91613f42565b9170010002c5cc37da9491d0985c348c68e7b30260801c91613f2e565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91613f1a565b917001000b175effdc76ba38e31671ca9397250260801c91613f06565b91700100162f3904051fa128bca9c55c31e5df0260801c91613ef2565b917001002c605e2e8cec506d21bfc89a23a00f0260801c91613ede565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c91613eca565b91700100b1afa5abcbed6129ab13ec11dc95430260801c91613eb6565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c91613ea1565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c91613e8c565b917001059b0d31585743ae7c548eb68ca417fd0260801c91613e77565b9170010b5586cf9890f6298b92b71842a983630260801c91613e62565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c91613e4d565b917001306fe0a31b7152de8d5a46305c85edec0260801c91613e38565b6fb504f333f9de6484597d89b3754abe9f9250613e2356fea2646970667358221220eb055801e8ab9805a5a63034ae9b30d67850f64e3702721cdac9d52abc57ce0e64736f6c634300081e0033","sourceMap":"2274:18983:48:-:0;;;;;;;;;;-1:-1:-1;2274:18983:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;505:62:45;;:::i;:::-;2274:18983:48;1993:22:44;;1989:91;;2274:18983:48;;;;;;;;;;;1104:49:45;;;;2274:18983:48;;1989:91:44;2274:18983:48;2038:31:44;;;;2274:18983:48;;;2038:31:44;2274:18983:48;;;;;;;;;;;;;;;;;;;4450:9;2274:18983;;;;;;;;;;;;;;;;;;4793:10;2274:18983;;4793:10;:::i;:::-;2274:18983;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;2797:11:33;2274:18983:48;;;2797:27:33;2274:18983:48;-1:-1:-1;2274:18983:48;;;;;-1:-1:-1;2274:18983:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10764:129;10842:50;;;;;;;:::i;:::-;2274:18983;;;10764:129;;:::i;:::-;2274:18983;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4074:33;2274:18983;;;;;;;;;;;;;;;;;;19154:47;19083:54;2274:18983;;:::i;:::-;;;:::i;:::-;;;;18981:29;;;:::i;:::-;2274:18983;;;;18779:271;18815:35;2274:18983;18779:271;;;2274:18983;;18779:271;;2274:18983;;;;;;;;;;;;;;;;;;;;;;;;;;19024:16;2274:18983;;;;;18779:271;;;;;;:::i;:::-;2274:18983;19120:9;2274:18983;19083:54;:::i;:::-;2274:18983;;;;19154:47;;;;;;:::i;:::-;2274:18983;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9740:54;2274:18983;;:::i;:::-;;;;:::i;:::-;;;;9541:167;9577:31;2274:18983;9541:167;;;2274:18983;;9541:167;;2274:18983;;;;;;;;;;;;;;;;;;;9541:167;;;;;;:::i;9740:54::-;577:10:35;2274:18983:48;;9811:29;;;;;;;;;;577:10:35;;;;2274:18983:48;577:10:35;;2274:18983:48;;;;;;577:10:35;-1:-1:-1;2274:18983:48;;;;;;;;;;;;;;2624:5:33;2274:18983:48;;:::i;:::-;;;735:10:26;;2624:5:33;:::i;:::-;2274:18983:48;;;;;;;;;;;;;;;;;;;20955:54;2274:18983;20917:18;2274:18983;;;;20821:124;20857:46;20821:124;;;;;;;2274:18983;20821:124;;;;;;;:::i;:::-;2274:18983;20992:9;2274:18983;20955:54;:::i;:::-;;2274:18983;;;;;;;;;;;;;;;;;;;3317:5;2274:18983;;;;;;;3317:5;2274:18983;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1276:7:33;2274:18983:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;1276:7:33;2274:18983:48;;;;;-1:-1:-1;2274:18983:48;;;;;;;-1:-1:-1;2274:18983:48;;-1:-1:-1;2274:18983:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1276:7:33;2274:18983:48;;;;;;;-1:-1:-1;2274:18983:48;;-1:-1:-1;2274:18983:48;;-1:-1:-1;2274:18983:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4675:9;2274:18983;;;;;;;;;;;;;;;;;3483:20;2274:18983;;;;3483:20;:::i;:::-;2274:18983;;;;;;;;;;;;;;;;;;;4905:7;2274:18983;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17845:45;17774:54;17656:46;;;;;;2274:18983;17656:46;;;;:::i;:::-;2274:18983;;;;17402:340;17438:38;2274:18983;17402:340;;;2274:18983;;17402:340;;2274:18983;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17716:16;2274:18983;;;;;17402:340;;;;;;:::i;2274:18983::-;;;;;;;;;;;;;;;;505:62:45;;:::i;:::-;2274:18983:48;;;;;;;;;;1104:49:45;;;;2274:18983:48;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;2260:9:33;2274:18983:48;;;;;;;;;;;;;;;;;;;;;;;;;;5029:7;2274:18983;;;;;;;;5029:7;2274:18983;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2274:18983:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8839:54;2274:18983;;:::i;:::-;;;;8660:147;8696:38;2274:18983;8660:147;;;2274:18983;;8660:147;;2274:18983;;;;;;;8792:5;2274:18983;;;;;;;8660:147;;;;;;:::i;2274:18983::-;;;;;;;;;;;;;;;3193:5;2274:18983;;;;;;;;;;;;;;;;;;;;:::i;:::-;505:62:45;;:::i;:::-;2274:18983:48;;8004:31;2274:18983;;;8004:31;2274:18983;;;;;;;;;;;;;;;;;;3951:16;2274:18983;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;10280:54;2274:18983;;;;10066:182;10102:31;2274:18983;10066:182;;;2274:18983;;10066:182;;2274:18983;;;;;;;;;;;;;;;;;;;;;;;10066:182;;;;;;:::i;10280:54::-;2274:18983;;10351:31;;;2274:18983;10351:31;;;;2274:18983;;;;;;10351:31;;2274:18983;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;577:10:35;;2274:18983:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20444:57;2274:18983;;;;20190:222;2274:18983;;;;;;;20190:222;;;20226:36;2274:18983;20190:222;;;;;;2274:18983;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20359:13;2274:18983;;;;20386:16;2274:18983;;;;;;;;20190:222;;2274:18983;20190:222;;;;;;:::i;20444:57::-;2274:18983;;;;20518:26;;2274:18983;;;;;20518:26;2274:18983;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;19728:30;2274:18983;19728:30;19831:54;19728:30;;:::i;:::-;2274:18983;;;;19508:290;19544:35;2274:18983;19508:290;;;2274:18983;;19508:290;;2274:18983;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19772:16;2274:18983;;;;;19508:290;;;;;;:::i;19831:54::-;2274:18983;;;;19902:37;;2274:18983;;;;19902:37;2274:18983;;19902:37;;;577:10:35;2274:18983:48;;577:10:35;2274:18983:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;5273:5;2274:18983;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2274:18983:48;;;;;;;;;;;;;;;;;;;;;;;;;505:62:45;;:::i;:::-;8287:7:48;2274:18983;;;;8286:8;8282:81;;2274:18983;;;8282:81;2274:18983;;8321:4;2274:18983;8287:7;2274:18983;8344:8;;;;2274:18983;;;;;;;;;;;;;;;;;3712:13;2274:18983;;;;;;;;;;;;;;;;;;1997:2:33;2274:18983:48;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;6276:11:34;2274:18983:48;;;;;;735:10:26;2274:18983:48;-1:-1:-1;2274:18983:48;;;;-1:-1:-1;2274:18983:48;;6317:36:34;6336:17;6317:36;;6313:309;;2274:18983:48;4127:5:33;;;;;;:::i;6313:309:34:-;6373:24;;;6369:130;;5541:19;;5537:89;;735:10:26;5639:21:34;5635:90;;2274:18983:48;;;4127:5:33;2274:18983:48;;6276:11:34;2274:18983:48;;;;735:10:26;2274:18983:48;-1:-1:-1;2274:18983:48;;;;;-1:-1:-1;2274:18983:48;;;2407:1:29;;6313:309:34;;;;5635:90;2274:18983:48;5683:31:34;;;;2274:18983:48;;;5683:31:34;5537:89;2274:18983:48;5583:32:34;;;;2274:18983:48;;;5583:32:34;6369:130;2274:18983:48;6424:60:34;;;;;;735:10:26;2274:18983:48;;;;;;6424:60:34;2274:18983:48;;;;;;;;;;;;;;2679:7;2274:18983;;;;;;;;;;;;;;;;;;;;;;;2117:12:33;2274:18983:48;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2407:1:29;1505:66;2274:18983:48;4560:63:29;3644:93;;2407:1;1505:66;2407:1;2274:18983:48;3693:7:50;2274:18983:48;;;;11377:13;;:44;;;;;2274:18983;;;;;11657:125;11735:46;;;;;:::i;:::-;2274:18983;;;;;11657:125;:::i;:::-;11861:24;;;;;;;;;;;2274:18983;11861:24;;;:::i;:::-;2274:18983;;;;;;;11913:25;2274:18983;11913:25;;;:::i;:::-;2274:18983;;;;;;;11953:40;;;11949:1158;11953:40;;;7032:13:50;;;;;2274:18983:48;7032:13:50;2274:18983:48;7023:22:50;;;;:45;;;11949:1158:48;7019:180:50;;;7083:37;;;;;;;;2274:18983:48;;;;;;7083:37:50;;;;2274:18983:48;7083:37:50;;;;;;;;;;;;;;;;;7019:180;;13217:95:48;13342:91;7019:180:50;;13217:73:48;:36;;;:::i;:::-;577:10:35;;;2274:18983:48;577:10:35;2274:18983:48;13256:34;;;:::i;:::-;577:10:35;;;2274:18983:48;577:10:35;2274:18983:48;13217:73;;:::i;:::-;:95;:::i;:::-;13342:37;:75;:37;;;:::i;:::-;577:10:35;;;2274:18983:48;577:10:35;2274:18983:48;13382:35;;;:::i;13342:75::-;:91;:::i;:::-;13513:22;;13549:16;;:20;;;;:35;;;11949:1158;13545:242;;11949:1158;13914:34;;14176:87;13914:34;13986:85;14025:46;14216:47;13914:34;13893:83;13914:34;;;:::i;:::-;577:10:35;;;2274:18983:48;577:10:35;2274:18983:48;13901:47;;;13893:83;:::i;:::-;14037:34;;;:::i;:::-;577:10:35;;;2274:18983:48;577:10:35;2274:18983:48;14025:46;;:::i;:::-;13986:36;;;:::i;:::-;:85;577:10:35;;;;;;;;;;;;;;;;;;;13986:85:48;14082:84;14103:35;;;:::i;14082:84::-;14228:35;;;:::i;14216:47::-;14176:37;;;:::i;:87::-;2274:18983;;;;28654:20:41;2274:18983:48;;;;;;;28716:21:41;2274:18983:48;;;28864:46:41;28826:14;28809:45;28826:14;28809;28826:28;28864:14;28826;;28881:29;28826:14;;:::i;:::-;2274:18983:48;;;;;;;;28826:28:41;:::i;:::-;28809:14;;:::i;:::-;:45;2274:18983:48;;;;;;;;;;;;;577:10:35;;2274:18983:48;;;;;;28809:45:41;28881:14;;;:::i;:::-;2274:18983:48;;;;;;;;28881:29:41;:::i;28864:46::-;7615:32:50;;;11949:1158:48;7611:265:50;;;2274:18983:48;7664:13:50;2274:18983:48;7664:30:50;;;;;2274:18983:48;;;;;;;7664:30:50;;;;;2274:18983:48;7664:30:50;;2274:18983:48;7664:30:50;;2274:18983:48;7664:30:50;;;;;;;;;;;;;7611:265;7722:32;;;;;;;;2274:18983:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;14575:122;7611:265:50;2274:18983:48;7611:265:50;;14664:20:48;;;;:::i;:::-;2274:18983;;;;;;;577:10:35;2274:18983:48;577:10:35;;2274:18983:48;577:10:35;2274:18983:48;577:10:35;;2274:18983:48;;577:10:35;;2274:18983:48;;577:10:35;;2274:18983:48;14575:122;2274:18983;1505:66:29;2407:1;3553:21:50;3587:7;;;;3584:57;;7611:265;2274:18983:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3584:57:50;3608:33;;;;;;;;;;3584:57;3616:10;3608:33;;;;;3584:57;;;;3608:33;2274:18983:48;;;;;;;;;;3608:33:50;;;;;2274:18983:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7664:30:50;;;;;;;;:::i;:::-;2274:18983:48;;7664:30:50;;;;;;2274:18983:48;;;;7664:30:50;2274:18983:48;;;;;;;;;7664:30:50;2274:18983:48;;;7611:265:50;1306:37:24;2274:18983:48;8544:1067:24;8509:24;8544:1067;;;2274:18983:48;8544:1067:24;;2274:18983:48;8544:1067:24;2274:18983:48;8544:1067:24;2274:18983:48;8544:1067:24;;;;;;2274:18983:48;8544:1067:24;;;;;;;;7611:265:50;2274:18983:48;8544:1067:24;1305:38;1301:116;;14575:122:48;7611:265:50;2274:18983:48;7611:265:50;;;1301:116:24;2274:18983:48;1366:40:24;;;;;2274:18983:48;;1366:40:24;8544:1067;;2274:18983:48;8544:1067:24;;;;;;;;;;;;;;;;;-1:-1:-1;8544:1067:24;;;;;;;7615:32:50;7634:13;2274:18983:48;7634:13:50;2274:18983:48;7625:22:50;;7615:32;;2274:18983:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13545:242;14216:47;13614:26;;;14025:46;13644:9;13614:26;14176:87;13614:26;;13986:85;13614:26;;:::i;:::-;577:10:35;13680:14:48;;13676:101;;13545:242;;;;;;;;;13676:101;13714:48;:34;:48;:34;;;:::i;:::-;577:10:35;;;;;;2274:18983:48;577:10:35;2274:18983:48;13714:48;:::i;:::-;577:10:35;;;;;;;;;;;;;;;;;;13714:48:48;13676:101;;13549:35;13573:11;;;;13549:35;;7083:37:50;;;;;2274:18983:48;7083:37:50;;:::i;:::-;2274:18983:48;;13217:95;7083:37:50;;;2274:18983:48;;;;;;;;;7019:180:50;2274:18983:48;1767:47:24;;;;;;;;;2274:18983:48;1767:47:24;;;2274:18983:48;1767:47:24;2274:18983:48;;10404:1148:24;;10365:28;10404:1148;;;2274:18983:48;10404:1148:24;7185:4:50;2274:18983:48;10404:1148:24;2274:18983:48;10404:1148:24;;;;2274:18983:48;;10404:1148:24;;;;;;;7019:180:50;2274:18983:48;10404:1148:24;2274:18983:48;;10404:1148:24;1766:48;1762:126;;7019:180:50;;;;;;;;13342:91:48;7019:180:50;13217:95:48;7019:180:50;;;1762:126:24;1837:40;;2274:18983:48;1837:40:24;2274:18983:48;;;;1837:40:24;10404:1148;;2274:18983:48;10404:1148:24;;;;;;;;;;;;;;;;;;;2274:18983:48;10404:1148:24;;;;;7023:45:50;7049:9;;;:19;;7023:45;;11949:1158:48;12147:41;;-1:-1:-1;12147:41:48;;2274:18983;12147:41;2274:18983;;12212:13;577:10:35;;2274:18983:48;;;12306:32;;12332:4;2274:18983;12306:32;;2274:18983;;12306:32;2274:18983;12306:32;;;;;;;;;;2274:18983;12306:32;;;12143:964;12374:36;12470:21;12374:36;:73;:36;;;:::i;:::-;577:10:35;;;2274:18983:48;577:10:35;2274:18983:48;12413:34;;;:::i;12374:73::-;12470:21;;:::i;:::-;:44;577:10:35;;12143:964:48;;;13342:91;12143:964;13217:95;12143:964;11949:1158;;577:10:35;2274:18983:48;;;577:10:35;;;2274:18983:48;;577:10:35;;;;2274:18983:48;577:10:35;;2274:18983:48;577:10:35;2274:18983:48;;;577:10:35;;12306:32:48;;;;2274:18983;12306:32;;2274:18983;12306:32;;;;;;577:10:35;12306:32:48;;;:::i;:::-;;;577:10:35;;;;;;;12470:21:48;12306:32;;;;;-1:-1:-1;12306:32:48;;577:10:35;2274:18983:48;;;577:10:35;;;2274:18983:48;;577:10:35;;;;2274:18983:48;577:10:35;;2274:18983:48;577:10:35;2274:18983:48;;;577:10:35;;2274:18983:48;577:10:35;;;;12143:964:48;2274:18983;;;12659:32;;12685:4;2274:18983;12659:32;;2274:18983;;-1:-1:-1;2274:18983:48;;;;;12659:32;;;;;;;;;2274:18983;12659:32;;;12143:964;2274:18983;;;;2796:38:25;2274:18983:48;;;12725:69;2274:18983;12725:69;;;;;;;2274:18983;;577:10:35;;2274:18983:48;;12725:69;;;2274:18983;12725:69;;:::i;:::-;2796:38:25;;:::i;:::-;;2274:18983:48;;;;12967:32;;;;2274:18983;12967:32;;12685:4;2274:18983;12967:32;;2274:18983;12967:32;;;;;;;;2274:18983;12967:32;;;12143:964;13021:29;;;;;:::i;:::-;:52;577:10:35;;12143:964:48;;;13342:91;12143:964;13217:95;12143:964;11949:1158;;577:10:35;2274:18983:48;;;577:10:35;;;2274:18983:48;;577:10:35;;;;2274:18983:48;577:10:35;;2274:18983:48;577:10:35;2274:18983:48;;;577:10:35;;12967:32:48;;;;;2274:18983;12967:32;;2274:18983;12967:32;;;;;;577:10:35;12967:32:48;;;:::i;:::-;;;577:10:35;;;;;;;;13021:29:48;12967:32;;;;;-1:-1:-1;12967:32:48;;12659;;;;2274:18983;12659:32;;2274:18983;12659:32;;;;;;577:10:35;12659:32:48;;;:::i;:::-;;;577:10:35;;;;;;;;2796:38:25;12659:32:48;;;;;-1:-1:-1;12659:32:48;;2274:18983;;;;;;;;;;;;;;;;;;;;;;;11377:44;11394:15;;;:27;;11377:44;;;2274:18983;;;;;;;;;;;;;;;;;;;;;;;3644:93:29;3696:30;2274:18983:48;3696:30:29;2274:18983:48;;3696:30:29;2274:18983:48;;;;;;;;;;;;;;;2766:13;2274:18983;;;;;;;;;;;;;;;;;:::i;:::-;;;735:10:26;;5541:19:34;5537:89;;2274:18983:48;;5639:21:34;;;5635:90;;735:10:26;2274:18983:48;;5734:11:34;2274:18983:48;;;;;;;;;;;;;;2407:1:29;2274:18983:48;;;;;5813:38:34;2274:18983:48;735:10:26;5813:38:34;;2274:18983:48;;;;;;;5635:90:34;5683:31;2274:18983:48;5683:31:34;2274:18983:48;;;;;5683:31:34;5537:89;5583:32;2274:18983:48;5583:32:34;2274:18983:48;;;;;5583:32:34;2274:18983:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;2274:18983:48;;-1:-1:-1;2274:18983:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2274:18983:48;;-1:-1:-1;2274:18983:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5150:6;2274:18983;;;;;;;5150:6;2274:18983;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4225:17;2274:18983;;;;;;;;4225:17;2274:18983;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;2274:18983:48;;;;;-1:-1:-1;2274:18983:48;;;;;;;;;;;;;;;;;;;;;:::o;:::-;11861:7;2274:18983;;;;;;11861:7;-1:-1:-1;2274:18983:48;;-1:-1:-1;2274:18983:48;;;-1:-1:-1;2274:18983:48;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;2274:18983:48;;-1:-1:-1;2274:18983:48;;;-1:-1:-1;2274:18983:48;:::o;:::-;12413:17;2274:18983;;;;;;12413:17;-1:-1:-1;2274:18983:48;;-1:-1:-1;2274:18983:48;;;-1:-1:-1;2274:18983:48;:::o;:::-;15963:6;2274:18983;;;;;;15963:6;-1:-1:-1;2274:18983:48;;-1:-1:-1;2274:18983:48;;;-1:-1:-1;2274:18983:48;:::o;:::-;3966:5:50;2274:18983:48;;;;;;3966:5:50;-1:-1:-1;2274:18983:48;;-1:-1:-1;2274:18983:48;;;-1:-1:-1;2274:18983:48;:::o;577:10:35:-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::o;:::-;;2274:18983:48;;577:10:35;;;;;;;;;;;;2274:18983:48;577:10:35;2274:18983:48;;;577:10:35;;2274:18983:48;;;;;;;;;;;;;;-1:-1:-1;2274:18983:48;;-1:-1:-1;2274:18983:48;;-1:-1:-1;2274:18983:48;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;577:10:35;;2274:18983:48;;;;;577:10:35;2274:18983:48;;577:10:35;2274:18983:48;:::o;4879:289:50:-;;;577:10:35;4977:4:50;577:10:35;4977:4:50;577:10:35;;;;;;4977:12:50;;;;:::i;:::-;2274:18983:48;;-1:-1:-1;2274:18983:48;5005:9:50;2274:18983:48;;;-1:-1:-1;2274:18983:48;;5033:8:50;;;5029:133;;4879:289;;;:::o;5029:133::-;5097:20;;;;;:::i;:::-;2274:18983:48;-1:-1:-1;2274:18983:48;5005:9:50;2274:18983:48;;;;-1:-1:-1;2274:18983:48;2407:1:29;4879:289:50:o;15274:1761:48:-;;;;;;;;5432:32:50;15820::48;;;;:::i;:::-;15963:23;;;;;:::i;:::-;577:10:35;;;;;2274:18983:48;5432:32:50;;:::i;:::-;2274:18983:48;-1:-1:-1;2274:18983:48;;;16005:26;2274:18983;;;3892:67:41;2274:18983:48;;;21196:5;2274:18983;;;;;:::i;:::-;3892:67:41;;:::i;:::-;16247:132:48;;;16471:66;16247:132;;16513:23;16247:132;16513:23;;:::i;:::-;577:10:35;;;;;2274:18983:48;16471:66;;:::i;:::-;16621:11;-1:-1:-1;16642:27:48;;16683:10;;16679:118;;15274:1761;16849:22;;;2274:18983;;17003:24;5747:40:50;17003:24:48;;:::i;:::-;577:10:35;;;;;2274:18983:48;5747:40:50;;:::i;:::-;15274:1761:48;:::o;2274:18983::-;;;;;;;;;;;;;;;;;;;;;;;16679:118;16719:35;;;;;;;;;:::i;:::-;16768:18;;;;;:::i;:::-;16679:118;;;;2274:18983;;;;;;;;;;;;;;;;;;;;;;;;;28826:11:41;2274:18983:48;;;;;;28826:11:41;-1:-1:-1;2274:18983:48;;;;;;;;;;;;;:::o;1110:300:34:-;2274:18983:48;;1193:18:34;;;1189:86;;2274:18983:48;;1288:16:34;;;1284:86;;2274:18983:48;1209:1:34;2274:18983:48;2025:9:34;2274:18983:48;;;1209:1:34;2274:18983:48;;2058:19:34;;;2054:115;;2274:18983:48;2801:32:34;2274:18983:48;;;;1209:1:34;2274:18983:48;2025:9:34;2274:18983:48;;;;1209:1:34;2274:18983:48;2407:1:29;2274:18983:48;1209:1:34;2274:18983:48;2025:9:34;2274:18983:48;;;1209:1:34;2274:18983:48;;;;;2407:1:29;;2274:18983:48;;;;;2801:32:34;1110:300::o;2054:115::-;2104:50;;1209:1;2104:50;;2274:18983:48;;;;;;1209:1:34;2104:50;1284:86;1327:32;1209:1;1327:32;1209:1;1327:32;2274:18983:48;;1209:1:34;1327:32;1189:86;1234:30;1209:1;1234:30;1209:1;1234:30;2274:18983:48;;1209:1:34;1234:30;640:170:45;2274:18983:48;699:6:45;2274:18983:48;;735:10:26;699:22:45;695:109;;640:170::o;695:109::-;744:49;699:6;744:49;735:10:26;744:49:45;2274:18983:48;;699:6:45;744:49;3887:138:50;3966:5;2274:18983:48;3966:17:50;3962:31;;4010:8;;;:::i;:::-;577:10:35;;;;;2274:18983:48;3887:138:50;:::o;3962:31::-;3985:8;2274:18983:48;3985:8:50;:::o;4691:549:25:-;;-1:-1:-1;4691:549:25;;3417:129:28;;;;;;;;;;4874:72:25;;4691:549;4870:364;;;4969:25;;;;:::i;:::-;4962:32;:::o;4870:364::-;5011:223;;;2274:18983:48;5045:24:25;;-1:-1:-1;5045:24:25;2274:18983:48;5045:24:25;2274:18983:48;;-1:-1:-1;5045:24:25;5011:223;4463:73:28;5090:33:25;4463:73:28;;2274:18983:48;;;-1:-1:-1;2274:18983:48;;;;;5086:148:25;5204:19;-1:-1:-1;5204:19:25;;-1:-1:-1;5204:19:25;4874:72;-1:-1:-1;4463:73:28;4886:33:25;;;4874:72;4886:59;4923:18;;;:22;;4874:72;;4453:420:50;;4586:8;4555;4859:7;4453:420;4555:8;:::i;:::-;577:10:35;;;;;2274:18983:48;4586:8:50;;:::i;903:262:52:-;;;1026:11;;1022:59;;1100:23;1143:15;1100:23;;;:::i;:::-;1143:15;;;:::i;1022:59::-;1053:17;1036:1;1053:17;;:::o;5893:600:50:-;6232:36;6059:40;;;;:::i;:::-;6232:36;;;:::i;:::-;2274:18983:48;;;;;;6381:30:50;6377:82;;5893:600;:::o;6377:82::-;6447:1;577:10:35;;;;;;;6427:21:50;:::o;403:228:52:-;;494:11;;490:25;;585:10;;;:::i;:::-;598:9;577:10:35;;;;;;;;;;;;;;;598:9:52;577:10:35;;403:228:52;:::o;490:25::-;507:8;;2274:18983:48;507:8:52;:::o;3165:696:25:-;;-1:-1:-1;3165:696:25;;832:128:28;;;;;;;;;;;3495:72:25;;3491:364;;;3590:25;;;;:::i;3517:219:0:-;;2274:18983:48;;;;;;805:35:0;3652:19;;;:42;;;3517:219;958:34;;;2274:18983:48;;3517:219:0;:::o;3652:42::-;3675:19;958:34;3675:19;;;3652:42;;3949:219;;2274:18983:48;;;;;;805:35:0;4084:19;;;:42;;;958:34;;;2274:18983:48;;3949:219:0;:::o;4625:334:28:-;4701:252;;;;;;;;;;;;;;;;;;;4625:334::o;8689:233:0:-;8790:6;;958:34;;23319:50;23314:55;;23319:50;;577:10:35;23388:13:0;577:10:35;23394:2:0;577:10:35;23388:13:0;:::i;:::-;24377:34;24367:44;;958:34;;24377;2274:18983:48;958:34:0;8851:29;;958:34;;2274:18983:48;;8689:233:0;:::o;23310:1040::-;23438:3;2274:18983:48;;;;;23486:17:0;23492:11;23486:17;;;23482:48;;23310:1040;23746:3;23543:13;23549:7;23811:45;23543:13;;;23539:44;;23310:1040;23602:5;23596:11;;;23592:40;;23310:1040;23651:4;23645:10;;;23641:39;;23310:1040;23699:3;23693:9;;;23689:38;;23310:1040;23740:9;;23736:23;;23310:1040;2274:18983:48;23836:1:0;2274:18983:48;;;;;;;;;;;577:10:35;23811:45:0;:::i;:::-;23875:44;23885:34;23875:44;;958:34;;2274:18983:48;23959:3:0;2274:18983:48;;;23996:38:0;23885:34;23996:38;;2274:18983:48;;24046:21:0;;577:10:35;24095:2:0;577:10:35;24112:7:0;;;;24108:20;;23310:1040;2274:18983:48;;577:10:35;;23959:3:0;577:10:35;24221:7:0;;;;24217:20;;23310:1040;23959:3;2274:18983:48;24313:15:0;2274:18983:48;;24331:6:0;2274:18983:48;;24331:6:0;:::i;:::-;24313:28;;2274:18983:48;23310:1040:0;;24313:28;;;;23836:1;24313:28;;;24217:20;2274:18983:48;;;24217:20:0;;;24108;2274:18983:48;;;-1:-1:-1;24108:20:0;;;23736:23;23758:1;2274:18983:48;23736:23:0;;23689:38;2274:18983:48;;;;;;23689:38:0;;23641:39;23666:1;2274:18983:48;;;;;23641:39:0;;23592:40;23618:1;2274:18983:48;;;;;23592:40:0;;23539:44;23567:2;2274:18983:48;;;;;23539:44:0;;23482:48;-1:-1:-1;;2274:18983:48;;;;;23482:48:0;;6267:513;6363:6;;6359:20;;2274:18983:48;;;6397:6:0;;958:34;;6455;6451:38;;2274:18983:48;;6495:2:0;2274:18983:48;;6547:3:0;2274:18983:48;;6575:50:0;6569:56;;958:34;;6495:2;577:10:35;2274:18983:48;;6661:85:0;;958:34;;2274:18983:48;6267:513:0;:::o;41100:19:41:-;2274:18983:48;;41100:19:41;;;;;;;;;;;;:::o;5271:3068::-;;2274:18983:48;;5271:3068:41;;;;;;;;2274:18983:48;41642:10:41;2274:18983:48;;41654:20:41;;;;;41700:23;2274:18983:48;41710:12:41;;;;;:::i;:::-;41100:19;2274:18983:48;;41700:23:41;;:::i;:::-;2274:18983:48;;41642:10:41;;;41654:20;;;;;;;;;;;2274:18983:48;;;;5760:22:41;2274:18983:48;;;5830:21:41;;;:::i;:::-;5942:25;2274:18983:48;;;7136:6:0;;958:34;;577:10:35;2274:18983:48;7206:19:0;805:35;7206:19;;;:42;;;41637:128:41;958:34:0;;;6060:40:41;41316:20;2274:18983:48;6060:30:41;:12;2274:18983:48;;;6060:12:41;;;;;:::i;:::-;41100:19;2274:18983:48;;6077:12:41;;;;:::i;:::-;41100:19;2274:18983:48;;6060:30:41;;:::i;:::-;:40;:::i;:::-;41316:20;:::i;:::-;2274:18983:48;;;;6380:22:41;2274:18983:48;6380:22:41;;6376:991;;41637:128;7471:11;;;;;;:::i;:::-;2274:18983:48;;;41225:20:41;7582:19;;41225:20;;805:35:0;9170:14;958:34;;41316:20:41;2274:18983:48;;;;;41316:20:41;:::i;:::-;2274:18983:48;;;;4084:19:0;805:35;4084:19;;;:42;;;41637:128:41;958:34:0;;;7883:22:41;2274:18983:48;;;7883:22:41;;:::i;:::-;2274:18983:48;;;;805:35:0;3652:19;;;:42;;;41637:128:41;958:34:0;;;2274:18983:48;;8021:18:41;2274:18983:48;8021:18:41;;;8017:112;;41408:19;;;8195:14;41408:19;;:::i;:::-;8195:14;;:::i;:::-;2274:18983:48;;;;;8279:14:41;;8275:58;;5271:3068::o;8275:58::-;2274:18983:48;;-1:-1:-1;2274:18983:48;;-1:-1:-1;8309:13:41:o;8017:112::-;8069:12;;;;;;;:::i;:::-;41100:19;2274:18983:48;;8095:23:41;:::o;3652:42:0:-;3675:19;958:34;3675:19;;;3652:42;;4084;4107:19;958:34;4107:19;;;4084:42;;41225:20:41;;7182:2:0;2274:18983:48;41225:20:41;;;;;;;;;;;;2274:18983:48;41225:20:41;2274:18983:48;;;41225:20:41;;;;;;;6376:991;2274:18983:48;;;;;;6542:16:41;;;;6538:98;;7136:6:0;;958:34;;7182:2;577:10:35;;;2274:18983:48;805:35:0;7206:19;;;:42;;;6376:991:41;958:34:0;;;2274:18983:48;;;6806:28:41;;41100:19;;;41408;6990:18;41408:19;;:::i;:::-;6990:18;;:::i;:::-;2274:18983:48;;;;;;;7116:12:41;7112:245;7116:12;;;7148:19;;7471:11;7148:19;;7112:245;6376:991;;;;;7112:245;7471:11;7112:245;;;;;;41100:19;;7182:2:0;2274:18983:48;41100:19:41;;;;;;;;;;;;2274:18983:48;41100:19:41;2274:18983:48;;;41100:19:41;;7206:42:0;7229:19;958:34;7229:19;;;7206:42;;6538:98:41;6578:43;7182:2:0;2274:18983:48;6578:43:41;;;41100:19;6578:43;;;41100:19;;;;;2274:18983:48;41100:19:41;2274:18983:48;;;41100:19:41;;;;;;6578:43;7206:42:0;7229:19;958:34;7229:19;;;7206:42;;2274:18983:48;;;;;;;;;;;;;;;;;;;;;;;4395:225:0;;2274:18983:48;;;;;;4517:2:0;2274:18983:48;805:35:0;4536:19;;;:42;;;958:34;;;2274:18983:48;;4395:225:0;:::o;22569:296::-;2274:18983:48;;22661:20:0;22657:24;;958:34;;;22711:21;22707:25;;22703:39;;22810:35;22771:83;2274:18983:48;;22849:3:0;2274:18983:48;;;22771:83:0;:::i;15150:221::-;2274:18983:48;;15241:1:0;15237:5;;958:34;;;15241:1;14261:13;;14292:19;14286:25;;;14282:56;;15150:221;14349:17;14355:11;14599:3;14349:17;;;14345:48;;15150:221;14410:7;14404:13;;;14400:44;;15150:221;14461:5;14455:11;;;14451:40;;15150:221;14508:4;14502:10;;;14498:39;;15150:221;14554:3;14548:9;;;14544:38;;15150:221;14593:9;;14589:23;;15150:221;2274:18983:48;;;14675:2:0;577:10:35;2274:18983:48;14737:3:0;2274:18983:48;577:10:35;14760:31:0;14773:18;14755:176;14793:7;15241:1;14793:7;;;;2274:18983:48;15317:34:0;2274:18983:48;;;;;15355:3:0;2274:18983:48;15150:221:0;:::o;14802:9::-;2274:18983:48;;;;;;;;14737:3:0;2274:18983:48;;;;;;14802:9:0;14810:1;2274:18983:48;14760:31:0;;;;14589:23;2274:18983:48;14611:1:0;2274:18983:48;14589:23:0;;;14544:38;2274:18983:48;;;;;;14544:38:0;;14498:39;14523:1;2274:18983:48;;;;;14498:39:0;;14451:40;14477:1;2274:18983:48;;;;;14451:40:0;;14400:44;14428:2;2274:18983:48;;;;;14400:44:0;;14345:48;14377:2;2274:18983:48;;;;;14345:48:0;;14282:56;-1:-1:-1;14322:2:0;;-1:-1:-1;2274:18983:48;;;14282:56:0;;15549:6841;2274:18983:48;;;15643:20:0;15639:24;;958:34;;;15693:21;15689:25;;15685:39;;15763:34;15810:22;2274:18983:48;15814:18:0;15810:22;;2274:18983:48;;15810:26:0;15806:100;;15549:6841;2274:18983:48;15922:18:0;15918:22;;2274:18983:48;;15918:26:0;15914:100;;15549:6841;2274:18983:48;16030:18:0;16026:22;;2274:18983:48;;16026:26:0;16022:100;;15549:6841;2274:18983:48;16138:18:0;16134:22;;2274:18983:48;;16134:26:0;16130:100;;15549:6841;2274:18983:48;16246:17:0;16242:21;;2274:18983:48;;16242:25:0;16238:99;;15549:6841;2274:18983:48;16353:17:0;16349:21;;2274:18983:48;;16349:25:0;16345:99;;15549:6841;2274:18983:48;16460:17:0;16456:21;;2274:18983:48;;16456:25:0;16452:99;;15549:6841;2274:18983:48;16567:17:0;16563:21;;2274:18983:48;;16563:25:0;16559:99;;15549:6841;2274:18983:48;16674:16:0;16670:20;;2274:18983:48;;16670:24:0;16666:98;;15549:6841;2274:18983:48;16780:16:0;16776:20;;2274:18983:48;;16776:24:0;16772:98;;15549:6841;2274:18983:48;16886:16:0;16882:20;;2274:18983:48;;16882:24:0;16878:98;;15549:6841;2274:18983:48;16992:16:0;16988:20;;2274:18983:48;;16988:24:0;16984:98;;15549:6841;2274:18983:48;17098:15:0;17094:19;;2274:18983:48;;17094:23:0;17090:97;;15549:6841;2274:18983:48;17203:15:0;17199:19;;2274:18983:48;;17199:23:0;17195:97;;15549:6841;2274:18983:48;17308:15:0;17304:19;;2274:18983:48;;17304:23:0;17300:97;;15549:6841;2274:18983:48;17413:15:0;17409:19;;2274:18983:48;;17409:23:0;17405:97;;15549:6841;2274:18983:48;17518:14:0;17514:18;;2274:18983:48;;17514:22:0;17510:96;;15549:6841;2274:18983:48;17622:14:0;17618:18;;2274:18983:48;;17618:22:0;17614:96;;15549:6841;2274:18983:48;17726:14:0;17722:18;;2274:18983:48;;17722:22:0;17718:96;;15549:6841;2274:18983:48;17830:14:0;17826:18;;2274:18983:48;;17826:22:0;17822:96;;15549:6841;2274:18983:48;17934:13:0;17930:17;;2274:18983:48;;17930:21:0;17926:95;;15549:6841;2274:18983:48;18037:13:0;18033:17;;2274:18983:48;;18033:21:0;18029:95;;15549:6841;2274:18983:48;18140:13:0;18136:17;;2274:18983:48;;18136:21:0;18132:95;;15549:6841;2274:18983:48;18243:13:0;18239:17;;2274:18983:48;;18239:21:0;18235:95;;15549:6841;2274:18983:48;18346:12:0;18342:16;;2274:18983:48;;18342:20:0;18338:94;;15549:6841;2274:18983:48;18448:12:0;18444:16;;2274:18983:48;;18444:20:0;18440:94;;15549:6841;2274:18983:48;18550:12:0;18546:16;;2274:18983:48;;18546:20:0;18542:94;;15549:6841;2274:18983:48;18652:12:0;18648:16;;2274:18983:48;;18648:20:0;18644:94;;15549:6841;2274:18983:48;18754:11:0;18750:15;;2274:18983:48;;18750:19:0;18746:93;;15549:6841;2274:18983:48;18855:11:0;18851:15;;2274:18983:48;;18851:19:0;18847:93;;15549:6841;2274:18983:48;18956:11:0;18952:15;;2274:18983:48;;18952:19:0;18948:93;;15549:6841;2274:18983:48;19057:11:0;19053:15;;2274:18983:48;;19053:19:0;19049:93;;15549:6841;2274:18983:48;19158:10:0;19154:14;;2274:18983:48;;19154:18:0;19150:92;;15549:6841;2274:18983:48;19258:10:0;19254:14;;2274:18983:48;;19254:18:0;19250:92;;15549:6841;2274:18983:48;19358:10:0;19354:14;;2274:18983:48;;19354:18:0;19350:92;;15549:6841;2274:18983:48;19458:10:0;19454:14;;2274:18983:48;;19454:18:0;19450:92;;15549:6841;2274:18983:48;19558:9:0;19554:13;;2274:18983:48;;19554:17:0;19550:91;;15549:6841;2274:18983:48;19657:9:0;19653:13;;2274:18983:48;;19653:17:0;19649:91;;15549:6841;2274:18983:48;19756:9:0;19752:13;;2274:18983:48;;19752:17:0;19748:91;;15549:6841;2274:18983:48;19855:9:0;19851:13;;2274:18983:48;;19851:17:0;19847:91;;15549:6841;2274:18983:48;19954:8:0;19950:12;;2274:18983:48;;19950:16:0;19946:90;;15549:6841;2274:18983:48;20052:8:0;20048:12;;2274:18983:48;;20048:16:0;20044:90;;15549:6841;2274:18983:48;20150:8:0;20146:12;;2274:18983:48;;20146:16:0;20142:90;;15549:6841;2274:18983:48;20248:8:0;20244:12;;2274:18983:48;;20244:16:0;20240:90;;15549:6841;2274:18983:48;20346:7:0;20342:11;;2274:18983:48;;20342:15:0;20338:89;;15549:6841;2274:18983:48;20443:7:0;20439:11;;2274:18983:48;;20439:15:0;20435:89;;15549:6841;2274:18983:48;20540:7:0;20536:11;;2274:18983:48;;20536:15:0;20532:89;;15549:6841;2274:18983:48;20637:7:0;20633:11;;2274:18983:48;;20633:15:0;20629:89;;15549:6841;2274:18983:48;20734:6:0;20730:10;;2274:18983:48;;20730:14:0;20726:88;;15549:6841;2274:18983:48;20830:6:0;20826:10;;2274:18983:48;;20826:14:0;20822:88;;15549:6841;2274:18983:48;20926:6:0;20922:10;;2274:18983:48;;20922:14:0;20918:88;;15549:6841;2274:18983:48;21022:6:0;21018:10;;2274:18983:48;;21018:14:0;21014:88;;15549:6841;2274:18983:48;21118:5:0;21114:9;;2274:18983:48;;21114:13:0;21110:87;;15549:6841;2274:18983:48;21213:5:0;21209:9;;2274:18983:48;;21209:13:0;21205:87;;15549:6841;2274:18983:48;21308:5:0;21304:9;;2274:18983:48;;21304:13:0;21300:87;;15549:6841;2274:18983:48;21403:5:0;21399:9;;2274:18983:48;;21399:13:0;21395:87;;15549:6841;2274:18983:48;21498:4:0;21494:8;;2274:18983:48;;21494:12:0;21490:86;;15549:6841;2274:18983:48;21592:4:0;21588:8;;2274:18983:48;;21588:12:0;21584:86;;15549:6841;2274:18983:48;21686:4:0;21682:8;;2274:18983:48;;21682:12:0;21678:86;;15549:6841;2274:18983:48;21780:4:0;21776:8;;2274:18983:48;;21776:12:0;21772:86;;15549:6841;2274:18983:48;21874:3:0;21870:7;;2274:18983:48;;21870:11:0;21866:85;;15549:6841;2274:18983:48;21967:3:0;21963:7;;2274:18983:48;;21963:11:0;21959:85;;15549:6841;2274:18983:48;22060:3:0;22056:7;;2274:18983:48;;22056:11:0;22052:85;;15549:6841;22153:3;2274:18983:48;22149:7:0;;2274:18983:48;;22149:11:0;22145:85;;15549:6841;21592:4;2274:18983:48;;;22267:2:0;2274:18983:48;;;;958:34:0;22300:38;;958:34;;2274:18983:48;;15549:6841:0;:::o;22145:85::-;2274:18983:48;22188:35:0;2274:18983:48;21498:4:0;2274:18983:48;22145:85:0;;;22052;22095:35;2274:18983:48;;;21498:4:0;2274:18983:48;;22052:85:0;;21959;2274:18983:48;22002:35:0;2274:18983:48;21498:4:0;2274:18983:48;21959:85:0;;;21866;2274:18983:48;21909:35:0;2274:18983:48;21498:4:0;2274:18983:48;21866:85:0;;;21772:86;2274:18983:48;21816:35:0;2274:18983:48;21498:4:0;2274:18983:48;21772:86:0;;;21678;2274:18983:48;21722:35:0;2274:18983:48;21498:4:0;2274:18983:48;21678:86:0;;;21584;2274:18983:48;21628:35:0;2274:18983:48;21498:4:0;2274:18983:48;21584:86:0;;;21490;2274:18983:48;21534:35:0;2274:18983:48;21498:4:0;2274:18983:48;21490:86:0;;;21395:87;2274:18983:48;21440:35:0;2274:18983:48;21479:3:0;2274:18983:48;21395:87:0;;;21300;2274:18983:48;21345:35:0;2274:18983:48;21384:3:0;2274:18983:48;21300:87:0;;;21205;2274:18983:48;21250:35:0;2274:18983:48;21289:3:0;2274:18983:48;21205:87:0;;;21110;2274:18983:48;21155:35:0;2274:18983:48;21194:3:0;2274:18983:48;21110:87:0;;;21014:88;2274:18983:48;21060:35:0;2274:18983:48;21099:3:0;2274:18983:48;21014:88:0;;;20918;2274:18983:48;20964:35:0;2274:18983:48;21003:3:0;2274:18983:48;20918:88:0;;;20822;2274:18983:48;20868:35:0;2274:18983:48;20907:3:0;2274:18983:48;20822:88:0;;;20726;2274:18983:48;20772:35:0;2274:18983:48;20811:3:0;2274:18983:48;20726:88:0;;;20629:89;2274:18983:48;20676:35:0;2274:18983:48;20715:3:0;2274:18983:48;20629:89:0;;;20532;2274:18983:48;20579:35:0;2274:18983:48;20618:3:0;2274:18983:48;20532:89:0;;;20435;2274:18983:48;20482:35:0;2274:18983:48;20521:3:0;2274:18983:48;20435:89:0;;;20338;2274:18983:48;20385:35:0;2274:18983:48;20424:3:0;2274:18983:48;20338:89:0;;;20240:90;2274:18983:48;20288:35:0;2274:18983:48;20327:3:0;2274:18983:48;20240:90:0;;;20142;2274:18983:48;20190:35:0;2274:18983:48;20229:3:0;2274:18983:48;20142:90:0;;;20044;2274:18983:48;20092:35:0;2274:18983:48;20131:3:0;2274:18983:48;20044:90:0;;;19946;2274:18983:48;19994:35:0;2274:18983:48;20033:3:0;2274:18983:48;19946:90:0;;;19847:91;2274:18983:48;19896:35:0;2274:18983:48;19935:3:0;2274:18983:48;19847:91:0;;;19748;2274:18983:48;19797:35:0;2274:18983:48;19836:3:0;2274:18983:48;19748:91:0;;;19649;2274:18983:48;19698:35:0;2274:18983:48;19737:3:0;2274:18983:48;19649:91:0;;;19550;2274:18983:48;19599:35:0;2274:18983:48;19638:3:0;2274:18983:48;19550:91:0;;;19450:92;2274:18983:48;19500:35:0;2274:18983:48;19539:3:0;2274:18983:48;19450:92:0;;;19350;2274:18983:48;19400:35:0;2274:18983:48;19439:3:0;2274:18983:48;19350:92:0;;;19250;2274:18983:48;19300:35:0;2274:18983:48;19339:3:0;2274:18983:48;19250:92:0;;;19150;2274:18983:48;19200:35:0;2274:18983:48;19239:3:0;2274:18983:48;19150:92:0;;;19049:93;2274:18983:48;19100:35:0;2274:18983:48;19139:3:0;2274:18983:48;19049:93:0;;;18948;2274:18983:48;18999:35:0;2274:18983:48;19038:3:0;2274:18983:48;18948:93:0;;;18847;2274:18983:48;18898:35:0;2274:18983:48;18937:3:0;2274:18983:48;18847:93:0;;;18746;2274:18983:48;18797:35:0;2274:18983:48;18836:3:0;2274:18983:48;18746:93:0;;;18644:94;2274:18983:48;18696:35:0;2274:18983:48;18735:3:0;2274:18983:48;18644:94:0;;;18542;2274:18983:48;18594:35:0;2274:18983:48;18633:3:0;2274:18983:48;18542:94:0;;;18440;2274:18983:48;18492:35:0;2274:18983:48;18531:3:0;2274:18983:48;18440:94:0;;;18338;2274:18983:48;18390:35:0;2274:18983:48;18429:3:0;2274:18983:48;18338:94:0;;;18235:95;2274:18983:48;18288:35:0;2274:18983:48;18327:3:0;2274:18983:48;18235:95:0;;;18132;2274:18983:48;18185:35:0;2274:18983:48;18224:3:0;2274:18983:48;18132:95:0;;;18029;2274:18983:48;18082:35:0;2274:18983:48;18121:3:0;2274:18983:48;18029:95:0;;;17926;2274:18983:48;17979:35:0;2274:18983:48;18018:3:0;2274:18983:48;17926:95:0;;;17822:96;2274:18983:48;17876:35:0;2274:18983:48;17915:3:0;2274:18983:48;17822:96:0;;;17718;2274:18983:48;17772:35:0;2274:18983:48;17811:3:0;2274:18983:48;17718:96:0;;;17614;2274:18983:48;17668:35:0;2274:18983:48;17707:3:0;2274:18983:48;17614:96:0;;;17510;2274:18983:48;17564:35:0;2274:18983:48;17603:3:0;2274:18983:48;17510:96:0;;;17405:97;2274:18983:48;17460:35:0;2274:18983:48;17499:3:0;2274:18983:48;17405:97:0;;;17300;2274:18983:48;17355:35:0;2274:18983:48;17394:3:0;2274:18983:48;17300:97:0;;;17195;2274:18983:48;17250:35:0;2274:18983:48;17289:3:0;2274:18983:48;17195:97:0;;;17090;2274:18983:48;17145:35:0;2274:18983:48;17184:3:0;2274:18983:48;17090:97:0;;;16984:98;2274:18983:48;17040:35:0;2274:18983:48;17079:3:0;2274:18983:48;16984:98:0;;;16878;2274:18983:48;16934:35:0;2274:18983:48;16973:3:0;2274:18983:48;16878:98:0;;;16772;2274:18983:48;16828:35:0;2274:18983:48;16867:3:0;2274:18983:48;16772:98:0;;;16666;2274:18983:48;16722:35:0;2274:18983:48;16761:3:0;2274:18983:48;16666:98:0;;;16559:99;2274:18983:48;16616:35:0;2274:18983:48;16655:3:0;2274:18983:48;16559:99:0;;;16452;2274:18983:48;16509:35:0;2274:18983:48;16548:3:0;2274:18983:48;16452:99:0;;;16345;2274:18983:48;16402:35:0;2274:18983:48;16441:3:0;2274:18983:48;16345:99:0;;;16238;2274:18983:48;16295:35:0;2274:18983:48;16334:3:0;2274:18983:48;16238:99:0;;;16130:100;2274:18983:48;16188:35:0;2274:18983:48;16227:3:0;2274:18983:48;16130:100:0;;;16022;2274:18983:48;16080:35:0;2274:18983:48;16119:3:0;2274:18983:48;16022:100:0;;;15914;2274:18983:48;15972:35:0;2274:18983:48;16011:3:0;2274:18983:48;15914:100:0;;;15806;2274:18983:48;;-1:-1:-1;15806:100:0;","linkReferences":{},"immutableReferences":{"48696":[{"start":3859,"length":32},{"start":3967,"length":32}],"48733":[{"start":4936,"length":32},{"start":5798,"length":32}],"48744":[{"start":1452,"length":32},{"start":3157,"length":32},{"start":4189,"length":32},{"start":4974,"length":32},{"start":5310,"length":32},{"start":7069,"length":32}],"48768":[{"start":791,"length":32},{"start":1527,"length":32}],"48781":[{"start":2053,"length":32},{"start":2674,"length":32}],"50124":[{"start":6851,"length":32},{"start":7444,"length":32},{"start":8295,"length":32},{"start":10122,"length":32}]}},"methodIdentifiers":{"LMSR()":"476e44b6","allProtocolFeesOwed()":"017504b6","allTokens()":"6ff97f1d","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(address,address,uint256,uint256,bool)":"6863f5bc","burnSwap(address,address,uint256,uint256,uint256,bool)":"491e7998","collectProtocolFees()":"a1af5b9a","decimals()":"313ce567","denominators()":"017cf661","fee(uint256,uint256)":"939f5ea4","fees()":"9af1d35a","flashFeePpm()":"31596a6a","flashLoan(address,address,uint256,bytes)":"5cffe9de","getToken(uint256)":"e4b50cb8","initialMint(address,uint256)":"6d8d0ff3","kappa()":"6bba3f2f","kill()":"41c0e1b5","killed()":"1f3a0e41","mint(address,address,uint256,uint256)":"b3f1c93d","mintImpl()":"f0d1ae4f","name()":"06fdde03","numTokens()":"8e499bcf","owner()":"8da5cb5b","protocolFeeAddress()":"cce516b7","protocolFeePpm()":"6b4082d1","renounceOwnership()":"715018a6","setProtocolFeeAddress(address)":"6b7b9112","swap(address,bytes4,address,uint256,uint256,uint256,int128,uint256,bool)":"0eeee627","swapAmounts(uint256,uint256,uint256,int128)":"d516b8c6","swapMint(address,address,uint256,uint256,uint256)":"cb717f3a","swapMintImpl()":"95176066","swapToLimit(address,address,uint256,uint256,int128,uint256,bool)":"79a68d53","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b","wrapperToken()":"0d246214"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens_\",\"type\":\"address[]\"},{\"internalType\":\"int128\",\"name\":\"kappa_\",\"type\":\"int128\"},{\"internalType\":\"uint256[]\",\"name\":\"fees_\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"flashFeePpm_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolFeePpm_\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"protocolFeeAddress_\",\"type\":\"address\"},{\"internalType\":\"contract NativeWrapper\",\"name\":\"wrapperToken_\",\"type\":\"address\"},{\"internalType\":\"contract PartyPoolSwapImpl\",\"name\":\"swapImpl_\",\"type\":\"address\"},{\"internalType\":\"contract PartyPoolMintImpl\",\"name\":\"mintImpl_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpBurned\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFee\",\"type\":\"uint256\"}],\"name\":\"BurnSwap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC3156FlashBorrower\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFee\",\"type\":\"uint256\"}],\"name\":\"Flash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Killed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpMinted\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"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\":[],\"name\":\"ProtocolFeesCollected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFee\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFee\",\"type\":\"uint256\"}],\"name\":\"SwapMint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"LMSR\",\"outputs\":[{\"components\":[{\"internalType\":\"int128\",\"name\":\"kappa\",\"type\":\"int128\"},{\"internalType\":\"int128[]\",\"name\":\"qInternal\",\"type\":\"int128[]\"}],\"internalType\":\"struct LMSRStabilized.State\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allProtocolFeesOwed\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allTokens\",\"outputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"withdrawAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"name\":\"burnSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outFee\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectProtocolFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"denominators\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"j\",\"type\":\"uint256\"}],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fees\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"flashFeePpm\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC3156FlashBorrower\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenAddr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flashLoan\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"}],\"name\":\"getToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpTokens\",\"type\":\"uint256\"}],\"name\":\"initialMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lpMinted\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kappa\",\"outputs\":[{\"internalType\":\"int128\",\"name\":\"\",\"type\":\"int128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kill\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpTokenAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lpMinted\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintImpl\",\"outputs\":[{\"internalType\":\"contract PartyPoolMintImpl\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"numTokens\",\"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\":\"protocolFeeAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolFeePpm\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeAddress\",\"type\":\"address\"}],\"name\":\"setProtocolFeeAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"fundingSelector\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"int128\",\"name\":\"limitPrice\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inFee\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"inputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"int128\",\"name\":\"limitPrice\",\"type\":\"int128\"}],\"name\":\"swapAmounts\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountInUsed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lpMinted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inFee\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"swapMintImpl\",\"outputs\":[{\"internalType\":\"contract PartyPoolSwapImpl\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"int128\",\"name\":\"limitPrice\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"name\":\"swapToLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountInUsed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inFee\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wrapperToken\",\"outputs\":[{\"internalType\":\"contract NativeWrapper\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"The contract stores per-token uint `_bases` used to scale token units into the internal Q64.64 representation used by the LMSR library. Cached on-chain uint balances are kept to reduce balanceOf() calls. The contract uses ceiling/floor rules described in function comments to bias rounding in favor of the pool (i.e., floor outputs to users, ceil inputs/fees where appropriate). Mutating methods have re-entrancy locks. The contract may be \\\"killed\\\" by the admin in case any security issue is discovered, in which case all swaps and mints are disabled, and only the burn() method remains functional to allow LP's to withdraw their assets.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"ProtocolFeesCollected()\":{\"details\":\"After collection, the protocolFee accounting array will be zeroed out.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"burn(address,address,uint256,uint256,bool)\":{\"details\":\"This function forwards the call to the burn implementation via delegatecall\",\"params\":{\"deadline\":\"timestamp after which the transaction will revert. Pass 0 to ignore.\",\"lpAmount\":\"amount of LP tokens to burn (proportional withdrawal)\",\"payer\":\"address that provides the LP tokens to burn\",\"receiver\":\"address that receives the withdrawn tokens\",\"unwrap\":\"if true and the native token is being withdrawn, it is unwraped and sent as native currency\"}},\"burnSwap(address,address,uint256,uint256,uint256,bool)\":{\"details\":\"The function burns LP tokens (authorization via allowance if needed), sends the single-asset payout and updates LMSR state.\",\"params\":{\"deadline\":\"optional deadline\",\"lpAmount\":\"amount of LP tokens to burn\",\"outputTokenIndex\":\"index of target asset to receive\",\"payer\":\"who burns LP tokens\",\"receiver\":\"who receives the single asset\"},\"returns\":{\"amountOut\":\"uint amount of asset outputTokenIndex sent to receiver\",\"outFee\":\"uint amount of output asset kept by the LP's and protocol as a fee\"}},\"collectProtocolFees()\":{\"details\":\"Anyone can call; must have protocolFeeAddress != address(0) to be operational.\"},\"constructor\":{\"params\":{\"fees_\":\"per-asset swap fees in ppm (length must equal tokens_.length)\",\"flashFeePpm_\":\"fee in parts-per-million, taken for flash loans\",\"kappa_\":\"liquidity parameter \\u03ba (Q64.64) used to derive b = \\u03ba * S(q)\",\"mintImpl_\":\"address of the Mint implementation contract\",\"name_\":\"LP token name\",\"owner_\":\"Admin account that can disable the vault using kill()\",\"swapImpl_\":\"address of the SwapMint implementation contract\",\"symbol_\":\"LP token symbol\",\"tokens_\":\"token addresses (n)\"}},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` _tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"denominators()\":{\"details\":\"denominators()[i] is the base for tokens[i]. These bases are chosen by deployer and must match token decimals.\"},\"flashLoan(address,address,uint256,bytes)\":{\"details\":\"Initiate a flash loan.\",\"params\":{\"amount\":\"The amount of tokens lent.\",\"data\":\"Arbitrary data structure, intended to contain user-defined parameters.\",\"receiver\":\"The receiver of the tokens in the loan, and the receiver of the callback.\",\"token\":\"The loan currency.\"}},\"getToken(uint256)\":{\"details\":\"tokens[i] corresponds to the i-th asset and maps to index i in the internal LMSR arrays.\"},\"initialMint(address,uint256)\":{\"details\":\"Assumes tokens have already been transferred to the pool prior to calling. Can only be called when the pool is uninitialized (totalSupply() == 0 or _lmsr.nAssets == 0).\",\"params\":{\"lpTokens\":\"The number of LP tokens to issue for this mint. If 0, then the number of tokens returned will equal the LMSR internal q total\",\"receiver\":\"address that receives the LP tokens\"}},\"kappa()\":{\"details\":\"Pools are constructed with a \\u03ba value; this getter exposes the \\u03ba used by the pool.\"},\"mint(address,address,uint256,uint256)\":{\"details\":\"This function forwards the call to the mint implementation via delegatecall\",\"params\":{\"deadline\":\"timestamp after which the transaction will revert. Pass 0 to ignore.\",\"lpTokenAmount\":\"desired amount of LP _tokens to mint\",\"payer\":\"address that provides the input _tokens\",\"receiver\":\"address that receives the LP _tokens\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"protocolFeePpm()\":{\"details\":\"This is the fraction (in ppm) of the pool-collected fees that are owed to the protocol.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"swap(address,bytes4,address,uint256,uint256,uint256,int128,uint256,bool)\":{\"details\":\"This function transfers the exact gross input (including fee) from payer and sends the computed output to receiver. Non-standard tokens (fee-on-transfer, rebasers) are rejected via balance checks.\",\"params\":{\"deadline\":\"timestamp after which the transaction will revert. Pass 0 to ignore.\",\"fundingSelector\":\"If set to USE_APPROVALS, then the payer must use regular ERC20 approvals to authorize the pool to move the required input amount. If this fundingSelector is USE_PREFUNDING, then all of the input amount is expected to have already been sent to the pool and no additional transfers are needed. Refunds of excess input amount are NOT provided and it is illegal to use this funding method with a limit price. Otherwise, for any other fundingSelector value, a callback style funding mechanism is used where the given selector is invoked on the payer, passing the arguments of (address inputToken, uint256 inputAmount). The callback function must send the given amount of input coin to the pool in order to continue the swap transaction, otherwise \\\"Insufficient funds\\\" is thrown.\",\"inputTokenIndex\":\"index of input asset\",\"limitPrice\":\"maximum acceptable marginal price (64.64 fixed point). Pass 0 to ignore.\",\"maxAmountIn\":\"maximum amount of token inputTokenIndex (uint256) to transfer in (inclusive of fees)\",\"outputTokenIndex\":\"index of output asset\",\"payer\":\"address of the account that pays for the swap\",\"receiver\":\"address that will receive the output tokens\"},\"returns\":{\"amountIn\":\"actual input used (uint256), amountOut actual output sent (uint256), inFee fee taken from the input (uint256)\"}},\"swapAmounts(uint256,uint256,uint256,int128)\":{\"params\":{\"inputTokenIndex\":\"index of input token\",\"limitPrice\":\"maximum acceptable marginal price (pass 0 to ignore)\",\"maxAmountIn\":\"maximum gross input allowed (inclusive of fee)\",\"outputTokenIndex\":\"index of output token\"},\"returns\":{\"amountIn\":\"gross input amount to transfer (includes fee), amountOut output amount user would receive, inFee fee taken from input amount\"}},\"swapMint(address,address,uint256,uint256,uint256)\":{\"details\":\"This function forwards the call to the swapMint implementation via delegatecall\",\"params\":{\"deadline\":\"optional deadline\",\"inputTokenIndex\":\"index of the input token\",\"maxAmountIn\":\"maximum uint token input (inclusive of fee)\",\"payer\":\"who transfers the input token\",\"receiver\":\"who receives the minted LP _tokens\"},\"returns\":{\"amountInUsed\":\"actual input used (uint256), lpMinted actual LP minted (uint256), inFee fee taken from the input (uint256)\"}},\"swapToLimit(address,address,uint256,uint256,int128,uint256,bool)\":{\"details\":\"If balances prevent fully reaching the limit, the function caps and returns actuals. The payer must transfer the exact gross input computed by the view.\",\"params\":{\"deadline\":\"timestamp after which the transaction will revert. Pass 0 to ignore.\",\"inputTokenIndex\":\"index of input asset\",\"limitPrice\":\"target marginal price to reach (must be > 0)\",\"outputTokenIndex\":\"index of output asset\",\"payer\":\"address of the account that pays for the swap\",\"receiver\":\"address that will receive the output tokens\"},\"returns\":{\"amountInUsed\":\"actual input used excluding fee (uint256), amountOut actual output sent (uint256), inFee fee taken from the input (uint256)\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s _tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"stateVariables\":{\"KAPPA\":{\"details\":\"Pool is constructed with a fixed \\u03ba. Clients that previously passed tradeFrac/targetSlippage should use LMSRStabilized.computeKappaFromSlippage(...) to derive \\u03ba and pass it here.\"}},\"title\":\"PartyPool - LMSR-backed multi-asset pool with LP ERC20 token\",\"version\":1},\"userdoc\":{\"events\":{\"BurnSwap(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted instead of Burn when a burnSwap is executed.\"},\"ProtocolFeesCollected()\":{\"notice\":\"Emitted when protocol fees are collected from this pool.\"},\"SwapMint(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted instead of Swap when a single-token swapMint is executed.\"}},\"kind\":\"user\",\"methods\":{\"allProtocolFeesOwed()\":{\"notice\":\"Protocol fee ledger accessor. Returns tokens owed (raw uint token units) from this pool as protocol fees that have not yet been transferred out.\"},\"allTokens()\":{\"notice\":\"Returns the list of all token addresses in the pool (copy).\"},\"burn(address,address,uint256,uint256,bool)\":{\"notice\":\"Burn LP tokens and withdraw the proportional basket to receiver.\"},\"burnSwap(address,address,uint256,uint256,uint256,bool)\":{\"notice\":\"Burn LP tokens then swap the redeemed proportional basket into a single asset `outputTokenIndex` and send to receiver.\"},\"collectProtocolFees()\":{\"notice\":\"Transfer all protocol fees to the configured protocolFeeAddress and zero the ledger.\"},\"denominators()\":{\"notice\":\"Per-token uint base denominators used to convert uint token amounts <-> internal Q64.64 representation.\"},\"fee(uint256,uint256)\":{\"notice\":\"Effective combined fee in ppm for (i as input, j as output)\"},\"fees()\":{\"notice\":\"Per-asset swap fees in ppm.\"},\"flashFeePpm()\":{\"notice\":\"Flash-loan fee in parts-per-million (ppm) applied to flash borrow amounts.\"},\"getToken(uint256)\":{\"notice\":\"Token addresses comprising the pool. Effectively immutable after construction.\"},\"initialMint(address,uint256)\":{\"notice\":\"Initial mint to set up pool for the first time.\"},\"kappa()\":{\"notice\":\"Liquidity parameter \\u03ba (Q64.64) used by the LMSR kernel: b = \\u03ba * S(q)\"},\"kill()\":{\"notice\":\"If a security problem is found, the vault owner may call this function to permanently disable swap and mint functionality, leaving only burns (withdrawals) working.\"},\"killed()\":{\"notice\":\"If true, the vault has been disabled by the owner and only burns (withdrawals) are allowed.\"},\"mint(address,address,uint256,uint256)\":{\"notice\":\"Proportional mint for existing pool.\"},\"numTokens()\":{\"notice\":\"Returns the number of tokens (n) in the pool.\"},\"protocolFeeAddress()\":{\"notice\":\"Address to which collected protocol _tokens will be sent on collectProtocolFees()\"},\"protocolFeePpm()\":{\"notice\":\"Protocol fee share (ppm) applied to fees collected by the pool (floored when accrued)\"},\"swap(address,bytes4,address,uint256,uint256,uint256,int128,uint256,bool)\":{\"notice\":\"Swap input token inputTokenIndex -> token outputTokenIndex. Payer must approve token inputTokenIndex.\"},\"swapAmounts(uint256,uint256,uint256,int128)\":{\"notice\":\"External view to quote exact-in swap amounts (gross input incl. fee and output), matching swap() computations\"},\"swapMint(address,address,uint256,uint256,uint256)\":{\"notice\":\"Single-token mint: deposit a single token, charge swap-LMSR cost, and mint LP.\"},\"swapToLimit(address,address,uint256,uint256,int128,uint256,bool)\":{\"notice\":\"Swap up to the price limit; computes max input to reach limit then performs swap.\"},\"wrapperToken()\":{\"notice\":\"Token contract used for wrapping native currency\"}},\"notice\":\"A multi-asset liquidity pool backed by the LMSRStabilized pricing model. The pool issues an ERC20 LP token representing proportional ownership. It supports: - Proportional minting and burning of LP tokens, - Exact-input swaps and swaps-to-price-limits, - Single-token mint (swapMint) and single-asset withdrawal (burnSwap), - ERC-3156 flash loans\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/PartyPool.sol\":\"PartyPool\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/abdk-libraries-solidity/ABDKMath64x64.sol\":{\"keccak256\":\"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97\",\"license\":\"BSD-4-Clause\",\"urls\":[\"bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7\",\"dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol\":{\"keccak256\":\"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd\",\"dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd\",\"dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168\",\"dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd274645d15bb7e4fcb9c833e401b2c5837404f90057f11a49118f25e0af7c76f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d38e0b997bb7aebae26d190b03d0991feb0d204c45f945e60014e1ca9175de69\",\"dweb:/ipfs/QmWzsUHHAZcjMyF8uMDEtNpMTkYZdQrfvdKPobXvwVHKo6\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x50e81a8b089e3f382b6c915aa0166773de64ea4756e8f9479d9943a5f956ddf5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bfeb96a150537222e2191c03887127499a4f21dfb5f9a7211da4d81749b52848\",\"dweb:/ipfs/QmYR75ECbsBuxSiXmGvGfNKJRLoK5MdLUZL1bd8SixzxL4\"]},\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161\",\"dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"src/ERC20External.sol\":{\"keccak256\":\"0x421f511bb3aa7258fb7121aa66b9a2e8e0b7a07b7e51c800c714f7acbfd599d3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b3fde56a83eae12a31eb4875d8952a99d18591fe0f18b6a12392c8f48f76af46\",\"dweb:/ipfs/QmeApbmGv6Z2b1JynvBxaAK1j1eWhGYpeNEP56V8XXvpcz\"]},\"src/ERC20Internal.sol\":{\"keccak256\":\"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f\",\"dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk\"]},\"src/Funding.sol\":{\"keccak256\":\"0x1d505b256d221cec151157083f8441193bbf7859d13873353429a7ca5342381d\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6871ab97d81ddffc56845142601408e974b7b0c619a2107aacd6b17eafb3330c\",\"dweb:/ipfs/QmU5EKjGN2vDPgXhSsr4qvesq2T5eR5Ybeg25bHrcJyP2y\"]},\"src/IOwnable.sol\":{\"keccak256\":\"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1\",\"dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9\"]},\"src/IPartyPool.sol\":{\"keccak256\":\"0x74b9531bdf2200f256cac6c2cd54c0efad7c1bdfbe694ee910df75448ffe93f4\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://aadd161d7e197b48e6be4198b0f4f81a10016b9904d024e0a361bf2d7f941475\",\"dweb:/ipfs/QmYuGyPZCigmt8va11oAHXPTpHFyF3d7ARDNacyr2jsDfa\"]},\"src/LMSRStabilized.sol\":{\"keccak256\":\"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3\",\"dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB\"]},\"src/NativeWrapper.sol\":{\"keccak256\":\"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238\",\"dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB\"]},\"src/OwnableExternal.sol\":{\"keccak256\":\"0x0a0199368ad20a31e7169b3e56449bf022c9d680e0d487c118608a7f14cb7efb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3348a063649e01acf9c6aa6b7ce2ecf62ace8c6f1467477de7d605996f08ec64\",\"dweb:/ipfs/QmSoxb35FFsNCgXgWn91CupvjpGmyM31wcfxAVpVFFPecX\"]},\"src/OwnableInternal.sol\":{\"keccak256\":\"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca\",\"dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE\"]},\"src/PartyPool.sol\":{\"keccak256\":\"0xaf921e5a5c32ee53fc1991d20fe030ec0a9572d0a8d112e717476ee4af0b8ab4\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b4bc13e889ec6fb214ac3538203328abede9e316bf617a7f7593b3b0c9ea40f0\",\"dweb:/ipfs/QmWx12PuyFqpy9MyxqJkRvTGkzYAYHajCYps3htgwe3YrX\"]},\"src/PartyPoolBase.sol\":{\"keccak256\":\"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5\",\"dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5\"]},\"src/PartyPoolHelpers.sol\":{\"keccak256\":\"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5\",\"dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP\"]},\"src/PartyPoolMintImpl.sol\":{\"keccak256\":\"0xe9d9927cecd46a1f836b2c43e9d6184642b9e695c7462e5fb7c671a38aab7398\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8d821911d7982fc302929198539b27f72be100b91450c98d2e0081519f776499\",\"dweb:/ipfs/QmRChx1DPD1gKXwfD1m6aQ7pgh1aX6CvYLNX41ufdJteaJ\"]},\"src/PartyPoolSwapImpl.sol\":{\"keccak256\":\"0x71ecbd6d0fb106031baed7e4c21694ef24f0112af7d975325b98b1b0463ba5b2\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://64f8f8bae2f89ca495b9edacd012363b55e78a198f100650beb2b1238e8ef11f\",\"dweb:/ipfs/QmVfihiw9TqncuEfZKx7c6WEHiGFfRQyhtfdTGzfN7emNY\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"contract IERC20[]","name":"tokens_","type":"address[]"},{"internalType":"int128","name":"kappa_","type":"int128"},{"internalType":"uint256[]","name":"fees_","type":"uint256[]"},{"internalType":"uint256","name":"flashFeePpm_","type":"uint256"},{"internalType":"uint256","name":"protocolFeePpm_","type":"uint256"},{"internalType":"address","name":"protocolFeeAddress_","type":"address"},{"internalType":"contract NativeWrapper","name":"wrapperToken_","type":"address"},{"internalType":"contract PartyPoolSwapImpl","name":"swapImpl_","type":"address"},{"internalType":"contract PartyPoolMintImpl","name":"mintImpl_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":false},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"uint256[]","name":"amounts","type":"uint256[]","indexed":false},{"internalType":"uint256","name":"lpBurned","type":"uint256","indexed":false}],"type":"event","name":"Burn","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":true},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"contract IERC20","name":"tokenOut","type":"address","indexed":true},{"internalType":"uint256","name":"amountIn","type":"uint256","indexed":false},{"internalType":"uint256","name":"amountOut","type":"uint256","indexed":false},{"internalType":"uint256","name":"lpFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolFee","type":"uint256","indexed":false}],"type":"event","name":"BurnSwap","anonymous":false},{"inputs":[{"internalType":"address","name":"initiator","type":"address","indexed":true},{"internalType":"contract IERC3156FlashBorrower","name":"receiver","type":"address","indexed":true},{"internalType":"contract IERC20","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"lpFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolFee","type":"uint256","indexed":false}],"type":"event","name":"Flash","anonymous":false},{"inputs":[],"type":"event","name":"Killed","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":false},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"uint256[]","name":"amounts","type":"uint256[]","indexed":false},{"internalType":"uint256","name":"lpMinted","type":"uint256","indexed":false}],"type":"event","name":"Mint","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":[],"type":"event","name":"ProtocolFeesCollected","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":false},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"contract IERC20","name":"tokenIn","type":"address","indexed":true},{"internalType":"contract IERC20","name":"tokenOut","type":"address","indexed":true},{"internalType":"uint256","name":"amountIn","type":"uint256","indexed":false},{"internalType":"uint256","name":"amountOut","type":"uint256","indexed":false},{"internalType":"uint256","name":"lpFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolFee","type":"uint256","indexed":false}],"type":"event","name":"Swap","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":true},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"contract IERC20","name":"tokenIn","type":"address","indexed":true},{"internalType":"uint256","name":"amountIn","type":"uint256","indexed":false},{"internalType":"uint256","name":"amountOut","type":"uint256","indexed":false},{"internalType":"uint256","name":"lpFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolFee","type":"uint256","indexed":false}],"type":"event","name":"SwapMint","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"LMSR","outputs":[{"internalType":"struct LMSRStabilized.State","name":"","type":"tuple","components":[{"internalType":"int128","name":"kappa","type":"int128"},{"internalType":"int128[]","name":"qInternal","type":"int128[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"allProtocolFeesOwed","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"allTokens","outputs":[{"internalType":"contract IERC20[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"lpAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"unwrap","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"burn","outputs":[{"internalType":"uint256[]","name":"withdrawAmounts","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"lpAmount","type":"uint256"},{"internalType":"uint256","name":"outputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"unwrap","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"burnSwap","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"outFee","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"collectProtocolFees"},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"denominators","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"i","type":"uint256"},{"internalType":"uint256","name":"j","type":"uint256"}],"stateMutability":"view","type":"function","name":"fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"fees","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"flashFeePpm","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"contract IERC3156FlashBorrower","name":"receiver","type":"address"},{"internalType":"address","name":"tokenAddr","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"flashLoan","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"i","type":"uint256"}],"stateMutability":"view","type":"function","name":"getToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"lpTokens","type":"uint256"}],"stateMutability":"payable","type":"function","name":"initialMint","outputs":[{"internalType":"uint256","name":"lpMinted","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"kappa","outputs":[{"internalType":"int128","name":"","type":"int128"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"kill"},{"inputs":[],"stateMutability":"view","type":"function","name":"killed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"lpTokenAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"payable","type":"function","name":"mint","outputs":[{"internalType":"uint256","name":"lpMinted","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mintImpl","outputs":[{"internalType":"contract PartyPoolMintImpl","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"numTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"protocolFeeAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"protocolFeePpm","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"feeAddress","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setProtocolFeeAddress"},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"bytes4","name":"fundingSelector","type":"bytes4"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"inputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"outputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"int128","name":"limitPrice","type":"int128"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"unwrap","type":"bool"}],"stateMutability":"payable","type":"function","name":"swap","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"inFee","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"inputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"outputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"int128","name":"limitPrice","type":"int128"}],"stateMutability":"view","type":"function","name":"swapAmounts","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"inFee","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"inputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"payable","type":"function","name":"swapMint","outputs":[{"internalType":"uint256","name":"amountInUsed","type":"uint256"},{"internalType":"uint256","name":"lpMinted","type":"uint256"},{"internalType":"uint256","name":"inFee","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"swapMintImpl","outputs":[{"internalType":"contract PartyPoolSwapImpl","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"inputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"outputTokenIndex","type":"uint256"},{"internalType":"int128","name":"limitPrice","type":"int128"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"unwrap","type":"bool"}],"stateMutability":"payable","type":"function","name":"swapToLimit","outputs":[{"internalType":"uint256","name":"amountInUsed","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"inFee","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"wrapperToken","outputs":[{"internalType":"contract NativeWrapper","name":"","type":"address"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"burn(address,address,uint256,uint256,bool)":{"details":"This function forwards the call to the burn implementation via delegatecall","params":{"deadline":"timestamp after which the transaction will revert. Pass 0 to ignore.","lpAmount":"amount of LP tokens to burn (proportional withdrawal)","payer":"address that provides the LP tokens to burn","receiver":"address that receives the withdrawn tokens","unwrap":"if true and the native token is being withdrawn, it is unwraped and sent as native currency"}},"burnSwap(address,address,uint256,uint256,uint256,bool)":{"details":"The function burns LP tokens (authorization via allowance if needed), sends the single-asset payout and updates LMSR state.","params":{"deadline":"optional deadline","lpAmount":"amount of LP tokens to burn","outputTokenIndex":"index of target asset to receive","payer":"who burns LP tokens","receiver":"who receives the single asset"},"returns":{"amountOut":"uint amount of asset outputTokenIndex sent to receiver","outFee":"uint amount of output asset kept by the LP's and protocol as a fee"}},"collectProtocolFees()":{"details":"Anyone can call; must have protocolFeeAddress != address(0) to be operational."},"constructor":{"params":{"fees_":"per-asset swap fees in ppm (length must equal tokens_.length)","flashFeePpm_":"fee in parts-per-million, taken for flash loans","kappa_":"liquidity parameter κ (Q64.64) used to derive b = κ * S(q)","mintImpl_":"address of the Mint implementation contract","name_":"LP token name","owner_":"Admin account that can disable the vault using kill()","swapImpl_":"address of the SwapMint implementation contract","symbol_":"LP token symbol","tokens_":"token addresses (n)"}},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` _tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"denominators()":{"details":"denominators()[i] is the base for tokens[i]. These bases are chosen by deployer and must match token decimals."},"flashLoan(address,address,uint256,bytes)":{"details":"Initiate a flash loan.","params":{"amount":"The amount of tokens lent.","data":"Arbitrary data structure, intended to contain user-defined parameters.","receiver":"The receiver of the tokens in the loan, and the receiver of the callback.","token":"The loan currency."}},"getToken(uint256)":{"details":"tokens[i] corresponds to the i-th asset and maps to index i in the internal LMSR arrays."},"initialMint(address,uint256)":{"details":"Assumes tokens have already been transferred to the pool prior to calling. Can only be called when the pool is uninitialized (totalSupply() == 0 or _lmsr.nAssets == 0).","params":{"lpTokens":"The number of LP tokens to issue for this mint. If 0, then the number of tokens returned will equal the LMSR internal q total","receiver":"address that receives the LP tokens"}},"kappa()":{"details":"Pools are constructed with a κ value; this getter exposes the κ used by the pool."},"mint(address,address,uint256,uint256)":{"details":"This function forwards the call to the mint implementation via delegatecall","params":{"deadline":"timestamp after which the transaction will revert. Pass 0 to ignore.","lpTokenAmount":"desired amount of LP _tokens to mint","payer":"address that provides the input _tokens","receiver":"address that receives the LP _tokens"}},"name()":{"details":"Returns the name of the token."},"owner()":{"details":"Returns the address of the current owner."},"protocolFeePpm()":{"details":"This is the fraction (in ppm) of the pool-collected fees that are owed to the protocol."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"swap(address,bytes4,address,uint256,uint256,uint256,int128,uint256,bool)":{"details":"This function transfers the exact gross input (including fee) from payer and sends the computed output to receiver. Non-standard tokens (fee-on-transfer, rebasers) are rejected via balance checks.","params":{"deadline":"timestamp after which the transaction will revert. Pass 0 to ignore.","fundingSelector":"If set to USE_APPROVALS, then the payer must use regular ERC20 approvals to authorize the pool to move the required input amount. If this fundingSelector is USE_PREFUNDING, then all of the input amount is expected to have already been sent to the pool and no additional transfers are needed. Refunds of excess input amount are NOT provided and it is illegal to use this funding method with a limit price. Otherwise, for any other fundingSelector value, a callback style funding mechanism is used where the given selector is invoked on the payer, passing the arguments of (address inputToken, uint256 inputAmount). The callback function must send the given amount of input coin to the pool in order to continue the swap transaction, otherwise \"Insufficient funds\" is thrown.","inputTokenIndex":"index of input asset","limitPrice":"maximum acceptable marginal price (64.64 fixed point). Pass 0 to ignore.","maxAmountIn":"maximum amount of token inputTokenIndex (uint256) to transfer in (inclusive of fees)","outputTokenIndex":"index of output asset","payer":"address of the account that pays for the swap","receiver":"address that will receive the output tokens"},"returns":{"amountIn":"actual input used (uint256), amountOut actual output sent (uint256), inFee fee taken from the input (uint256)"}},"swapAmounts(uint256,uint256,uint256,int128)":{"params":{"inputTokenIndex":"index of input token","limitPrice":"maximum acceptable marginal price (pass 0 to ignore)","maxAmountIn":"maximum gross input allowed (inclusive of fee)","outputTokenIndex":"index of output token"},"returns":{"amountIn":"gross input amount to transfer (includes fee), amountOut output amount user would receive, inFee fee taken from input amount"}},"swapMint(address,address,uint256,uint256,uint256)":{"details":"This function forwards the call to the swapMint implementation via delegatecall","params":{"deadline":"optional deadline","inputTokenIndex":"index of the input token","maxAmountIn":"maximum uint token input (inclusive of fee)","payer":"who transfers the input token","receiver":"who receives the minted LP _tokens"},"returns":{"amountInUsed":"actual input used (uint256), lpMinted actual LP minted (uint256), inFee fee taken from the input (uint256)"}},"swapToLimit(address,address,uint256,uint256,int128,uint256,bool)":{"details":"If balances prevent fully reaching the limit, the function caps and returns actuals. The payer must transfer the exact gross input computed by the view.","params":{"deadline":"timestamp after which the transaction will revert. Pass 0 to ignore.","inputTokenIndex":"index of input asset","limitPrice":"target marginal price to reach (must be > 0)","outputTokenIndex":"index of output asset","payer":"address of the account that pays for the swap","receiver":"address that will receive the output tokens"},"returns":{"amountInUsed":"actual input used excluding fee (uint256), amountOut actual output sent (uint256), inFee fee taken from the input (uint256)"}},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s _tokens of at least `value`."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{"allProtocolFeesOwed()":{"notice":"Protocol fee ledger accessor. Returns tokens owed (raw uint token units) from this pool as protocol fees that have not yet been transferred out."},"allTokens()":{"notice":"Returns the list of all token addresses in the pool (copy)."},"burn(address,address,uint256,uint256,bool)":{"notice":"Burn LP tokens and withdraw the proportional basket to receiver."},"burnSwap(address,address,uint256,uint256,uint256,bool)":{"notice":"Burn LP tokens then swap the redeemed proportional basket into a single asset `outputTokenIndex` and send to receiver."},"collectProtocolFees()":{"notice":"Transfer all protocol fees to the configured protocolFeeAddress and zero the ledger."},"denominators()":{"notice":"Per-token uint base denominators used to convert uint token amounts <-> internal Q64.64 representation."},"fee(uint256,uint256)":{"notice":"Effective combined fee in ppm for (i as input, j as output)"},"fees()":{"notice":"Per-asset swap fees in ppm."},"flashFeePpm()":{"notice":"Flash-loan fee in parts-per-million (ppm) applied to flash borrow amounts."},"getToken(uint256)":{"notice":"Token addresses comprising the pool. Effectively immutable after construction."},"initialMint(address,uint256)":{"notice":"Initial mint to set up pool for the first time."},"kappa()":{"notice":"Liquidity parameter κ (Q64.64) used by the LMSR kernel: b = κ * S(q)"},"kill()":{"notice":"If a security problem is found, the vault owner may call this function to permanently disable swap and mint functionality, leaving only burns (withdrawals) working."},"killed()":{"notice":"If true, the vault has been disabled by the owner and only burns (withdrawals) are allowed."},"mint(address,address,uint256,uint256)":{"notice":"Proportional mint for existing pool."},"numTokens()":{"notice":"Returns the number of tokens (n) in the pool."},"protocolFeeAddress()":{"notice":"Address to which collected protocol _tokens will be sent on collectProtocolFees()"},"protocolFeePpm()":{"notice":"Protocol fee share (ppm) applied to fees collected by the pool (floored when accrued)"},"swap(address,bytes4,address,uint256,uint256,uint256,int128,uint256,bool)":{"notice":"Swap input token inputTokenIndex -> token outputTokenIndex. Payer must approve token inputTokenIndex."},"swapAmounts(uint256,uint256,uint256,int128)":{"notice":"External view to quote exact-in swap amounts (gross input incl. fee and output), matching swap() computations"},"swapMint(address,address,uint256,uint256,uint256)":{"notice":"Single-token mint: deposit a single token, charge swap-LMSR cost, and mint LP."},"swapToLimit(address,address,uint256,uint256,int128,uint256,bool)":{"notice":"Swap up to the price limit; computes max input to reach limit then performs swap."},"wrapperToken()":{"notice":"Token contract used for wrapping native currency"}},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/PartyPool.sol":"PartyPool"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/abdk-libraries-solidity/ABDKMath64x64.sol":{"keccak256":"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97","urls":["bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7","dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN"],"license":"BSD-4-Clause"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d","urls":["bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100","dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc","urls":["bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037","dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44","urls":["bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d","dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol":{"keccak256":"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e","urls":["bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd","dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86","urls":["bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd","dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9","urls":["bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168","dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd274645d15bb7e4fcb9c833e401b2c5837404f90057f11a49118f25e0af7c76f","urls":["bzz-raw://d38e0b997bb7aebae26d190b03d0991feb0d204c45f945e60014e1ca9175de69","dweb:/ipfs/QmWzsUHHAZcjMyF8uMDEtNpMTkYZdQrfvdKPobXvwVHKo6"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol":{"keccak256":"0x50e81a8b089e3f382b6c915aa0166773de64ea4756e8f9479d9943a5f956ddf5","urls":["bzz-raw://bfeb96a150537222e2191c03887127499a4f21dfb5f9a7211da4d81749b52848","dweb:/ipfs/QmYR75ECbsBuxSiXmGvGfNKJRLoK5MdLUZL1bd8SixzxL4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol":{"keccak256":"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0","urls":["bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161","dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"},"src/ERC20External.sol":{"keccak256":"0x421f511bb3aa7258fb7121aa66b9a2e8e0b7a07b7e51c800c714f7acbfd599d3","urls":["bzz-raw://b3fde56a83eae12a31eb4875d8952a99d18591fe0f18b6a12392c8f48f76af46","dweb:/ipfs/QmeApbmGv6Z2b1JynvBxaAK1j1eWhGYpeNEP56V8XXvpcz"],"license":"UNLICENSED"},"src/ERC20Internal.sol":{"keccak256":"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36","urls":["bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f","dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk"],"license":"UNLICENSED"},"src/Funding.sol":{"keccak256":"0x1d505b256d221cec151157083f8441193bbf7859d13873353429a7ca5342381d","urls":["bzz-raw://6871ab97d81ddffc56845142601408e974b7b0c619a2107aacd6b17eafb3330c","dweb:/ipfs/QmU5EKjGN2vDPgXhSsr4qvesq2T5eR5Ybeg25bHrcJyP2y"],"license":"UNLICENSED"},"src/IOwnable.sol":{"keccak256":"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990","urls":["bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1","dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9"],"license":"MIT"},"src/IPartyPool.sol":{"keccak256":"0x74b9531bdf2200f256cac6c2cd54c0efad7c1bdfbe694ee910df75448ffe93f4","urls":["bzz-raw://aadd161d7e197b48e6be4198b0f4f81a10016b9904d024e0a361bf2d7f941475","dweb:/ipfs/QmYuGyPZCigmt8va11oAHXPTpHFyF3d7ARDNacyr2jsDfa"],"license":"UNLICENSED"},"src/LMSRStabilized.sol":{"keccak256":"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b","urls":["bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3","dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB"],"license":"UNLICENSED"},"src/NativeWrapper.sol":{"keccak256":"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579","urls":["bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238","dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB"],"license":"UNLICENSED"},"src/OwnableExternal.sol":{"keccak256":"0x0a0199368ad20a31e7169b3e56449bf022c9d680e0d487c118608a7f14cb7efb","urls":["bzz-raw://3348a063649e01acf9c6aa6b7ce2ecf62ace8c6f1467477de7d605996f08ec64","dweb:/ipfs/QmSoxb35FFsNCgXgWn91CupvjpGmyM31wcfxAVpVFFPecX"],"license":"MIT"},"src/OwnableInternal.sol":{"keccak256":"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581","urls":["bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca","dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE"],"license":"MIT"},"src/PartyPool.sol":{"keccak256":"0xaf921e5a5c32ee53fc1991d20fe030ec0a9572d0a8d112e717476ee4af0b8ab4","urls":["bzz-raw://b4bc13e889ec6fb214ac3538203328abede9e316bf617a7f7593b3b0c9ea40f0","dweb:/ipfs/QmWx12PuyFqpy9MyxqJkRvTGkzYAYHajCYps3htgwe3YrX"],"license":"UNLICENSED"},"src/PartyPoolBase.sol":{"keccak256":"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999","urls":["bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5","dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5"],"license":"UNLICENSED"},"src/PartyPoolHelpers.sol":{"keccak256":"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c","urls":["bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5","dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP"],"license":"UNLICENSED"},"src/PartyPoolMintImpl.sol":{"keccak256":"0xe9d9927cecd46a1f836b2c43e9d6184642b9e695c7462e5fb7c671a38aab7398","urls":["bzz-raw://8d821911d7982fc302929198539b27f72be100b91450c98d2e0081519f776499","dweb:/ipfs/QmRChx1DPD1gKXwfD1m6aQ7pgh1aX6CvYLNX41ufdJteaJ"],"license":"UNLICENSED"},"src/PartyPoolSwapImpl.sol":{"keccak256":"0x71ecbd6d0fb106031baed7e4c21694ef24f0112af7d975325b98b1b0463ba5b2","urls":["bzz-raw://64f8f8bae2f89ca495b9edacd012363b55e78a198f100650beb2b1238e8ef11f","dweb:/ipfs/QmVfihiw9TqncuEfZKx7c6WEHiGFfRQyhtfdTGzfN7emNY"],"license":"UNLICENSED"}},"version":1},"id":48} \ No newline at end of file diff --git a/deployment/11155111/v1/out/PartyPoolBalancedPair.sol/PartyPoolBalancedPair.json b/deployment/11155111/v1/out/PartyPoolBalancedPair.sol/PartyPoolBalancedPair.json index 354b666..d2df000 100644 --- a/deployment/11155111/v1/out/PartyPoolBalancedPair.sol/PartyPoolBalancedPair.json +++ b/deployment/11155111/v1/out/PartyPoolBalancedPair.sol/PartyPoolBalancedPair.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"owner_","type":"address","internalType":"address"},{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"},{"name":"tokens_","type":"address[]","internalType":"contract IERC20[]"},{"name":"kappa_","type":"int128","internalType":"int128"},{"name":"fees_","type":"uint256[]","internalType":"uint256[]"},{"name":"flashFeePpm_","type":"uint256","internalType":"uint256"},{"name":"protocolFeePpm_","type":"uint256","internalType":"uint256"},{"name":"protocolFeeAddress_","type":"address","internalType":"address"},{"name":"wrapperToken_","type":"address","internalType":"contract NativeWrapper"},{"name":"swapMintImpl_","type":"address","internalType":"contract PartyPoolSwapImpl"},{"name":"mintImpl_","type":"address","internalType":"contract PartyPoolMintImpl"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"LMSR","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct LMSRStabilized.State","components":[{"name":"kappa","type":"int128","internalType":"int128"},{"name":"qInternal","type":"int128[]","internalType":"int128[]"}]}],"stateMutability":"view"},{"type":"function","name":"allProtocolFeesOwed","inputs":[],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"allTokens","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"contract IERC20[]"}],"stateMutability":"view"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"lpAmount","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"unwrap","type":"bool","internalType":"bool"}],"outputs":[{"name":"withdrawAmounts","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"burnSwap","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"lpAmount","type":"uint256","internalType":"uint256"},{"name":"outputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"unwrap","type":"bool","internalType":"bool"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"outFee","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"collectProtocolFees","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"denominators","inputs":[],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"fee","inputs":[{"name":"i","type":"uint256","internalType":"uint256"},{"name":"j","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"fees","inputs":[],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"flashFeePpm","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"flashLoan","inputs":[{"name":"receiver","type":"address","internalType":"contract IERC3156FlashBorrower"},{"name":"tokenAddr","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"getToken","inputs":[{"name":"i","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"initialMint","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"lpTokens","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"lpMinted","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"kappa","inputs":[],"outputs":[{"name":"","type":"int128","internalType":"int128"}],"stateMutability":"view"},{"type":"function","name":"kill","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"killed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"lpTokenAmount","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"lpMinted","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"mintImpl","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract PartyPoolMintImpl"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"numTokens","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":"protocolFeeAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"protocolFeePpm","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setProtocolFeeAddress","inputs":[{"name":"feeAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"swap","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"selector","type":"bytes4","internalType":"bytes4"},{"name":"receiver","type":"address","internalType":"address"},{"name":"inputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"outputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"maxAmountIn","type":"uint256","internalType":"uint256"},{"name":"limitPrice","type":"int128","internalType":"int128"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"unwrap","type":"bool","internalType":"bool"}],"outputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"inFee","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"swapAmounts","inputs":[{"name":"inputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"outputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"maxAmountIn","type":"uint256","internalType":"uint256"},{"name":"limitPrice","type":"int128","internalType":"int128"}],"outputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"inFee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"swapMint","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"inputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"maxAmountIn","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountInUsed","type":"uint256","internalType":"uint256"},{"name":"lpMinted","type":"uint256","internalType":"uint256"},{"name":"inFee","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"swapMintImpl","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract PartyPoolSwapImpl"}],"stateMutability":"view"},{"type":"function","name":"swapToLimit","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"inputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"outputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"limitPrice","type":"int128","internalType":"int128"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"unwrap","type":"bool","internalType":"bool"}],"outputs":[{"name":"amountInUsed","type":"uint256","internalType":"uint256"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"inFee","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"wrapperToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract NativeWrapper"}],"stateMutability":"view"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Burn","inputs":[{"name":"payer","type":"address","indexed":false,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"amounts","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"lpBurned","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BurnSwap","inputs":[{"name":"payer","type":"address","indexed":true,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"tokenOut","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lpFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Flash","inputs":[{"name":"initiator","type":"address","indexed":true,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"contract IERC3156FlashBorrower"},{"name":"token","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lpFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Killed","inputs":[],"anonymous":false},{"type":"event","name":"Mint","inputs":[{"name":"payer","type":"address","indexed":false,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"amounts","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"lpMinted","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":"ProtocolFeesCollected","inputs":[],"anonymous":false},{"type":"event","name":"Swap","inputs":[{"name":"payer","type":"address","indexed":false,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"tokenIn","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"tokenOut","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lpFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SwapMint","inputs":[{"name":"payer","type":"address","indexed":true,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"tokenIn","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lpFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x610140604052346106ee576158fb8038038061001a81610a6a565b9283398101610180828203126106ee5761003382610a8f565b60208301516001600160401b0381116106ee5782610052918501610aa3565b60408401519091906001600160401b0381116106ee5783610074918601610aa3565b60608501519094906001600160401b0381116106ee5781019284601f850112156106ee578351956100ac6100a788610af4565b610a6a565b9460208689815201906020829960051b820101908882116106ee57602001915b818310610a4a57505050608083015180600f0b81036106ee5760a08401516001600160401b0381116106ee5784019680601f890112156106ee5787516101146100a782610af4565b986020808b848152019260051b8201019283116106ee57602001905b828210610a3a5750505060c08401519760e0850151926101536101008701610a8f565b610120870151979095906001600160a01b03891689036106ee57610140880151976001600160a01b03891689036106ee576101600151986001600160a01b038a168a036106ee5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00556080526001600160a01b03168015610a27575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a38051906001600160401b0382116106335760045490600182811c92168015610a1d575b60208310146109405781601f8493116109cf575b50602090601f8311600114610969575f9261095e575b50508160011b915f199060031b1c1916176004555b8051906001600160401b0382116106335760055490600182811c92168015610954575b60208310146109405781601f849311610904575b50602090601f831160011461089e575f92610893575b50508160011b915f199060031b1c1916176005555b60018751111561084e578651906001600160401b0382116106335768010000000000000000821161063357600b5482600b55808310610814575b50600b5f5260205f205f5b8381106107f7575050505060a05285518551036107be5761033a8651610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600654836006558084106107a2575b500160065f5260205f205f5b83811061078e57505050505f5b86518110156104185761271061039c8289610b49565b5110156103e1576103ad8188610b49565b51906006548110156103cd5760019160065f528160205f20015501610386565b634e487b7160e01b5f52603260045260245ffd5b60405162461bcd60e51b815260206004820152600f60248201526e506f6f6c3a20666565203e3d20312560881b6044820152606490fd5b50866127108110156107495760c05262061a8081101561070457801580156106f2575b156106ee5760e052601080546001600160a01b0319166001600160a01b039290921691909117905561012052610100528051905f5b8281106106a7578261048181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600d5483600d5580841061068b575b5001600d5f5260205f205f5b83811061067757846104d181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600f5483600f5580841061065b575b5001600f5f5260205f205f5b8381106106475761052085610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600c5483600c55808410610617575b500190600c5f5260205f20915f5b82811061060357604051614d9d9081610b5e8239608051818181611b4a01528181611d9b015281816120ee015261264c015260a051818181610f130152610f7f015260c0518181816113480152611733015260e0518181816105ac01528181610c550152818161105d0152818161136e015281816114be0152611c2401526101005181818161031701526105f70152610120518181816108050152610a720152f35b600190602083519301928186015501610561565b61062d90600c5f5284845f209182019101610b0b565b83610553565b634e487b7160e01b5f52604160045260245ffd5b600190602084519401938184015501610510565b61067190600f5f5284845f209182019101610b0b565b84610504565b6001906020845194019381840155016104c0565b6106a190600d5f5284845f209182019101610b0b565b846104b4565b60018101908181116106da576001600160a01b03906106c69084610b49565b51165f52600e6020528060405f2055610470565b634e487b7160e01b5f52601160045260245ffd5b5f80fd5b506001600160a01b038216151561043b565b60405162461bcd60e51b815260206004820152601960248201527f506f6f6c3a2070726f746f636f6c20666565203e3d20343025000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601560248201527f506f6f6c3a20666c61736820666565203e3d20312500000000000000000000006044820152606490fd5b600190602084519401938184015501610379565b6107b89060065f5284845f209182019101610b0b565b5f61036d565b60405162461bcd60e51b81526020600482015260116024820152700a0deded87440cccacae640d8cadccee8d607b1b6044820152606490fd5b82516001600160a01b031681830155602090920191600101610319565b600b5f52610848907f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9908101908401610b0b565b5f61030e565b60405162461bcd60e51b815260206004820152601360248201527f506f6f6c3a206e656564203e31206173736574000000000000000000000000006044820152606490fd5b015190505f806102bf565b60055f9081528281209350601f198516905b8181106108ec57509084600195949392106108d4575b505050811b016005556102d4565b01515f1960f88460031b161c191690555f80806108c6565b929360206001819287860151815501950193016108b0565b6109309060055f5260205f20601f850160051c81019160208610610936575b601f0160051c0190610b0b565b5f6102a9565b9091508190610923565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610295565b015190505f8061025d565b60045f9081528281209350601f198516905b8181106109b7575090846001959493921061099f575b505050811b01600455610272565b01515f1960f88460031b161c191690555f8080610991565b9293602060018192878601518155019501930161097b565b60045f52610a17907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f850160051c8101916020861061093657601f0160051c0190610b0b565b5f610247565b91607f1691610233565b631e4fbdf760e01b5f525f60045260245ffd5b8151815260209182019101610130565b82516001600160a01b03811681036106ee578152602092830192016100cc565b6040519190601f01601f191682016001600160401b0381118382101761063357604052565b51906001600160a01b03821682036106ee57565b81601f820112156106ee578051906001600160401b03821161063357610ad2601f8301601f1916602001610a6a565b92828452602083830101116106ee57815f9260208093018386015e8301015290565b6001600160401b0381116106335760051b60200190565b818110610b16575050565b5f8155600101610b0b565b90610b2e6100a783610af4565b8281528092610b3f601f1991610af4565b0190602036910137565b80518210156103cd5760209160051b01019056fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c908163017504b61461295057508063017cf661146128be57806306fdde0314612775578063095ea7b3146126705780630d246214146126025780630eeee627146119a457806318160ddd146119685780631f3a0e411461192757806323b872dd14611790578063313ce5671461175657806331596a6a146116fd57806341c0e1b514611667578063476e44b614611519578063491e7998146113f15780635cffe9de146112115780636863f5bc146110805780636b4082d1146110275780636b7b911214610fa55780636bba3f2f14610f495780636d8d0ff314610e8e5780636ff97f1d14610d8e57806370a0823114610d2b578063715018a614610c8f57806379a68d5314610b6b5780638da5cb5b14610b1a5780638e499bcf14610ade578063939f5ea414610a965780639517606614610a2757806395d89b41146108cd5780639af1d35a1461082e578063a1af5b9a14610765578063a9059cbb14610715578063b3f1c93d14610648578063cb717f3a146104f3578063cce516b7146104a1578063d516b8c614610416578063dd62ed3e1461039d578063e4b50cb81461033b578063f0d1ae4f146102cc5763f2fde38b0361000f57346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610228612a5f565b6102306130bd565b16801561029d5773ffffffffffffffffffffffffffffffffffffffff8254827fffffffffffffffffffffffff00000000000000000000000000000000000000008216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b6024827f1e4fbdf700000000000000000000000000000000000000000000000000000000815280600452fd5b80fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff61038d600435612b2f565b90549060031b1c16604051908152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff60406103ec612a5f565b92826103f6612a82565b9416815260026020522091165f52602052602060405f2054604051908152f35b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043590602435916064359182600f0b83036102c95761049d61047985858561046f83826131e2565b9260443591612dca565b92505050604093919351938493846040919493926060820195825260208201520152565b0390f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff60105416604051908152f35b5060a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761049d61062b61061c61052f612a5f565b610537612a82565b60443573ffffffffffffffffffffffffffffffffffffffff61055882613109565b9281604051957f3dd3c8050000000000000000000000000000000000000000000000000000000060208801521660248601521660448401526064830152606435608483015260843560a483015260c48201527f000000000000000000000000000000000000000000000000000000000000000060e482015260e481526105e061010482612aee565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016613129565b60208082518301019101612d5e565b604080519384526020840192909252908201529081906060820190565b5060807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f161067e612a5f565b73ffffffffffffffffffffffffffffffffffffffff61069b612a82565b81604051937fb3f1c93d00000000000000000000000000000000000000000000000000000000602086015216602484015216604482015260443560648201526064356084820152608481526105e060a482612aee565b602081519181808201938492010103126107115760209051604051908152f35b5f80fd5b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761075a610750612a5f565b6024359033612f98565b602060405160018152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761082a73ffffffffffffffffffffffffffffffffffffffff60105416604051907f2a54db010000000000000000000000000000000000000000000000000000000060208301526024820152602481526107ee604482612aee565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016613129565b5080f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760405180916020600654928381520191600682527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f915b8181106108b75761049d856108ab81870382612aee565b604051918291826129de565b8254845260209093019260019283019201610894565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576040519080600554908160011c91600181168015610a1d575b6020841081146109f0578386529081156109ab575060011461094e575b61049d8461094281860382612aee565b60405191829182612a17565b600581527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0939250905b8082106109915750909150810160200161094282610932565b919260018160209254838588010152019101909291610978565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208087019190915292151560051b850190920192506109429150839050610932565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b92607f1692610915565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020610ad66024356004356131e2565b604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600b54604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b5060e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610b9e612a5f565b90610ba7612a82565b906044356064356084359182600f0b809303610c8b5760c435938415158095036102c95761049d61062b61061c89898989898973ffffffffffffffffffffffffffffffffffffffff610bf98383612d79565b9581604051987f8a3d858d0000000000000000000000000000000000000000000000000000000060208b01521660248901521660448701526064860152608485015260a484015260a43560c484015260e48301526101048201527f000000000000000000000000000000000000000000000000000000000000000061012482015261012481526107ee61014482612aee565b8380fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610cc66130bd565b8073ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604060209173ffffffffffffffffffffffffffffffffffffffff610d7d612a5f565b168152600183522054604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604051806020600b5491828152018091600b85527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db990855b818110610e625750505082610e0b910383612aee565b604051928392602084019060208552518091526040840192915b818110610e33575050500390f35b825173ffffffffffffffffffffffffffffffffffffffff16845285945060209384019390920191600101610e25565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610df5565b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f1610ec4612a5f565b73ffffffffffffffffffffffffffffffffffffffff604051917fc5eabfb900000000000000000000000000000000000000000000000000000000602084015216602482015260243560448201527f0000000000000000000000000000000000000000000000000000000000000000600f0b6064820152606481526105e0608482612aee565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f0000000000000000000000000000000000000000000000000000000000000000600f0b8152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610ff2612a5f565b610ffa6130bd565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000601054161760105580f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c95760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576110b8612a5f565b6110c0612a82565b90608435801515809103610c8b5773ffffffffffffffffffffffffffffffffffffffff6111429381604051947f6863f5bc0000000000000000000000000000000000000000000000000000000060208701521660248501521660448301526044356064830152606435608483015260a482015260a481526105e060c482612aee565b805181019060208181840193031261120d5760208101519067ffffffffffffffff8211610c8b57019181603f840112156102c95760208301519267ffffffffffffffff84116111e0578360051b91604051946111a16020850187612aee565b855260208080870194840101019384116102c95750604001905b8282106111d0576040518061049d86826129de565b81518152602091820191016111bb565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8280fd5b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043573ffffffffffffffffffffffffffffffffffffffff81168091036113e95761126a612a82565b60643567ffffffffffffffff8111610c8b5736602382011215610c8b5780600401359067ffffffffffffffff82116113ed5736602483830101116113ed576113c3937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f846107ee9560246101049673ffffffffffffffffffffffffffffffffffffffff6040519a8b987fe49cd4750000000000000000000000000000000000000000000000000000000060208b0152848a0152166044880152604435606488015260c060848801528260e48801520186860137888582860101527f000000000000000000000000000000000000000000000000000000000000000060a48501527f000000000000000000000000000000000000000000000000000000000000000060c48501520116810103017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612aee565b6020818051810103126113e957602001518015158091036113e957602090604051908152f35b5080fd5b8480fd5b50346102c95760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957611429612a5f565b611431612a82565b906064359160a4358015158091036113ed578373ffffffffffffffffffffffffffffffffffffffff6114656114f496613109565b9381604051967f8d01fa440000000000000000000000000000000000000000000000000000000060208901521660248701521660448501526044356064850152608484015260843560a484015260c483015260e48201527f000000000000000000000000000000000000000000000000000000000000000061010482015261010481526105e061012482612aee565b6040818051810103126113e95780604060208193015191015182519182526020820152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576060602060405161155881612aa5565b83815201526040519061156a82612aa5565b600954600f0b825260405191600a548084528360208101600a8552602085209285905b80600183011061163b576115b6945491818110611627575b10611616575b509493940383612aee565b6020810191825260405192839260208452606084019251600f0b6020850152519160408085015282518091526020608085019301915b8181106115fa575050500390f35b8251600f0b8452859450602093840193909201916001016115ec565b60801d600f0b81526020015f6115ab565b92602060019184600f0b81520193016115a5565b9160029193506040600191865480600f0b825260801d600f0b602082015201940192018692939161158d565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761169e6130bd565b60085460ff8116156116ae575080f35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001176008557f0f8eeedbc400fd6686703559f58d1e6143fdaed533f19a86c93d67a2fe4fb3318180a180f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405160128152f35b50346102c95760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576117c8612a5f565b6117d0612a82565b6044359173ffffffffffffffffffffffffffffffffffffffff811680855260026020526040852073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f2054907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821061184d575b505061075a9350612f98565b8482106118f35780156118c757331561189b578560409161075a975260026020522073ffffffffffffffffffffffffffffffffffffffff33165f526020528360405f20910390555f80611841565b6024867f94280d6200000000000000000000000000000000000000000000000000000000815280600452fd5b6024867fe602df0500000000000000000000000000000000000000000000000000000000815280600452fd5b60648686847ffb8f41b200000000000000000000000000000000000000000000000000000000835233600452602452604452fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060ff600854166040519015158152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600354604051908152f35b506101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576119d8612a5f565b906024357fffffffff00000000000000000000000000000000000000000000000000000000811691828203610711576044359273ffffffffffffffffffffffffffffffffffffffff84169283850361071157606435936084359660c43580600f0b810361071157610104359060e43582151583036107115760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146125da5760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005560ff6008541661257c578015908115612571575b501561251357611ad090611ac58b8a612d79565b9060a4358c8b612dca565b9b859d9596949e9293915073ffffffffffffffffffffffffffffffffffffffff611af982612b2f565b90549060031b1c169973ffffffffffffffffffffffffffffffffffffffff611b2085612b2f565b90549060031b1c169b155f146123665750878a73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016988982148061235c575b1561228557505050863b15610711575f8e976004604051809a81937fd0e30db00000000000000000000000000000000000000000000000000000000083525af196871561227a578f908f908f99612263575b50611bfd611c1f915b611bf8611bdb86612b74565b90549060031b1c611beb87612b8c565b90549060031b1c90612c0e565b612c0e565b91611c1a611c0a87612b74565b90549060031b1c611beb88612b8c565b612bd4565b908d987f0000000000000000000000000000000000000000000000000000000000000000908115158061225a575b6121d1575b5050611cf091611cd2611c93611ce793611c7d611c6e88612b8c565b90549060031b1c821015612c65565b611c8687612b8c565b90549060031b1c90612bd4565b611c9c86612b74565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b611cde611c6e87612b8c565b611c8686612b8c565b611c9c85612b74565b8b82600f0b1315612173578b84600f0b131561211557611d7993611d6182611d39611d33611d3996611d24611d3397612f37565b90549060031b1c600f0b61330c565b91612f37565b9091906fffffffffffffffffffffffffffffffff83549160031b928116831b921b1916179055565b611d6a84612f37565b90549060031b1c600f0b613349565b806120d6575b156120105773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b1561200c5787809160248d60405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af18015612001579188918c93611fe3575b5081809381925af13d15611fde573d67ffffffffffffffff8111611fb15760405190611e5e60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160183612aee565b81528760203d92013e5b15611f53577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a0915b611e9d818a612bd4565b73ffffffffffffffffffffffffffffffffffffffff604051931683528a60208401528b604084015260608301526080820152a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015611f22575b50505061049d90604051938493846040919493926060820195825260208201520152565b8280809381938290611f4a575b3390f115611f3e578080611efe565b604051903d90823e3d90fd5b506108fc611f2f565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b611e68565b611ff09193508290612aee565b611ffd57868a915f611e0a565b8680fd5b6040513d8a823e3d90fd5b8780fd5b506040517fa9059cbb0000000000000000000000000000000000000000000000000000000087528360045289602452602087604481808a5af19060018851148216156120b5575b60405215612089577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a091611e93565b602486867f5274afe7000000000000000000000000000000000000000000000000000000008252600452fd5b9060018115166120cd57863b15153d15161690612057565b503d87823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168614611d7f565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a20616d6f756e744f7574203c3d20300000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4d53523a20616d6f756e74496e203c3d2030000000000000000000000000006044820152fd5b611ce7929a50611c93620f42406121ef611cf09694611cd294612c1b565b049b8c612202575b93505050918f611c52565b6122558d6122216122128a612b8c565b91909283548360031b1c612c0e565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b6121f7565b50801515611c4d565b612270919e505f90612aee565b5f9c611bfd611bc6565b6040513d5f823e3d90fd5b60209293949596979899505f80809360649373ffffffffffffffffffffffffffffffffffffffff604051987f23b872dd00000000000000000000000000000000000000000000000000000000855216600452306024526044525af19060015f511482161561233b575b6040525f6060521561230f57908b95949392918e611c1f8f611bfd90611bcf565b887f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b906001811516612353578a3b15153d151616906122ee565b503d5f823e3d90fd5b5080341015611b74565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529197506020826024818e5afa91821561227a578f905f936124db575b50602492916123df916040519160208301528d858301526044820152604481526123d9606482612aee565b8a61328c565b5060208b604051938480927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa801561227a578f925f916124a2575b509061242f91612bd4565b03612444578b958e611c1f8f611bfd90611bcf565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e742066756e647300000000000000000000000000006044820152fd5b919250506020813d6020116124d3575b816124bf60209383612aee565b8101031261071157518e919061242f612424565b3d91506124b2565b9250506020823d60201161250b575b816124f760209383612aee565b81010312610711579051908e6123df6123ae565b3d91506124ea565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f737761703a20646561646c696e652065786365656465640000000000000000006044820152fd5b90504211155f611ab1565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346107115760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576126a7612a5f565b6024359033156127495773ffffffffffffffffffffffffffffffffffffffff1690811561271d57335f52600260205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576040515f6004548060011c906001811680156128b4575b6020831081146128875782855290811561284557506001146127e7575b61049d8361094281850382612aee565b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b80821061282b575090915081016020016109426127d7565b919260018160209254838588010152019101909291612813565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b8401909101915061094290506127d7565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916127ba565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157604051806020600d54918281520190600d5f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5905f5b81811061293a5761049d856108ab81870382612aee565b8254845260209093019260019283019201612923565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157600c548082526020820190600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7905f5b8181106129c85761049d856108ab81870382612aee565b82548452602090930192600192830192016129b1565b60206040818301928281528451809452019201905f5b818110612a015750505090565b82518452602093840193909201916001016129f4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6040810190811067ffffffffffffffff821117612ac157604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612ac157604052565b600b54811015612b4757600b5f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600f54811015612b4757600f5f5260205f2001905f90565b600c54811015612b4757600c5f5260205f2001905f90565b600d54811015612b4757600d5f5260205f2001905f90565b600654811015612b475760065f5260205f2001905f90565b91908203918211612be157565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b91908201809211612be157565b81810292918115918404141715612be157565b8115612c38570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b15612c6c57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f62616c616e6365203c2070726f746f636f6c206f7765640000000000000000006044820152fd5b90604051918281549182825260208201905f5260205f20925f905b806001830110612d3257612d0b945491818110612d1e575b10612d0d575b500383612aee565b565b60801d600f0b81526020015f612d03565b92602060019184600f0b8152019301612cfd565b9160029193506040600191865480600f0b825260801d600f0b6020820152019401920185929391612ce5565b90816060910312610711578051916040602083015192015190565b9190826103e8026103e881048403612be15781612d9591612c0e565b90815f52600760205260405f2054938415612daf57505050565b612dba9294506131e2565b915f5260076020528160405f2055565b92949394919091612df6612dde87846131ff565b9050612de986612ba4565b90549060031b1c9061339f565b905f82600f0b1315612ed957612e0d9184866135c9565b919092612e2c8394612e1f8197612ba4565b90549060031b1c90613221565b925f92849880612eb8575b508811612e5a57612e4a612e5792612ba4565b90549060031b1c90613aa0565b94565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f737761703a207472616e736665722065786365656473206d61780000000000006044820152fd5b909850612ec791935084613253565b91612ed28385612c0e565b975f612e37565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761703a20696e70757420746f6f20736d616c6c20616674657220666565006044820152fd5b90600a54821015612b4757600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b9190918054831015612b47575f52601060205f208360011c019260041b1690565b73ffffffffffffffffffffffffffffffffffffffff169081156130915773ffffffffffffffffffffffffffffffffffffffff1691821561306557815f52600160205260405f205481811061303357817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f52600184520360405f2055845f526001825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff5f541633036130dd57565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b600654156131245761311a90612bbc565b90549060031b1c90565b505f90565b905f8091602081519101845af480806131cf575b1561314f57505061314c613386565b90565b156131965773ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b3d156131a7576040513d5f823e3d90fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b503d15158061313d5750813b151561313d565b90611beb6131f261314c93612bbc565b90549060031b1c91612bbc565b9190801561321b5761321461314c9184613253565b8093612bd4565b505f9190565b61323561322e8383613aa0565b928361339f565b90600f0b90600f0b126132455790565b60018101809111612be15790565b9080156132865761326391612c1b565b620f4240810190818111612be157620f423f01908111612be157620f4240900490565b50505f90565b905f809160208151910182855af180806131cf571561314f57505061314c613386565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2575b1561071157600f0b90565b506f7fffffffffffffffffffffffffffffff8113156132e7565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b604051903d82523d5f602084013e60203d830101604052565b81156107115777ffffffffffffffffffffffffffffffffffffffffffffffff811161341757906133d19160401b612c2e565b6fffffffffffffffffffffffffffffffff8111610711576fffffffffffffffffffffffffffffffff166f7fffffffffffffffffffffffffffffff811161071157600f0b90565b60c09181831c80936401000000008210156135bc575b600282620100006134ba9410156135b0575b6101008110156135a4575b6010811015613598575b600481101561358d575b1015613585575b8360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b612c2e565b926fffffffffffffffffffffffffffffffff8411610711578160801c8402906fffffffffffffffffffffffffffffffff8316850290809460401b9082821061355b575b5003928160801b91828510613532575b60801c036135275761351f9203612c2e565b905b016133d1565b505050600190613521565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019061350d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f6134fd565b600101613465565b91810191811c61345e565b6004928301921c613454565b6008928301921c61344a565b6010928301921c61343f565b505060e082811c9061342d565b9193929093600a5480841080613a97575b15613a3957600203613a21576135f86135f3600a612cca565b613f94565b946136075f87600f0b13613afb565b613617600954600f0b9687613c82565b5f81600f0b1315613a0e5761362b81613b60565b6136678161366261363d89600a612f77565b90549060031b1c600f0b61365287600a612f77565b90549060031b1c600f0b90613349565b613c82565b9085600f0b5f81136137d8575b505f600f83900b126137ca57815b67028f5c28f5c28f5c90600f0b136137b55761369e9085613c82565b80600f0b915f83131561379f57678000000000000000831361379f57906136f961371a9493926136f36136ed671999999999999999946136e76136e18280613c82565b946132af565b90613c82565b91613bb0565b90613349565b916137048380613c82565b91600f0b1261377657906136f36136e792613bb0565b9384600f0b965f8813156137565761373383600a612f77565b90549060031b1c600f0b881215613756575f849698126137565750505050509190565b90919293945061377295965061376c600a612cca565b90613d08565b9091565b613799613793836136f361378d6136e79686613c82565b94613bb0565b91613bf6565b9061330c565b50505050909192613772949561376c600a612cca565b505050909192613772949561376c600a612cca565b6137d382613cc2565b613682565b6137e58380979397613c82565b680600000000000000006138096137fc8684613c82565b926137996136ed886132af565b9160401b60170b05907fffffffffffffffffffffffffffffffff80000000000000000000000000000000821215806139f4575b156107115761384e91600f0b9061330c565b9081600f0b121561396f576138847fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009188613c3c565b600f0b017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613955575b1561071157600f0b5f811261394757805b671999999999999999600f0b90600f0b1361393057806137996137936138ec836138fa95613c82565b926136f361378d8286613c82565b5f81600f0b13156139305761390f9084613c82565b9080600f0b82600f0b125f146139285750935b5f613674565b949050613922565b5094959293505050613772949561376c600a612cca565b61395081613cc2565b6138c3565b506f7fffffffffffffffffffffffffffffff8113156138b2565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4c4d53523a206c696d69745072696365203c3d2063757272656e74207072696360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152608490fd5b506f7fffffffffffffffffffffffffffffff82131561383c565b50909192613772949561376c600a612cca565b9091936137729394600954600f0b61376c600a612cca565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4c4d53523a2069647800000000000000000000000000000000000000000000006044820152fd5b508086106135da565b811561328657600f0b5f8112610711576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116107115760401b81198111610711570190565b15613b0257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b600f0b801561071157700100000000000000000000000000000000057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b680200000000000000009060401b60170b057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b680300000000000000009060401b60170b057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b90600f0b9081156107115760401b60170b057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081600f0b14610711575f03600f0b90565b8051821015612b475760209160051b010190565b95949093613d4c90939293613d69613d64613d36839a613d278a613f94565b906136625f83600f0b13613afb565b96613662613d4389613b60565b9586928b613cf4565b51600f0b613d5a898c613cf4565b51600f0b90613349565b613fc9565b9280600f0b5f8113613ed6575b505090613d8291613c82565b6820000000000000000081600f0b13613e5257613d64613da191613cc2565b600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613e38575b1561071157613df491613def91600f0b90613c82565b6132af565b925f84600f0b1315613e245750506136e7613e0e92614026565b905f82600f0b1315613e1c57565b5f9250829150565b909150613e319250613cf4565b51600f0b90565b506f7fffffffffffffffffffffffffffffff811315613dd9565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4c4d53523a20612f6220746f6f206c617267652028776f756c64206f7665726660448201527f6c6f7720657870290000000000000000000000000000000000000000000000006064820152fd5b84600f9a939a0b121561396f5783613eed91613c3c565b5f81600f0b1315613f3657613f04613f0a91614026565b86613c82565b9780600f0b89600f0b125f14613f2a575050613d8290875b90915f613d76565b613d8292919850613f22565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4d53523a20726174696f3c3d300000000000000000000000000000000000006044820152fd5b5f90815b8151831015613fc357613fbb600191613fb18585613cf4565b51600f0b9061330c565b920191613f98565b91505090565b600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000811261312457700171547652b82fe1777d0ffda0d23a7d1261314c910260801d600f0b614153565b600f0b5f811315610711575f908068010000000000000000821215614146575b80640100000000600292121561413a575b6201000081121561412e575b610100811215614122575b6010811215614116575b600481121561410b575b1215614101575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f83136140e557506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d90565b8002908160ff1c9182607f011c918302019160011d91906140c0565b9060010190614089565b92810192811d614082565b6004938401931d614078565b6008938401931d61406e565b6010938401931d614063565b6020938401931d614057565b506040915080821d614046565b80600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc000000000000000008112613286576f80000000000000000000000000000000915f6780000000000000008216600f0b13614d4f575b5f6740000000000000008216600f0b13614d32575b5f6720000000000000008216600f0b13614d15575b5f6710000000000000008216600f0b13614cf8575b5f6708000000000000008216600f0b13614cdb575b5f6704000000000000008216600f0b13614cbe575b5f6702000000000000008216600f0b13614ca1575b5f6701000000000000008216600f0b13614c84575b5f66800000000000008216600f0b13614c67575b5f66400000000000008216600f0b13614c4a575b5f66200000000000008216600f0b13614c2d575b5f66100000000000008216600f0b13614c10575b5f66080000000000008216600f0b13614bf3575b5f66040000000000008216600f0b13614bd6575b5f66020000000000008216600f0b13614bb9575b5f66010000000000008216600f0b13614b9c575b5f658000000000008216600f0b13614b7f575b5f654000000000008216600f0b13614b62575b5f652000000000008216600f0b13614b45575b5f651000000000008216600f0b13614b28575b5f650800000000008216600f0b13614b0b575b5f650400000000008216600f0b13614aee575b5f650200000000008216600f0b13614ad1575b5f650100000000008216600f0b13614ab4575b5f6480000000008216600f0b13614a97575b5f6440000000008216600f0b13614a7a575b5f6420000000008216600f0b13614a5d575b5f6410000000008216600f0b13614a40575b5f6408000000008216600f0b13614a23575b5f6404000000008216600f0b13614a06575b5f6402000000008216600f0b136149e9575b5f6401000000008216600f0b136149cc575b5f63800000008216600f0b136149af575b5f63400000008216600f0b13614992575b5f63200000008216600f0b13614975575b5f63100000008216600f0b13614958575b5f63080000008216600f0b1361493b575b5f63040000008216600f0b1361491e575b5f63020000008216600f0b13614901575b5f63010000008216600f0b136148e4575b5f628000008216600f0b136148c7575b5f624000008216600f0b136148aa575b5f622000008216600f0b1361488d575b5f621000008216600f0b13614870575b5f620800008216600f0b13614853575b5f620400008216600f0b13614836575b5f620200008216600f0b13614819575b5f620100008216600f0b136147fc575b5f6180008216600f0b136147df575b5f6140008216600f0b136147c2575b5f6120008216600f0b136147a5575b5f6110008216600f0b13614788575b5f6108008216600f0b1361476b575b5f6104008216600f0b1361474e575b5f6102008216600f0b13614731575b5f6101008216600f0b13614714575b5f60808216600f0b136146f7575b5f60408216600f0b136146da575b5f60208216600f0b136146bd575b5f60108216600f0b136146a0575b5f60088216600f0b13614683575b5f60048216600f0b13614666575b5f60028216600f0b13614648575b60015f9116600f0b1361462b575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161071157600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c90614601565b7001000000000000000162e42fefa39ef35890920260801c916145f3565b9170010000000000000002c5c85fdf473de6b20260801c916145e5565b91700100000000000000058b90bfbe8e7bcd6d0260801c916145d7565b917001000000000000000b17217f7d1cf79afa0260801c916145c9565b91700100000000000000162e42fefa39ef366f0260801c916145bb565b917001000000000000002c5c85fdf473de6eca0260801c916145ad565b9170010000000000000058b90bfbe8e7bce5440260801c9161459f565b91700100000000000000b17217f7d1cf79e9490260801c91614591565b9170010000000000000162e42fefa39ef44d910260801c91614582565b91700100000000000002c5c85fdf473dea871f0260801c91614573565b917001000000000000058b90bfbe8e7bdcbe2e0260801c91614564565b9170010000000000000b17217f7d1cf7d83c1a0260801c91614555565b917001000000000000162e42fefa39f02b772c0260801c91614546565b9170010000000000002c5c85fdf473e242ea380260801c91614537565b91700100000000000058b90bfbe8e7cc35c3f00260801c91614528565b917001000000000000b17217f7d1cfb72b45e10260801c91614519565b91700100000000000162e42fefa39fe95583c20260801c91614509565b917001000000000002c5c85fdf4741bea6e77e0260801c916144f9565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c916144e9565b91700100000000000b17217f7d1d351a389d400260801c916144d9565b9170010000000000162e42fefa3ae53369388c0260801c916144c9565b91700100000000002c5c85fdf477b662b269450260801c916144b9565b917001000000000058b90bfbe8f71cb4e4b33d0260801c916144a9565b9170010000000000b17217f7d20cf927c8e94c0260801c91614499565b917001000000000162e42fefa494f1478fde050260801c91614488565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c91614477565b91700100000000058b90bfbe9ddbac5e109cce0260801c91614466565b917001000000000b17217f7d5a7716bba4a9ae0260801c91614455565b91700100000000162e42fefb2fed257559bdaa0260801c91614444565b917001000000002c5c85fdf84bd62ae30a74cc0260801c91614433565b9170010000000058b90bfbf8479bd5a81b51ad0260801c91614422565b91700100000000b17217f80f4ef5aadda455540260801c91614411565b9170010000000162e42ff0999ce3541b9fffcf0260801c916143ff565b91700100000002c5c85fe31f35a6a30da1be500260801c916143ed565b917001000000058b90bfcdee5acd3c1cedc8230260801c916143db565b9170010000000b17217fba9c739aa5819f44f90260801c916143c9565b917001000000162e42fff037df38aa2b219f060260801c916143b7565b9170010000002c5c8601cc6b9e94213c72737a0260801c916143a5565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91614393565b917001000000b1721835514b86e6d96efd1bfe0260801c91614381565b91700100000162e430e5a18f6119e3c02282a50260801c9161436e565b917001000002c5c863b73f016468f6bac5ca2b0260801c9161435b565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91614348565b91700100000b1721bcfc99d9f890ea069117630260801c91614335565b9170010000162e43f4f831060e02d839a9d16d0260801c91614322565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c9161430f565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c916142fc565b9170010000b17255775c040618bf4a4ade83fc0260801c916142e9565b917001000162e525ee054754457d59952920260260801c916142d5565b9170010002c5cc37da9491d0985c348c68e7b30260801c916142c1565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c916142ad565b917001000b175effdc76ba38e31671ca9397250260801c91614299565b91700100162f3904051fa128bca9c55c31e5df0260801c91614285565b917001002c605e2e8cec506d21bfc89a23a00f0260801c91614271565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c9161425d565b91700100b1afa5abcbed6129ab13ec11dc95430260801c91614249565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c91614234565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c9161421f565b917001059b0d31585743ae7c548eb68ca417fd0260801c9161420a565b9170010b5586cf9890f6298b92b71842a983630260801c916141f5565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c916141e0565b917001306fe0a31b7152de8d5a46305c85edec0260801c916141cb565b6fb504f333f9de6484597d89b3754abe9f92506141b656fea2646970667358221220e520796464cdc8822a564990f4be3efe6802bdb608714268e1fd795e29751cac64736f6c634300081e0033","sourceMap":"493:997:50:-:0;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;493:997:50;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;493:997:50;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;493:997:50;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;493:997:50;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;493:997:50;;;;;;;;;;;-1:-1:-1;;;;;493:997:50;;;;;;;;;;-1:-1:-1;;;;;493:997:50;;;;;;;1505:66:31;493:997:50;;1149:24:51;-1:-1:-1;;;;;493:997:50;1018:26:45;;1014:95;;-1:-1:-1;493:997:50;;-1:-1:-1;;;;;;493:997:50;;;;;;-1:-1:-1;;;;;493:997:50;;1104:49:46;;-1:-1:-1;1104:49:46;493:997:50;;;-1:-1:-1;;;;;493:997:50;;;;882:13:35;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;493:997:50;;;;;;;;;;;;;;;;;;;882:13:35;493:997:50;;;;;-1:-1:-1;;;;;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;6675:18:49;493:997:50;;;;;;-1:-1:-1;;;;;493:997:50;;;;;;;;;6727:17:49;493:997:50;;6727:17:49;493:997:50;;;;;;;;6727:17:49;-1:-1:-1;493:997:50;;-1:-1:-1;493:997:50;-1:-1:-1;493:997:50;;;;;;6754:14:49;;;;493:997:50;6754:14:49;493:997:50;;;;6786:30:49;493:997:50;;6898:27:49;493:997:50;;6898:27:49;:::i;:::-;493:997:50;;;-1:-1:-1;;;;;493:997:50;;;;;;;;;;;6890:35:49;493:997:50;;6890:35:49;493:997:50;;;;;;;;;6890:35:49;-1:-1:-1;493:997:50;;-1:-1:-1;493:997:50;-1:-1:-1;493:997:50;;;;;;6940:13:49;;;;-1:-1:-1;6973:3:49;493:997:50;;6955:16:49;;;;;7045:6;7034:8;;;;:::i;:::-;493:997:50;7034:17:49;493:997:50;;;7096:8:49;;;;:::i;:::-;493:997:50;;6890:35:49;493:997:50;;;;;;;;6890:35:49;-1:-1:-1;493:997:50;;;-1:-1:-1;493:997:50;;;;6940:13:49;;493:997:50;;;;-1:-1:-1;493:997:50;;882:13:35;493:997:50;;-1:-1:-1;493:997:50;;;;-1:-1:-1;;;493:997:50;;;882:13:35;493:997:50;;;;;;;;-1:-1:-1;;;493:997:50;;;;;;;6955:16:49;;;7045:6;7132:21;;493:997:50;;;;7189:28:49;7253:7;7235:25;;493:997:50;;;7398:20:49;;:57;;;;6935:180;493:997:50;;;;7466:34:49;7510:40;493:997:50;;-1:-1:-1;;;;;;493:997:50;-1:-1:-1;;;;;493:997:50;;;;;;;;;;;7560:21:49;493:997:50;7591:21:49;493:997:50;;;-1:-1:-1;7730:5:49;;;;;;7955:16;;;;:::i;:::-;493:997:50;;;-1:-1:-1;;;;;493:997:50;;;;;;;;;;;7946:25:49;493:997:50;;7946:25:49;493:997:50;;;;;;7713:126:49;493:997:50;;7946:25:49;-1:-1:-1;493:997:50;;-1:-1:-1;493:997:50;-1:-1:-1;493:997:50;;;;;;8061:16:49;;;;:::i;:::-;493:997:50;;;-1:-1:-1;;;;;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;493:997:50;;-1:-1:-1;493:997:50;-1:-1:-1;493:997:50;;;;;;8107:16:49;;;:::i;:::-;493:997:50;;;-1:-1:-1;;;;;493:997:50;;;;;;;;;;;8087:36:49;493:997:50;;8087:36:49;493:997:50;;;;;;;;;;8087:36:49;-1:-1:-1;493:997:50;;-1:-1:-1;493:997:50;;-1:-1:-1;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8087:36:49;-1:-1:-1;493:997:50;;;-1:-1:-1;493:997:50;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;493:997:50;;882:13:35;493:997:50;;-1:-1:-1;493:997:50;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;493:997:50;;;-1:-1:-1;493:997:50;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7946:25:49;-1:-1:-1;493:997:50;;;-1:-1:-1;493:997:50;;;;;;;:::i;:::-;;;;7718:10:49;493:997:50;;;;;;;;;-1:-1:-1;;;;;493:997:50;7780:10:49;;;;:::i;:::-;493:997:50;;-1:-1:-1;493:997:50;7752:27:49;493:997:50;;;;-1:-1:-1;493:997:50;;7718:10:49;;493:997:50;;;;-1:-1:-1;493:997:50;;882:13:35;493:997:50;;-1:-1:-1;493:997:50;;-1:-1:-1;493:997:50;;7398:57:49;-1:-1:-1;;;;;;493:997:50;;7422:33:49;;7398:57;;493:997:50;;;-1:-1:-1;;;493:997:50;;;882:13:35;493:997:50;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;493:997:50;;;882:13:35;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6890:35:49;-1:-1:-1;493:997:50;;;-1:-1:-1;493:997:50;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;493:997:50;;;882:13:35;493:997:50;;;;;;;;-1:-1:-1;;;493:997:50;;;;;;;;;;-1:-1:-1;;;;;493:997:50;;;;;;;;;;;;;;;6727:17:49;-1:-1:-1;493:997:50;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;493:997:50;;;882:13:35;493:997:50;;;;;;;;;;;;;;;;;;;;-1:-1:-1;493:997:50;;;;;;-1:-1:-1;493:997:50;;;;;;;-1:-1:-1;;;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;493:997:50;;-1:-1:-1;493:997:50;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;493:997:50;;;;;;;;-1:-1:-1;493:997:50;;882:13:35;493:997:50;;-1:-1:-1;493:997:50;;;;;;;;;;;;-1:-1:-1;493:997:50;;;;;882:13:35;-1:-1:-1;493:997:50;;;;;;;-1:-1:-1;;;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;;;882:13:35;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;882:13:35;-1:-1:-1;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;1014:95:45;1067:31;;;-1:-1:-1;1067:31:45;-1:-1:-1;1067:31:45;493:997:50;;-1:-1:-1;1067:31:45;493:997:50;;;;;;;;;;;;;;;;-1:-1:-1;;;;;493:997:50;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;493:997:50;;;-1:-1:-1;;;;;493:997:50;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;493:997:50;;;;;;:::o;:::-;;;;;;;;;;;;-1:-1:-1;;;;;493:997:50;;;;;;;;-1:-1:-1;;493:997:50;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;493:997:50;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;493:997:50;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c908163017504b61461295057508063017cf661146128be57806306fdde0314612775578063095ea7b3146126705780630d246214146126025780630eeee627146119a457806318160ddd146119685780631f3a0e411461192757806323b872dd14611790578063313ce5671461175657806331596a6a146116fd57806341c0e1b514611667578063476e44b614611519578063491e7998146113f15780635cffe9de146112115780636863f5bc146110805780636b4082d1146110275780636b7b911214610fa55780636bba3f2f14610f495780636d8d0ff314610e8e5780636ff97f1d14610d8e57806370a0823114610d2b578063715018a614610c8f57806379a68d5314610b6b5780638da5cb5b14610b1a5780638e499bcf14610ade578063939f5ea414610a965780639517606614610a2757806395d89b41146108cd5780639af1d35a1461082e578063a1af5b9a14610765578063a9059cbb14610715578063b3f1c93d14610648578063cb717f3a146104f3578063cce516b7146104a1578063d516b8c614610416578063dd62ed3e1461039d578063e4b50cb81461033b578063f0d1ae4f146102cc5763f2fde38b0361000f57346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610228612a5f565b6102306130bd565b16801561029d5773ffffffffffffffffffffffffffffffffffffffff8254827fffffffffffffffffffffffff00000000000000000000000000000000000000008216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b6024827f1e4fbdf700000000000000000000000000000000000000000000000000000000815280600452fd5b80fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff61038d600435612b2f565b90549060031b1c16604051908152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff60406103ec612a5f565b92826103f6612a82565b9416815260026020522091165f52602052602060405f2054604051908152f35b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043590602435916064359182600f0b83036102c95761049d61047985858561046f83826131e2565b9260443591612dca565b92505050604093919351938493846040919493926060820195825260208201520152565b0390f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff60105416604051908152f35b5060a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761049d61062b61061c61052f612a5f565b610537612a82565b60443573ffffffffffffffffffffffffffffffffffffffff61055882613109565b9281604051957f3dd3c8050000000000000000000000000000000000000000000000000000000060208801521660248601521660448401526064830152606435608483015260843560a483015260c48201527f000000000000000000000000000000000000000000000000000000000000000060e482015260e481526105e061010482612aee565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016613129565b60208082518301019101612d5e565b604080519384526020840192909252908201529081906060820190565b5060807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f161067e612a5f565b73ffffffffffffffffffffffffffffffffffffffff61069b612a82565b81604051937fb3f1c93d00000000000000000000000000000000000000000000000000000000602086015216602484015216604482015260443560648201526064356084820152608481526105e060a482612aee565b602081519181808201938492010103126107115760209051604051908152f35b5f80fd5b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761075a610750612a5f565b6024359033612f98565b602060405160018152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761082a73ffffffffffffffffffffffffffffffffffffffff60105416604051907f2a54db010000000000000000000000000000000000000000000000000000000060208301526024820152602481526107ee604482612aee565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016613129565b5080f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760405180916020600654928381520191600682527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f915b8181106108b75761049d856108ab81870382612aee565b604051918291826129de565b8254845260209093019260019283019201610894565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576040519080600554908160011c91600181168015610a1d575b6020841081146109f0578386529081156109ab575060011461094e575b61049d8461094281860382612aee565b60405191829182612a17565b600581527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0939250905b8082106109915750909150810160200161094282610932565b919260018160209254838588010152019101909291610978565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208087019190915292151560051b850190920192506109429150839050610932565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b92607f1692610915565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020610ad66024356004356131e2565b604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600b54604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b5060e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610b9e612a5f565b90610ba7612a82565b906044356064356084359182600f0b809303610c8b5760c435938415158095036102c95761049d61062b61061c89898989898973ffffffffffffffffffffffffffffffffffffffff610bf98383612d79565b9581604051987f8a3d858d0000000000000000000000000000000000000000000000000000000060208b01521660248901521660448701526064860152608485015260a484015260a43560c484015260e48301526101048201527f000000000000000000000000000000000000000000000000000000000000000061012482015261012481526107ee61014482612aee565b8380fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610cc66130bd565b8073ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604060209173ffffffffffffffffffffffffffffffffffffffff610d7d612a5f565b168152600183522054604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604051806020600b5491828152018091600b85527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db990855b818110610e625750505082610e0b910383612aee565b604051928392602084019060208552518091526040840192915b818110610e33575050500390f35b825173ffffffffffffffffffffffffffffffffffffffff16845285945060209384019390920191600101610e25565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610df5565b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f1610ec4612a5f565b73ffffffffffffffffffffffffffffffffffffffff604051917fc5eabfb900000000000000000000000000000000000000000000000000000000602084015216602482015260243560448201527f0000000000000000000000000000000000000000000000000000000000000000600f0b6064820152606481526105e0608482612aee565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f0000000000000000000000000000000000000000000000000000000000000000600f0b8152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610ff2612a5f565b610ffa6130bd565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000601054161760105580f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c95760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576110b8612a5f565b6110c0612a82565b90608435801515809103610c8b5773ffffffffffffffffffffffffffffffffffffffff6111429381604051947f6863f5bc0000000000000000000000000000000000000000000000000000000060208701521660248501521660448301526044356064830152606435608483015260a482015260a481526105e060c482612aee565b805181019060208181840193031261120d5760208101519067ffffffffffffffff8211610c8b57019181603f840112156102c95760208301519267ffffffffffffffff84116111e0578360051b91604051946111a16020850187612aee565b855260208080870194840101019384116102c95750604001905b8282106111d0576040518061049d86826129de565b81518152602091820191016111bb565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8280fd5b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043573ffffffffffffffffffffffffffffffffffffffff81168091036113e95761126a612a82565b60643567ffffffffffffffff8111610c8b5736602382011215610c8b5780600401359067ffffffffffffffff82116113ed5736602483830101116113ed576113c3937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f846107ee9560246101049673ffffffffffffffffffffffffffffffffffffffff6040519a8b987fe49cd4750000000000000000000000000000000000000000000000000000000060208b0152848a0152166044880152604435606488015260c060848801528260e48801520186860137888582860101527f000000000000000000000000000000000000000000000000000000000000000060a48501527f000000000000000000000000000000000000000000000000000000000000000060c48501520116810103017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612aee565b6020818051810103126113e957602001518015158091036113e957602090604051908152f35b5080fd5b8480fd5b50346102c95760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957611429612a5f565b611431612a82565b906064359160a4358015158091036113ed578373ffffffffffffffffffffffffffffffffffffffff6114656114f496613109565b9381604051967f8d01fa440000000000000000000000000000000000000000000000000000000060208901521660248701521660448501526044356064850152608484015260843560a484015260c483015260e48201527f000000000000000000000000000000000000000000000000000000000000000061010482015261010481526105e061012482612aee565b6040818051810103126113e95780604060208193015191015182519182526020820152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576060602060405161155881612aa5565b83815201526040519061156a82612aa5565b600954600f0b825260405191600a548084528360208101600a8552602085209285905b80600183011061163b576115b6945491818110611627575b10611616575b509493940383612aee565b6020810191825260405192839260208452606084019251600f0b6020850152519160408085015282518091526020608085019301915b8181106115fa575050500390f35b8251600f0b8452859450602093840193909201916001016115ec565b60801d600f0b81526020015f6115ab565b92602060019184600f0b81520193016115a5565b9160029193506040600191865480600f0b825260801d600f0b602082015201940192018692939161158d565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761169e6130bd565b60085460ff8116156116ae575080f35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001176008557f0f8eeedbc400fd6686703559f58d1e6143fdaed533f19a86c93d67a2fe4fb3318180a180f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405160128152f35b50346102c95760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576117c8612a5f565b6117d0612a82565b6044359173ffffffffffffffffffffffffffffffffffffffff811680855260026020526040852073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f2054907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821061184d575b505061075a9350612f98565b8482106118f35780156118c757331561189b578560409161075a975260026020522073ffffffffffffffffffffffffffffffffffffffff33165f526020528360405f20910390555f80611841565b6024867f94280d6200000000000000000000000000000000000000000000000000000000815280600452fd5b6024867fe602df0500000000000000000000000000000000000000000000000000000000815280600452fd5b60648686847ffb8f41b200000000000000000000000000000000000000000000000000000000835233600452602452604452fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060ff600854166040519015158152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600354604051908152f35b506101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576119d8612a5f565b906024357fffffffff00000000000000000000000000000000000000000000000000000000811691828203610711576044359273ffffffffffffffffffffffffffffffffffffffff84169283850361071157606435936084359660c43580600f0b810361071157610104359060e43582151583036107115760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146125da5760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005560ff6008541661257c578015908115612571575b501561251357611ad090611ac58b8a612d79565b9060a4358c8b612dca565b9b859d9596949e9293915073ffffffffffffffffffffffffffffffffffffffff611af982612b2f565b90549060031b1c169973ffffffffffffffffffffffffffffffffffffffff611b2085612b2f565b90549060031b1c169b155f146123665750878a73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016988982148061235c575b1561228557505050863b15610711575f8e976004604051809a81937fd0e30db00000000000000000000000000000000000000000000000000000000083525af196871561227a578f908f908f99612263575b50611bfd611c1f915b611bf8611bdb86612b74565b90549060031b1c611beb87612b8c565b90549060031b1c90612c0e565b612c0e565b91611c1a611c0a87612b74565b90549060031b1c611beb88612b8c565b612bd4565b908d987f0000000000000000000000000000000000000000000000000000000000000000908115158061225a575b6121d1575b5050611cf091611cd2611c93611ce793611c7d611c6e88612b8c565b90549060031b1c821015612c65565b611c8687612b8c565b90549060031b1c90612bd4565b611c9c86612b74565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b611cde611c6e87612b8c565b611c8686612b8c565b611c9c85612b74565b8b82600f0b1315612173578b84600f0b131561211557611d7993611d6182611d39611d33611d3996611d24611d3397612f37565b90549060031b1c600f0b61330c565b91612f37565b9091906fffffffffffffffffffffffffffffffff83549160031b928116831b921b1916179055565b611d6a84612f37565b90549060031b1c600f0b613349565b806120d6575b156120105773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b1561200c5787809160248d60405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af18015612001579188918c93611fe3575b5081809381925af13d15611fde573d67ffffffffffffffff8111611fb15760405190611e5e60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160183612aee565b81528760203d92013e5b15611f53577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a0915b611e9d818a612bd4565b73ffffffffffffffffffffffffffffffffffffffff604051931683528a60208401528b604084015260608301526080820152a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015611f22575b50505061049d90604051938493846040919493926060820195825260208201520152565b8280809381938290611f4a575b3390f115611f3e578080611efe565b604051903d90823e3d90fd5b506108fc611f2f565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b611e68565b611ff09193508290612aee565b611ffd57868a915f611e0a565b8680fd5b6040513d8a823e3d90fd5b8780fd5b506040517fa9059cbb0000000000000000000000000000000000000000000000000000000087528360045289602452602087604481808a5af19060018851148216156120b5575b60405215612089577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a091611e93565b602486867f5274afe7000000000000000000000000000000000000000000000000000000008252600452fd5b9060018115166120cd57863b15153d15161690612057565b503d87823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168614611d7f565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a20616d6f756e744f7574203c3d20300000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4d53523a20616d6f756e74496e203c3d2030000000000000000000000000006044820152fd5b611ce7929a50611c93620f42406121ef611cf09694611cd294612c1b565b049b8c612202575b93505050918f611c52565b6122558d6122216122128a612b8c565b91909283548360031b1c612c0e565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b6121f7565b50801515611c4d565b612270919e505f90612aee565b5f9c611bfd611bc6565b6040513d5f823e3d90fd5b60209293949596979899505f80809360649373ffffffffffffffffffffffffffffffffffffffff604051987f23b872dd00000000000000000000000000000000000000000000000000000000855216600452306024526044525af19060015f511482161561233b575b6040525f6060521561230f57908b95949392918e611c1f8f611bfd90611bcf565b887f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b906001811516612353578a3b15153d151616906122ee565b503d5f823e3d90fd5b5080341015611b74565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529197506020826024818e5afa91821561227a578f905f936124db575b50602492916123df916040519160208301528d858301526044820152604481526123d9606482612aee565b8a61328c565b5060208b604051938480927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa801561227a578f925f916124a2575b509061242f91612bd4565b03612444578b958e611c1f8f611bfd90611bcf565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e742066756e647300000000000000000000000000006044820152fd5b919250506020813d6020116124d3575b816124bf60209383612aee565b8101031261071157518e919061242f612424565b3d91506124b2565b9250506020823d60201161250b575b816124f760209383612aee565b81010312610711579051908e6123df6123ae565b3d91506124ea565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f737761703a20646561646c696e652065786365656465640000000000000000006044820152fd5b90504211155f611ab1565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346107115760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576126a7612a5f565b6024359033156127495773ffffffffffffffffffffffffffffffffffffffff1690811561271d57335f52600260205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576040515f6004548060011c906001811680156128b4575b6020831081146128875782855290811561284557506001146127e7575b61049d8361094281850382612aee565b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b80821061282b575090915081016020016109426127d7565b919260018160209254838588010152019101909291612813565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b8401909101915061094290506127d7565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916127ba565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157604051806020600d54918281520190600d5f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5905f5b81811061293a5761049d856108ab81870382612aee565b8254845260209093019260019283019201612923565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157600c548082526020820190600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7905f5b8181106129c85761049d856108ab81870382612aee565b82548452602090930192600192830192016129b1565b60206040818301928281528451809452019201905f5b818110612a015750505090565b82518452602093840193909201916001016129f4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6040810190811067ffffffffffffffff821117612ac157604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612ac157604052565b600b54811015612b4757600b5f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600f54811015612b4757600f5f5260205f2001905f90565b600c54811015612b4757600c5f5260205f2001905f90565b600d54811015612b4757600d5f5260205f2001905f90565b600654811015612b475760065f5260205f2001905f90565b91908203918211612be157565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b91908201809211612be157565b81810292918115918404141715612be157565b8115612c38570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b15612c6c57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f62616c616e6365203c2070726f746f636f6c206f7765640000000000000000006044820152fd5b90604051918281549182825260208201905f5260205f20925f905b806001830110612d3257612d0b945491818110612d1e575b10612d0d575b500383612aee565b565b60801d600f0b81526020015f612d03565b92602060019184600f0b8152019301612cfd565b9160029193506040600191865480600f0b825260801d600f0b6020820152019401920185929391612ce5565b90816060910312610711578051916040602083015192015190565b9190826103e8026103e881048403612be15781612d9591612c0e565b90815f52600760205260405f2054938415612daf57505050565b612dba9294506131e2565b915f5260076020528160405f2055565b92949394919091612df6612dde87846131ff565b9050612de986612ba4565b90549060031b1c9061339f565b905f82600f0b1315612ed957612e0d9184866135c9565b919092612e2c8394612e1f8197612ba4565b90549060031b1c90613221565b925f92849880612eb8575b508811612e5a57612e4a612e5792612ba4565b90549060031b1c90613aa0565b94565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f737761703a207472616e736665722065786365656473206d61780000000000006044820152fd5b909850612ec791935084613253565b91612ed28385612c0e565b975f612e37565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761703a20696e70757420746f6f20736d616c6c20616674657220666565006044820152fd5b90600a54821015612b4757600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b9190918054831015612b47575f52601060205f208360011c019260041b1690565b73ffffffffffffffffffffffffffffffffffffffff169081156130915773ffffffffffffffffffffffffffffffffffffffff1691821561306557815f52600160205260405f205481811061303357817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f52600184520360405f2055845f526001825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff5f541633036130dd57565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b600654156131245761311a90612bbc565b90549060031b1c90565b505f90565b905f8091602081519101845af480806131cf575b1561314f57505061314c613386565b90565b156131965773ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b3d156131a7576040513d5f823e3d90fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b503d15158061313d5750813b151561313d565b90611beb6131f261314c93612bbc565b90549060031b1c91612bbc565b9190801561321b5761321461314c9184613253565b8093612bd4565b505f9190565b61323561322e8383613aa0565b928361339f565b90600f0b90600f0b126132455790565b60018101809111612be15790565b9080156132865761326391612c1b565b620f4240810190818111612be157620f423f01908111612be157620f4240900490565b50505f90565b905f809160208151910182855af180806131cf571561314f57505061314c613386565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2575b1561071157600f0b90565b506f7fffffffffffffffffffffffffffffff8113156132e7565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b604051903d82523d5f602084013e60203d830101604052565b81156107115777ffffffffffffffffffffffffffffffffffffffffffffffff811161341757906133d19160401b612c2e565b6fffffffffffffffffffffffffffffffff8111610711576fffffffffffffffffffffffffffffffff166f7fffffffffffffffffffffffffffffff811161071157600f0b90565b60c09181831c80936401000000008210156135bc575b600282620100006134ba9410156135b0575b6101008110156135a4575b6010811015613598575b600481101561358d575b1015613585575b8360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b612c2e565b926fffffffffffffffffffffffffffffffff8411610711578160801c8402906fffffffffffffffffffffffffffffffff8316850290809460401b9082821061355b575b5003928160801b91828510613532575b60801c036135275761351f9203612c2e565b905b016133d1565b505050600190613521565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019061350d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f6134fd565b600101613465565b91810191811c61345e565b6004928301921c613454565b6008928301921c61344a565b6010928301921c61343f565b505060e082811c9061342d565b9193929093600a5480841080613a97575b15613a3957600203613a21576135f86135f3600a612cca565b613f94565b946136075f87600f0b13613afb565b613617600954600f0b9687613c82565b5f81600f0b1315613a0e5761362b81613b60565b6136678161366261363d89600a612f77565b90549060031b1c600f0b61365287600a612f77565b90549060031b1c600f0b90613349565b613c82565b9085600f0b5f81136137d8575b505f600f83900b126137ca57815b67028f5c28f5c28f5c90600f0b136137b55761369e9085613c82565b80600f0b915f83131561379f57678000000000000000831361379f57906136f961371a9493926136f36136ed671999999999999999946136e76136e18280613c82565b946132af565b90613c82565b91613bb0565b90613349565b916137048380613c82565b91600f0b1261377657906136f36136e792613bb0565b9384600f0b965f8813156137565761373383600a612f77565b90549060031b1c600f0b881215613756575f849698126137565750505050509190565b90919293945061377295965061376c600a612cca565b90613d08565b9091565b613799613793836136f361378d6136e79686613c82565b94613bb0565b91613bf6565b9061330c565b50505050909192613772949561376c600a612cca565b505050909192613772949561376c600a612cca565b6137d382613cc2565b613682565b6137e58380979397613c82565b680600000000000000006138096137fc8684613c82565b926137996136ed886132af565b9160401b60170b05907fffffffffffffffffffffffffffffffff80000000000000000000000000000000821215806139f4575b156107115761384e91600f0b9061330c565b9081600f0b121561396f576138847fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009188613c3c565b600f0b017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613955575b1561071157600f0b5f811261394757805b671999999999999999600f0b90600f0b1361393057806137996137936138ec836138fa95613c82565b926136f361378d8286613c82565b5f81600f0b13156139305761390f9084613c82565b9080600f0b82600f0b125f146139285750935b5f613674565b949050613922565b5094959293505050613772949561376c600a612cca565b61395081613cc2565b6138c3565b506f7fffffffffffffffffffffffffffffff8113156138b2565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4c4d53523a206c696d69745072696365203c3d2063757272656e74207072696360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152608490fd5b506f7fffffffffffffffffffffffffffffff82131561383c565b50909192613772949561376c600a612cca565b9091936137729394600954600f0b61376c600a612cca565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4c4d53523a2069647800000000000000000000000000000000000000000000006044820152fd5b508086106135da565b811561328657600f0b5f8112610711576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116107115760401b81198111610711570190565b15613b0257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b600f0b801561071157700100000000000000000000000000000000057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b680200000000000000009060401b60170b057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b680300000000000000009060401b60170b057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b90600f0b9081156107115760401b60170b057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081600f0b14610711575f03600f0b90565b8051821015612b475760209160051b010190565b95949093613d4c90939293613d69613d64613d36839a613d278a613f94565b906136625f83600f0b13613afb565b96613662613d4389613b60565b9586928b613cf4565b51600f0b613d5a898c613cf4565b51600f0b90613349565b613fc9565b9280600f0b5f8113613ed6575b505090613d8291613c82565b6820000000000000000081600f0b13613e5257613d64613da191613cc2565b600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613e38575b1561071157613df491613def91600f0b90613c82565b6132af565b925f84600f0b1315613e245750506136e7613e0e92614026565b905f82600f0b1315613e1c57565b5f9250829150565b909150613e319250613cf4565b51600f0b90565b506f7fffffffffffffffffffffffffffffff811315613dd9565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4c4d53523a20612f6220746f6f206c617267652028776f756c64206f7665726660448201527f6c6f7720657870290000000000000000000000000000000000000000000000006064820152fd5b84600f9a939a0b121561396f5783613eed91613c3c565b5f81600f0b1315613f3657613f04613f0a91614026565b86613c82565b9780600f0b89600f0b125f14613f2a575050613d8290875b90915f613d76565b613d8292919850613f22565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4d53523a20726174696f3c3d300000000000000000000000000000000000006044820152fd5b5f90815b8151831015613fc357613fbb600191613fb18585613cf4565b51600f0b9061330c565b920191613f98565b91505090565b600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000811261312457700171547652b82fe1777d0ffda0d23a7d1261314c910260801d600f0b614153565b600f0b5f811315610711575f908068010000000000000000821215614146575b80640100000000600292121561413a575b6201000081121561412e575b610100811215614122575b6010811215614116575b600481121561410b575b1215614101575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f83136140e557506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d90565b8002908160ff1c9182607f011c918302019160011d91906140c0565b9060010190614089565b92810192811d614082565b6004938401931d614078565b6008938401931d61406e565b6010938401931d614063565b6020938401931d614057565b506040915080821d614046565b80600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc000000000000000008112613286576f80000000000000000000000000000000915f6780000000000000008216600f0b13614d4f575b5f6740000000000000008216600f0b13614d32575b5f6720000000000000008216600f0b13614d15575b5f6710000000000000008216600f0b13614cf8575b5f6708000000000000008216600f0b13614cdb575b5f6704000000000000008216600f0b13614cbe575b5f6702000000000000008216600f0b13614ca1575b5f6701000000000000008216600f0b13614c84575b5f66800000000000008216600f0b13614c67575b5f66400000000000008216600f0b13614c4a575b5f66200000000000008216600f0b13614c2d575b5f66100000000000008216600f0b13614c10575b5f66080000000000008216600f0b13614bf3575b5f66040000000000008216600f0b13614bd6575b5f66020000000000008216600f0b13614bb9575b5f66010000000000008216600f0b13614b9c575b5f658000000000008216600f0b13614b7f575b5f654000000000008216600f0b13614b62575b5f652000000000008216600f0b13614b45575b5f651000000000008216600f0b13614b28575b5f650800000000008216600f0b13614b0b575b5f650400000000008216600f0b13614aee575b5f650200000000008216600f0b13614ad1575b5f650100000000008216600f0b13614ab4575b5f6480000000008216600f0b13614a97575b5f6440000000008216600f0b13614a7a575b5f6420000000008216600f0b13614a5d575b5f6410000000008216600f0b13614a40575b5f6408000000008216600f0b13614a23575b5f6404000000008216600f0b13614a06575b5f6402000000008216600f0b136149e9575b5f6401000000008216600f0b136149cc575b5f63800000008216600f0b136149af575b5f63400000008216600f0b13614992575b5f63200000008216600f0b13614975575b5f63100000008216600f0b13614958575b5f63080000008216600f0b1361493b575b5f63040000008216600f0b1361491e575b5f63020000008216600f0b13614901575b5f63010000008216600f0b136148e4575b5f628000008216600f0b136148c7575b5f624000008216600f0b136148aa575b5f622000008216600f0b1361488d575b5f621000008216600f0b13614870575b5f620800008216600f0b13614853575b5f620400008216600f0b13614836575b5f620200008216600f0b13614819575b5f620100008216600f0b136147fc575b5f6180008216600f0b136147df575b5f6140008216600f0b136147c2575b5f6120008216600f0b136147a5575b5f6110008216600f0b13614788575b5f6108008216600f0b1361476b575b5f6104008216600f0b1361474e575b5f6102008216600f0b13614731575b5f6101008216600f0b13614714575b5f60808216600f0b136146f7575b5f60408216600f0b136146da575b5f60208216600f0b136146bd575b5f60108216600f0b136146a0575b5f60088216600f0b13614683575b5f60048216600f0b13614666575b5f60028216600f0b13614648575b60015f9116600f0b1361462b575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161071157600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c90614601565b7001000000000000000162e42fefa39ef35890920260801c916145f3565b9170010000000000000002c5c85fdf473de6b20260801c916145e5565b91700100000000000000058b90bfbe8e7bcd6d0260801c916145d7565b917001000000000000000b17217f7d1cf79afa0260801c916145c9565b91700100000000000000162e42fefa39ef366f0260801c916145bb565b917001000000000000002c5c85fdf473de6eca0260801c916145ad565b9170010000000000000058b90bfbe8e7bce5440260801c9161459f565b91700100000000000000b17217f7d1cf79e9490260801c91614591565b9170010000000000000162e42fefa39ef44d910260801c91614582565b91700100000000000002c5c85fdf473dea871f0260801c91614573565b917001000000000000058b90bfbe8e7bdcbe2e0260801c91614564565b9170010000000000000b17217f7d1cf7d83c1a0260801c91614555565b917001000000000000162e42fefa39f02b772c0260801c91614546565b9170010000000000002c5c85fdf473e242ea380260801c91614537565b91700100000000000058b90bfbe8e7cc35c3f00260801c91614528565b917001000000000000b17217f7d1cfb72b45e10260801c91614519565b91700100000000000162e42fefa39fe95583c20260801c91614509565b917001000000000002c5c85fdf4741bea6e77e0260801c916144f9565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c916144e9565b91700100000000000b17217f7d1d351a389d400260801c916144d9565b9170010000000000162e42fefa3ae53369388c0260801c916144c9565b91700100000000002c5c85fdf477b662b269450260801c916144b9565b917001000000000058b90bfbe8f71cb4e4b33d0260801c916144a9565b9170010000000000b17217f7d20cf927c8e94c0260801c91614499565b917001000000000162e42fefa494f1478fde050260801c91614488565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c91614477565b91700100000000058b90bfbe9ddbac5e109cce0260801c91614466565b917001000000000b17217f7d5a7716bba4a9ae0260801c91614455565b91700100000000162e42fefb2fed257559bdaa0260801c91614444565b917001000000002c5c85fdf84bd62ae30a74cc0260801c91614433565b9170010000000058b90bfbf8479bd5a81b51ad0260801c91614422565b91700100000000b17217f80f4ef5aadda455540260801c91614411565b9170010000000162e42ff0999ce3541b9fffcf0260801c916143ff565b91700100000002c5c85fe31f35a6a30da1be500260801c916143ed565b917001000000058b90bfcdee5acd3c1cedc8230260801c916143db565b9170010000000b17217fba9c739aa5819f44f90260801c916143c9565b917001000000162e42fff037df38aa2b219f060260801c916143b7565b9170010000002c5c8601cc6b9e94213c72737a0260801c916143a5565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91614393565b917001000000b1721835514b86e6d96efd1bfe0260801c91614381565b91700100000162e430e5a18f6119e3c02282a50260801c9161436e565b917001000002c5c863b73f016468f6bac5ca2b0260801c9161435b565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91614348565b91700100000b1721bcfc99d9f890ea069117630260801c91614335565b9170010000162e43f4f831060e02d839a9d16d0260801c91614322565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c9161430f565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c916142fc565b9170010000b17255775c040618bf4a4ade83fc0260801c916142e9565b917001000162e525ee054754457d59952920260260801c916142d5565b9170010002c5cc37da9491d0985c348c68e7b30260801c916142c1565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c916142ad565b917001000b175effdc76ba38e31671ca9397250260801c91614299565b91700100162f3904051fa128bca9c55c31e5df0260801c91614285565b917001002c605e2e8cec506d21bfc89a23a00f0260801c91614271565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c9161425d565b91700100b1afa5abcbed6129ab13ec11dc95430260801c91614249565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c91614234565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c9161421f565b917001059b0d31585743ae7c548eb68ca417fd0260801c9161420a565b9170010b5586cf9890f6298b92b71842a983630260801c916141f5565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c916141e0565b917001306fe0a31b7152de8d5a46305c85edec0260801c916141cb565b6fb504f333f9de6484597d89b3754abe9f92506141b656fea2646970667358221220e520796464cdc8822a564990f4be3efe6802bdb608714268e1fd795e29751cac64736f6c634300081e0033","sourceMap":"493:997:50:-:0;;;;;;;;;;-1:-1:-1;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;505:62:46;;:::i;:::-;493:997:50;1993:22:45;;1989:91;;493:997:50;;;;;;;;;;;1104:49:46;;;;493:997:50;;1989:91:45;493:997:50;2038:31:45;;;;493:997:50;;;2038:31:45;493:997:50;;;;;;;;;;;;;;;;;;;4703:9:49;493:997:50;;;;;;;;;;;;;;;;;;5046:10:49;493:997:50;;5046:10:49;:::i;:::-;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;2797:11:35;493:997:50;;;2797:27:35;493:997:50;-1:-1:-1;493:997:50;;;;;-1:-1:-1;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11017:129:49;11095:50;;;;;;;:::i;:::-;493:997:50;;;11017:129:49;;:::i;:::-;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4327:33:49;493:997:50;;;;;;;;;;;;;;;;;;18948:47:49;18877:54;493:997:50;;:::i;:::-;;;:::i;:::-;;;;18775:29:49;;;:::i;:::-;493:997:50;;;;18573:271:49;18609:35;493:997:50;18573:271:49;;;493:997:50;;18573:271:49;;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;;18818:16:49;493:997:50;;;;;18573:271:49;;;;;;:::i;:::-;493:997:50;18914:9:49;493:997:50;18877:54:49;:::i;:::-;493:997:50;;;;18948:47:49;;;;;;:::i;:::-;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9993:54:49;493:997:50;;:::i;:::-;;;;:::i;:::-;;;;9794:167:49;9830:31;493:997:50;9794:167:49;;;493:997:50;;9794:167:49;;493:997:50;;;;;;;;;;;;;;;;;;;9794:167:49;;;;;;:::i;9993:54::-;493:997:50;;;10064:29:49;;;;;;;;;;493:997:50;;;;;;;;;;;;;;-1:-1:-1;493:997:50;;;;;;;;;;;;;;2624:5:35;493:997:50;;:::i;:::-;;;735:10:28;;2624:5:35;:::i;:::-;493:997:50;;;;;;;;;;;;;;;;;;;20749:54:49;493:997:50;20711:18:49;493:997:50;;;;20615:124:49;20651:46;20615:124;;;;;;;493:997:50;20615:124:49;;;;;;;:::i;:::-;493:997:50;20786:9:49;493:997:50;20749:54:49;:::i;:::-;;493:997:50;;;;;;;;;;;;;;;;;;;3570:5:49;493:997:50;;;;;;;3570:5:49;493:997:50;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1276:7:35;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;1276:7:35;493:997:50;;;;;-1:-1:-1;493:997:50;;;;;;;-1:-1:-1;493:997:50;;-1:-1:-1;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1276:7:35;493:997:50;;;;;;;-1:-1:-1;493:997:50;;-1:-1:-1;493:997:50;;-1:-1:-1;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4928:9:49;493:997:50;;;;;;;;;;;;;;;;;3736:20:49;493:997:50;;;;3736:20:49;:::i;:::-;493:997:50;;;;;;;;;;;;;;;;;;;5158:7:49;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17639:45:49;17568:54;17450:46;;;;;;493:997:50;17450:46:49;;;;:::i;:::-;493:997:50;;;;17196:340:49;17232:38;493:997:50;17196:340:49;;;493:997:50;;17196:340:49;;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17510:16:49;493:997:50;;;;;17196:340:49;;;;;;:::i;493:997:50:-;;;;;;;;;;;;;;;;505:62:46;;:::i;:::-;493:997:50;;;;;;;;;;1104:49:46;;;;493:997:50;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;2260:9:35;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;;5282:7:49;493:997:50;;;;;;;;5282:7:49;493:997:50;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9092:54:49;493:997:50;;:::i;:::-;;;;8913:147:49;8949:38;493:997:50;8913:147:49;;;493:997:50;;8913:147:49;;493:997:50;;;;;;;9045:5:49;493:997:50;;;;;;;8913:147:49;;;;;;:::i;493:997:50:-;;;;;;;;;;;;;;;3446:5:49;493:997:50;;;;;;;;;;;;;;;;;;;;:::i;:::-;505:62:46;;:::i;:::-;493:997:50;;8257:31:49;493:997:50;;;8257:31:49;493:997:50;;;;;;;;;;;;;;;;;;4204:16:49;493:997:50;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;10533:54:49;493:997:50;;;;10319:182:49;10355:31;493:997:50;10319:182:49;;;493:997:50;;10319:182:49;;493:997:50;;;;;;;;;;;;;;;;;;;;;;;10319:182:49;;;;;;:::i;10533:54::-;493:997:50;;10604:31:49;;;493:997:50;10604:31:49;;;;493:997:50;;;;;;10604:31:49;;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20238:57:49;493:997:50;;;;19984:222:49;493:997:50;;;;;;;19984:222:49;;;20020:36;493:997:50;19984:222:49;;;;;;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20153:13:49;493:997:50;;;;20180:16:49;493:997:50;;;;;;;;19984:222:49;;493:997:50;19984:222:49;;;;;;:::i;20238:57::-;493:997:50;;;;20312:26:49;;493:997:50;;;;;20312:26:49;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;19522:30:49;493:997:50;19522:30:49;19625:54;19522:30;;:::i;:::-;493:997:50;;;;19302:290:49;19338:35;493:997:50;19302:290:49;;;493:997:50;;19302:290:49;;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19566:16:49;493:997:50;;;;;19302:290:49;;;;;;:::i;19625:54::-;493:997:50;;;;19696:37:49;;493:997:50;;;;19696:37:49;493:997:50;;19696:37:49;;;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;5526:5:49;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;505:62:46;;:::i;:::-;8540:7:49;493:997:50;;;;8539:8:49;8535:81;;493:997:50;;;8535:81:49;493:997:50;;8574:4:49;493:997:50;8540:7:49;493:997:50;8597:8:49;;;;493:997:50;;;;;;;;;;;;;;;;;3965:13:49;493:997:50;;;;;;;;;;;;;;;;;;1997:2:35;493:997:50;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;6276:11:36;493:997:50;;;;;;735:10:28;493:997:50;-1:-1:-1;493:997:50;;;;-1:-1:-1;493:997:50;;6317:36:36;6336:17;6317:36;;6313:309;;493:997:50;4127:5:35;;;;;;:::i;6313:309:36:-;6373:24;;;6369:130;;5541:19;;5537:89;;735:10:28;5639:21:36;5635:90;;493:997:50;;;4127:5:35;493:997:50;;6276:11:36;493:997:50;;;;735:10:28;493:997:50;-1:-1:-1;493:997:50;;;;;-1:-1:-1;493:997:50;;;2407:1:31;;6313:309:36;;;;5635:90;493:997:50;5683:31:36;;;;493:997:50;;;5683:31:36;5537:89;493:997:50;5583:32:36;;;;493:997:50;;;5583:32:36;6369:130;493:997:50;6424:60:36;;;;;;735:10:28;493:997:50;;;;;;6424:60:36;493:997:50;;;;;;;;;;;;;;2932:7:49;493:997:50;;;;;;;;;;;;;;;;;;;;;;;2117:12:35;493:997:50;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2407:1:31;1505:66;493:997:50;4560:63:31;3644:93;;2407:1;1505:66;2407:1;493:997:50;3693:7:51;493:997:50;;;;11623:13:49;;:44;;;;;493:997:50;;;;;11903:125:49;11981:46;;;;;:::i;:::-;493:997:50;;;11903:125:49;;;:::i;:::-;12107:24;;;;;;;;;;;493:997:50;12107:24:49;;;:::i;:::-;493:997:50;;;;;;;12159:25:49;493:997:50;12159:25:49;;;:::i;:::-;493:997:50;;;;;;;12200:21:49;;12195:706;493:997:50;;;7032:13:51;;;493:997:50;7032:13:51;493:997:50;7023:22:51;;;;:45;;;12195:706:49;7019:180:51;;;7083:37;;;;;;;;493:997:50;;;;;;7083:37:51;;;;493:997:50;7083:37:51;;;;;;;;;;;;;;;;;7019:180;;13011:95:49;13136:91;7019:180:51;;13011:73:49;:36;;;:::i;:::-;493:997:50;;;;;;13050:34:49;;;:::i;:::-;493:997:50;;;;;;13011:73:49;;:::i;:::-;:95;:::i;:::-;13136:37;:75;:37;;;:::i;:::-;493:997:50;;;;;;13176:35:49;;;:::i;13136:75::-;:91;:::i;:::-;13307:22;;13343:16;;:20;;;;:35;;;12195:706;13339:242;;12195:706;13708:34;;13970:87;13708:34;13780:85;13819:46;14010:47;13708:34;13687:83;13708:34;;;:::i;:::-;493:997:50;;;;;;13695:47:49;;;13687:83;:::i;:::-;13831:34;;;:::i;:::-;493:997:50;;;;;;13819:46:49;;:::i;:::-;13780:36;;;:::i;:::-;:85;493:997:50;;;;;;;;;;;;;;;;;;;13780:85:49;13876:84;13897:35;;;:::i;13876:84::-;14022:35;;;:::i;14010:47::-;13970:37;;;:::i;:87::-;493:997:50;;;;28654:20:42;493:997:50;;;;;;;28716:21:42;493:997:50;;;28864:46:42;28826:14;28809:45;28826:14;28809;28826:28;28864:14;28826;;28881:29;28826:14;;:::i;:::-;493:997:50;;;;;;;;28826:28:42;:::i;:::-;28809:14;;:::i;:::-;:45;493:997:50;;;;;;;;;;;;;;;;;;;;;28809:45:42;28881:14;;;:::i;:::-;493:997:50;;;;;;;;28881:29:42;:::i;28864:46::-;7615:32:51;;;12195:706:49;7611:265:51;;;493:997:50;7664:13:51;493:997:50;7664:30:51;;;;;493:997:50;;;;;;;7664:30:51;;;;;493:997:50;7664:30:51;;493:997:50;7664:30:51;;493:997:50;7664:30:51;;;;;;;;;;;;;7611:265;7722:32;;;;;;;;493:997:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;14369:122:49;7611:265:51;493:997:50;7611:265:51;;14458:20:49;;;;:::i;:::-;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;14369:122:49;493:997:50;1505:66:31;2407:1;3553:21:51;3587:7;;;;3584:57;;7611:265;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3584:57:51;3608:33;;;;;;;;;;3584:57;3616:10;3608:33;;;;;3584:57;;;;3608:33;493:997:50;;;;;;;;;;3608:33:51;;;;;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7664:30:51;;;;;;;;:::i;:::-;493:997:50;;7664:30:51;;;;;;493:997:50;;;;7664:30:51;493:997:50;;;;;;;;;7664:30:51;493:997:50;;;7611:265:51;1306:37:26;493:997:50;8544:1067:26;8509:24;8544:1067;;;493:997:50;8544:1067:26;;493:997:50;8544:1067:26;493:997:50;8544:1067:26;493:997:50;8544:1067:26;;;;;;493:997:50;8544:1067:26;;;;;;;;7611:265:51;493:997:50;8544:1067:26;1305:38;1301:116;;14369:122:49;7611:265:51;493:997:50;7611:265:51;;;1301:116:26;493:997:50;1366:40:26;;;;;493:997:50;;1366:40:26;8544:1067;;493:997:50;8544:1067:26;;;;;;;;;;;;;;;;;-1:-1:-1;8544:1067:26;;;;;;;7615:32:51;7634:13;493:997:50;7634:13:51;493:997:50;7625:22:51;;7615:32;;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13339:242:49;14010:47;13408:26;;;13819:46;13438:9;13408:26;13970:87;13408:26;;13780:85;13408:26;;:::i;:::-;493:997:50;13474:14:49;;13470:101;;13339:242;;;;;;;;;13470:101;13508:48;:34;:48;:34;;;:::i;:::-;493:997:50;;;;;;;;;13508:48:49;:::i;:::-;493:997:50;;;;;;;;;;;;;;;;;;13508:48:49;13470:101;;13343:35;13367:11;;;;13343:35;;7083:37:51;;;;;493:997:50;7083:37:51;;:::i;:::-;493:997:50;;13011:95:49;7083:37:51;;;493:997:50;;;;;;;;;7019:180:51;493:997:50;1767:47:26;;;;;;;;;493:997:50;1767:47:26;;;493:997:50;1767:47:26;493:997:50;;10404:1148:26;;10365:28;10404:1148;;;493:997:50;10404:1148:26;7185:4:51;493:997:50;10404:1148:26;493:997:50;10404:1148:26;;;;493:997:50;;10404:1148:26;;;;;;;7019:180:51;493:997:50;10404:1148:26;493:997:50;;10404:1148:26;1766:48;1762:126;;7019:180:51;;;;;;;;13136:91:49;7019:180:51;13011:95:49;7019:180:51;;;1762:126:26;1837:40;;493:997:50;1837:40:26;493:997:50;;;;1837:40:26;10404:1148;;493:997:50;10404:1148:26;;;;;;;;;;;;;;;;;;;493:997:50;10404:1148:26;;;;;7023:45:51;7049:9;;;:19;;7023:45;;12195:706:49;493:997:50;;;12460:32:49;;12486:4;493:997:50;12460:32:49;;493:997:50;;;-1:-1:-1;493:997:50;;;;;12460:32:49;;;;;;;;;493:997:50;12460:32:49;;;12195:706;493:997:50;;;;2796:38:27;493:997:50;;;12526:62:49;493:997:50;12526:62:49;;;;;;;493:997:50;;;;;;12526:62:49;;;493:997:50;12526:62:49;;:::i;:::-;2796:38:27;;:::i;:::-;;493:997:50;;;;12761:32:49;;;;493:997:50;12761:32:49;;12486:4;493:997:50;12761:32:49;;493:997:50;12761:32:49;;;;;;;;493:997:50;12761:32:49;;;12195:706;12815:29;;;;;:::i;:::-;:52;493:997:50;;12195:706:49;;;13136:91;12195:706;13011:95;12195:706;;;493:997:50;;;;;;;;;;;;;;;;;;;;;;;12761:32:49;;;;;493:997:50;12761:32:49;;493:997:50;12761:32:49;;;;;;493:997:50;12761:32:49;;;:::i;:::-;;;493:997:50;;;;;;;;12815:29:49;12761:32;;;;;-1:-1:-1;12761:32:49;;12460;;;;493:997:50;12460:32:49;;493:997:50;12460:32:49;;;;;;493:997:50;12460:32:49;;;:::i;:::-;;;493:997:50;;;;;;;;2796:38:27;12460:32:49;;;;;-1:-1:-1;12460:32:49;;493:997:50;;;;;;;;;;;;;;;;;;;;;;;11623:44:49;11640:15;;;:27;;11623:44;;;493:997:50;;;;;;;;;;;;;;;;;;;;;;;3644:93:31;3696:30;493:997:50;3696:30:31;493:997:50;;3696:30:31;493:997:50;;;;;;;;;;;;;;;3019:13:49;493:997:50;;;;;;;;;;;;;;;;;:::i;:::-;;;735:10:28;;5541:19:36;5537:89;;493:997:50;;5639:21:36;;;5635:90;;735:10:28;493:997:50;;5734:11:36;493:997:50;;;;;;;;;;;;;;2407:1:31;493:997:50;;;;;5813:38:36;493:997:50;735:10:28;5813:38:36;;493:997:50;;;;;;;5635:90:36;5683:31;493:997:50;5683:31:36;493:997:50;;;;;5683:31:36;5537:89;5583:32;493:997:50;5583:32:36;493:997:50;;;;;5583:32:36;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;493:997:50;;-1:-1:-1;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;493:997:50;;-1:-1:-1;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5403:6:49;493:997:50;;;;;;;5403:6:49;493:997:50;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4478:17:49;493:997:50;;;;;;;;4478:17:49;493:997:50;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;493:997:50;;;;;-1:-1:-1;493:997:50;;;;;;;;;;;;;;;;;;;;;:::o;:::-;12107:7:49;493:997:50;;;;;;12107:7:49;-1:-1:-1;493:997:50;;-1:-1:-1;493:997:50;;;-1:-1:-1;493:997:50;:::o;:::-;;;;;;;;;;;13011:19:49;493:997:50;;;;;;13011:19:49;-1:-1:-1;493:997:50;;-1:-1:-1;493:997:50;;;-1:-1:-1;493:997:50;:::o;:::-;13050:17:49;493:997:50;;;;;;13050:17:49;-1:-1:-1;493:997:50;;-1:-1:-1;493:997:50;;;-1:-1:-1;493:997:50;:::o;:::-;15757:6:49;493:997:50;;;;;;15757:6:49;-1:-1:-1;493:997:50;;-1:-1:-1;493:997:50;;;-1:-1:-1;493:997:50;:::o;:::-;3966:5:51;493:997:50;;;;;;3966:5:51;-1:-1:-1;493:997:50;;-1:-1:-1;493:997:50;;;-1:-1:-1;493:997:50;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;493:997:50;;-1:-1:-1;493:997:50;;-1:-1:-1;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4879:289:51:-;;;493:997:50;4977:4:51;493:997:50;4977:4:51;493:997:50;;;;;;4977:12:51;;;;:::i;:::-;493:997:50;;-1:-1:-1;493:997:50;5005:9:51;493:997:50;;;-1:-1:-1;493:997:50;;5033:8:51;;;5029:133;;4879:289;;;:::o;5029:133::-;5097:20;;;;;:::i;:::-;493:997:50;-1:-1:-1;493:997:50;5005:9:51;493:997:50;;;;-1:-1:-1;493:997:50;2407:1:31;4879:289:51:o;15068:1761:49:-;;;;;;;;5432:32:51;15614::49;;;;:::i;:::-;15757:23;;;;;:::i;:::-;493:997:50;;;;;;5432:32:51;;:::i;:::-;493:997:50;-1:-1:-1;493:997:50;;;15799:26:49;493:997:50;;;1402:79;;;;;:::i;:::-;16041:132:49;;;16265:66;16041:132;;16307:23;16041:132;16307:23;;:::i;:::-;493:997:50;;;;;;16265:66:49;;:::i;:::-;16415:11;-1:-1:-1;16436:27:49;;16477:10;;16473:118;;15068:1761;16643:22;;;493:997:50;;16797:24:49;5747:40:51;16797:24:49;;:::i;:::-;493:997:50;;;;;;5747:40:51;;:::i;:::-;15068:1761:49;:::o;493:997:50:-;;;;;;;;;;;;;;;;;;;;;;;16473:118:49;16513:35;;;;;;;;;:::i;:::-;16562:18;;;;;:::i;:::-;16473:118;;;;493:997:50;;;;;;;;;;;;;;;;;;;;;;;;;28826:11:42;493:997:50;;;;;;28826:11:42;-1:-1:-1;493:997:50;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;493:997:50;;;-1:-1:-1;493:997:50;;;;;;;;;;:::o;1110:300:36:-;493:997:50;;1193:18:36;;;1189:86;;493:997:50;;1288:16:36;;;1284:86;;493:997:50;1209:1:36;493:997:50;2025:9:36;493:997:50;;;1209:1:36;493:997:50;;2058:19:36;;;2054:115;;493:997:50;2801:32:36;493:997:50;;;;1209:1:36;493:997:50;2025:9:36;493:997:50;;;;1209:1:36;493:997:50;2407:1:31;493:997:50;1209:1:36;493:997:50;2025:9:36;493:997:50;;;1209:1:36;493:997:50;;;;;2407:1:31;;493:997:50;;;;;2801:32:36;1110:300::o;2054:115::-;2104:50;;1209:1;2104:50;;493:997:50;;;;;;1209:1:36;2104:50;1284:86;1327:32;1209:1;1327:32;1209:1;1327:32;493:997:50;;1209:1:36;1327:32;1189:86;1234:30;1209:1;1234:30;1209:1;1234:30;493:997:50;;1209:1:36;1234:30;640:170:46;493:997:50;699:6:46;493:997:50;;735:10:28;699:22:46;695:109;;640:170::o;695:109::-;744:49;699:6;744:49;735:10:28;744:49:46;493:997:50;;699:6:46;744:49;3887:138:51;3966:5;493:997:50;3966:17:51;3962:31;;4010:8;;;:::i;:::-;493:997:50;;;;;;3887:138:51;:::o;3962:31::-;3985:8;493:997:50;3985:8:51;:::o;4691:549:27:-;;-1:-1:-1;4691:549:27;;3417:129:30;;;;;;;;;;4874:72:27;;4691:549;4870:364;;;4969:25;;;;:::i;:::-;4962:32;:::o;4870:364::-;5011:223;;;493:997:50;5045:24:27;;-1:-1:-1;5045:24:27;493:997:50;5045:24:27;493:997:50;;-1:-1:-1;5045:24:27;5011:223;4463:73:30;5090:33:27;4463:73:30;;493:997:50;;;-1:-1:-1;493:997:50;;;;;5086:148:27;5204:19;-1:-1:-1;5204:19:27;;-1:-1:-1;5204:19:27;4874:72;-1:-1:-1;4463:73:30;4886:33:27;;;4874:72;4886:59;4923:18;;;:22;;4874:72;;4453:420:51;;4586:8;4555;4859:7;4453:420;4555:8;:::i;:::-;493:997:50;;;;;;4586:8:51;;:::i;903:262:53:-;;;1026:11;;1022:59;;1100:23;1143:15;1100:23;;;:::i;:::-;1143:15;;;:::i;1022:59::-;1053:17;1036:1;1053:17;;:::o;5893:600:51:-;6232:36;6059:40;;;;:::i;:::-;6232:36;;;:::i;:::-;493:997:50;;;;;;6381:30:51;6377:82;;5893:600;:::o;6377:82::-;6447:1;493:997:50;;;;;;;6427:21:51;:::o;403:228:53:-;;494:11;;490:25;;585:10;;;:::i;:::-;598:9;493:997:50;;;;;;;;;;;;;;;598:9:53;493:997:50;;403:228:53;:::o;490:25::-;507:8;;493:997:50;507:8:53;:::o;3165:696:27:-;;-1:-1:-1;3165:696:27;;832:128:30;;;;;;;;;;;3495:72:27;;3491:364;;;3590:25;;;;:::i;3517:219:0:-;493:997:50;;;;805:35:0;3652:19;;;:42;;;3517:219;958:34;;;493:997:50;;3517:219:0;:::o;3652:42::-;3675:19;958:34;3675:19;;;3652:42;;3517:219;;493:997:50;;;;;;805:35:0;3652:19;;;:42;;;958:34;;;493:997:50;;3517:219:0;:::o;3949:::-;;493:997:50;;;;;;805:35:0;4084:19;;;:42;;;958:34;;;493:997:50;;3949:219:0;:::o;4625:334:30:-;4701:252;;;;;;;;;;;;;;;;;;;4625:334::o;8689:233:0:-;8790:6;;958:34;;23319:50;23314:55;;23319:50;;493:997:50;23388:13:0;493:997:50;23394:2:0;493:997:50;23388:13:0;:::i;:::-;24377:34;24367:44;;958:34;;24377;493:997:50;958:34:0;8851:29;;958:34;;493:997:50;;8689:233:0;:::o;23310:1040::-;23438:3;493:997:50;;;;;23486:17:0;23492:11;23486:17;;;23482:48;;23310:1040;23746:3;23543:13;23549:7;23811:45;23543:13;;;23539:44;;23310:1040;23602:5;23596:11;;;23592:40;;23310:1040;23651:4;23645:10;;;23641:39;;23310:1040;23699:3;23693:9;;;23689:38;;23310:1040;23740:9;;23736:23;;23310:1040;493:997:50;23836:1:0;493:997:50;;;;;;;;;;;;23811:45:0;:::i;:::-;23875:44;23885:34;23875:44;;958:34;;493:997:50;23959:3:0;493:997:50;;;23996:38:0;23885:34;23996:38;;493:997:50;;24046:21:0;;493:997:50;24095:2:0;493:997:50;24112:7:0;;;;24108:20;;23310:1040;493:997:50;;;;23959:3:0;493:997:50;24221:7:0;;;;24217:20;;23310:1040;23959:3;493:997:50;24313:15:0;493:997:50;;24331:6:0;493:997:50;;24331:6:0;:::i;:::-;24313:28;;493:997:50;23310:1040:0;;24313:28;;;;23836:1;24313:28;;;24217:20;493:997:50;;;24217:20:0;;;24108;493:997:50;;;-1:-1:-1;24108:20:0;;;23736:23;23758:1;493:997:50;23736:23:0;;23689:38;493:997:50;;;;;;23689:38:0;;23641:39;23666:1;493:997:50;;;;;23641:39:0;;23592:40;23618:1;493:997:50;;;;;23592:40:0;;23539:44;23567:2;493:997:50;;;;;23539:44:0;;23482:48;-1:-1:-1;;493:997:50;;;;;23482:48:0;;1807:7043:43;;;;;;2085:11;493:997:50;2121:11:43;;;:26;;;1807:7043;493:997:50;;;2265:1:43;2254:12;2250:113;;41962:31:42;493:997:50;2085:11:43;493:997:50;:::i;:::-;41962:31:42;:::i;:::-;493:997:50;42003:57:42;-1:-1:-1;493:997:50;;;42011:22:42;42003:57;:::i;:::-;42077:23;1454:5:50;493:997;;;42077:23:42;;;:::i;:::-;-1:-1:-1;493:997:50;;;2612:13:43;2610:16;2606:117;;2746:25;;;:::i;:::-;2883:44;:14;:34;:14;;2085:11;2883:14;:::i;:::-;493:997:50;;;;;;;;2902:14:43;;2085:11;2902:14;:::i;:::-;493:997:50;;;;;;;;2883:34:43;;:::i;:::-;:44;:::i;:::-;493:997:50;;;;-1:-1:-1;3038:22:43;;3034:2299;;1807:7043;-1:-1:-1;;493:997:50;;;;5424:18:43;-1:-1:-1;;5424:40:43;;493:997:50;23379:22:0;493:997:50;;5656:20:43;5652:180;;5949:11;;;;:::i;:::-;493:997:50;;;5974:14:43;-1:-1:-1;5974:14:43;;;5970:210;;493:997:50;6441:9:43;;6437:110;;6872:25;7154:60;7886:15;6872:25;;;7180:33;7154:21;493:997:50;23379:22:0;7160:14:43;7125:8;;;;:::i;:::-;7160:14;;:::i;:::-;7154:21;;:::i;:::-;7180:33;;:::i;:::-;7154:60;;:::i;:::-;7265:8;;;;;:::i;:::-;7284:15;493:997:50;;-1:-1:-1;493:997:50;;7411:33:43;;7405:40;7411:33;;:::i;7886:15::-;493:997:50;;;;7968:22:43;-1:-1:-1;7968:22:43;;;7964:123;;8290:14;;2085:11;8290:14;:::i;:::-;493:997:50;;;;;;;;8318:17:43;;;8314:118;;-1:-1:-1;8528:12:43;8550:21;8687;;8683:122;;8815:28;;;;;;1807:7043;:::o;8683:122::-;493:997:50;;;;;;3892:67:42;493:997:50;;;;2085:11:43;493:997:50;:::i;:::-;3892:67:42;;:::i;:::-;8724:70:43;;:::o;7309:548::-;7662:33;7617:40;7583:9;7623:33;7583:9;7617:79;7583:9;;;:::i;:::-;7623:33;;:::i;7617:40::-;7662:33;;:::i;:::-;7617:79;;:::i;6437:110::-;493:997:50;;;;;;;3892:67:42;493:997:50;;;2085:11:43;493:997:50;:::i;5652:180:43:-;493:997:50;;;;;;3892:67:42;493:997:50;;;2085:11:43;493:997:50;:::i;5424:40:43:-;5453:11;;;:::i;:::-;5424:40;;3034:2299;3176:16;;;;;;;:::i;:::-;493:997:50;3276:93:43;3224:19;;;;:::i;:::-;3276:31;3329:39;3276:31;;;:::i;:93::-;3391:39;2112:2:0;493:997:50;;;;7206:19:0;805:35;7206:19;;;:42;;;3034:2299:43;958:34:0;;;3276:155:43;493:997:50;;;3276:155:43;;:::i;:::-;493:997:50;;;;-1:-1:-1;3544:23:43;3540:105;;3720:25;493:997:50;3720:25:43;;;:::i;:::-;493:997:50;;;805:35:0;4084:19;;;:42;;;3034:2299:43;958:34:0;;;493:997:50;;-1:-1:-1;3884:14:43;;-1:-1:-1;;3884:28:43;;493:997:50;;;;;;4072:12:43;4068:204;;4345:8;4510:35;4429:59;4345:8;;4429:117;4345:8;;:::i;:::-;4381:11;4452:35;4381:11;;;;:::i;4429:117::-;-1:-1:-1;493:997:50;;;4726:23:43;4724:26;4720:135;;4939:18;;;;:::i;:::-;493:997:50;;;;;;;5061:12:43;5057:165;5061:12;;;5093;5057:165;;3034:2299;;;5057:165;;;;;;4720:135;493:997:50;;;;;;;;3892:67:42;493:997:50;;;2085:11:43;493:997:50;:::i;3884:28:43:-;3905:7;;;:::i;:::-;3884:28;;4084:42:0;4107:19;958:34;4107:19;;;4084:42;;3540:105:43;2112:2:0;493:997:50;3587:43:43;;;432:19;3587:43;;;432:19;;;;;493:997:50;432:19:43;493:997:50;;;432:19:43;;;;;;;;3587:43;7206:42:0;7229:19;958:34;7229:19;;;7206:42;;2606:117:43;493:997:50;;;;3892:67:42;493:997:50;;;2085:11:43;493:997:50;:::i;2250:113:43:-;493:997:50;;;3892:67:42;493:997:50;;1454:5;493:997;;;;2085:11:43;493:997:50;:::i;:::-;;;;;;;;;;;;1454:5;493:997;;;;;;;;;;2121:26:43;2136:11;;;;2121:26;;6267:513:0;6363:6;;6359:20;;493:997:50;;;6397:6:0;;958:34;;6455;6451:38;;493:997:50;;6495:2:0;493:997:50;;6547:3:0;493:997:50;;6575:50:0;6569:56;;958:34;;6495:2;493:997:50;;;6661:85:0;;958:34;;493:997:50;6267:513:0;:::o;493:997:50:-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;7038:252:0;493:997:50;;7136:6:0;;958:34;;493:997:50;;805:35:0;7206:19;;;:42;;;958:34;;;493:997:50;;7038:252:0;:::o;:::-;493:997:50;7038:252:0;7182:2;493:997:50;;;;805:35:0;7206:19;;;:42;;;958:34;;;493:997:50;;7038:252:0;:::o;:::-;493:997:50;7038:252:0;7182:2;493:997:50;;;;805:35:0;7206:19;;;:42;;;958:34;;;493:997:50;;7038:252:0;:::o;:::-;;493:997:50;;7136:6:0;;;958:34;;7182:2;493:997:50;;;;805:35:0;7206:19;;;:42;;;958:34;;;493:997:50;;7038:252:0;:::o;4395:225::-;;493:997:50;;;;;;4517:2:0;493:997:50;805:35:0;4536:19;;;:42;;;958:34;;;493:997:50;;4395:225:0;:::o;9082:131::-;805:35;493:997:50;;;9170:14:0;958:34;;493:997:50;;;;9082:131:0;:::o;41100:19:42:-;493:997:50;;41100:19:42;;;;;;;;;;;;:::o;5271:3068::-;;;;;6060:12;5271:3068;;;;41316:20;6060:40;5830:21;5606:12;5713:29;;;;:::i;:::-;493:997:50;5752:57:42;493:997:50;;;;5760:22:42;5752:57;:::i;5830:21::-;5942:25;6060:30;5942:25;;;:::i;:::-;6060:12;;;;;:::i;:::-;41100:19;493:997:50;;6077:12:42;;;;:::i;:::-;41100:19;493:997:50;;6060:30:42;;:::i;:40::-;41316:20;:::i;:::-;493:997:50;;;;;6380:22:42;;6376:991;;5271:3068;7471:11;;;;;;:::i;:::-;41225:20;493:997:50;;;7582:19:42;41225:20;;7775:12;41316:20;7775:12;;:::i;41316:20::-;493:997:50;;;;805:35:0;4084:19;;;:42;;;5271:3068:42;958:34:0;;;7875:31:42;493:997:50;7883:22:42;493:997:50;;;7883:22:42;;:::i;:::-;7875:31;:::i;:::-;493:997:50;;;;;8021:18:42;;8017:112;;41408:19;;;8195:14;41408:19;;:::i;8195:14::-;493:997:50;;;;;8279:14:42;;8275:58;;5271:3068::o;8275:58::-;493:997:50;;-1:-1:-1;493:997:50;;-1:-1:-1;8309:13:42:o;8017:112::-;8069:12;;;;;;;:::i;:::-;41100:19;493:997:50;;8095:23:42;:::o;4084:42:0:-;4107:19;958:34;4107:19;;;4084:42;;41225:20:42;;493:997:50;;41225:20:42;;;;;;;;;;;;493:997:50;41225:20:42;493:997:50;;;41225:20:42;;;;;;;6376:991;493:997:50;;;;;;-1:-1:-1;6542:16:42;6538:98;;6766:18;;;;:::i;:::-;493:997:50;;;;6806:28:42;41100:19;;;41408;6990:18;41408:19;;:::i;:::-;6990:18;;:::i;:::-;493:997:50;;;;;;;7116:12:42;7112:245;7116:12;;;7148:19;;7471:11;7148:19;;7112:245;6376:991;;;;;7112:245;7471:11;7112:245;;;;;;41100:19;;493:997:50;;41100:19:42;;;;;;;;;;;;493:997:50;41100:19:42;493:997:50;;;41100:19:42;;41507:286;41625:1;;;41642:10;493:997:50;;41654:20:42;;;;;41700:23;493:997:50;41710:12:42;;;;;:::i;:::-;41100:19;493:997:50;;41700:23:42;;:::i;:::-;493:997:50;;41642:10:42;;;41654:20;;;;41507:286;:::o;22569:296:0:-;493:997:50;;22661:20:0;22657:24;;958:34;;;22711:21;22707:25;;22703:39;;22810:35;22771:83;493:997:50;;22849:3:0;493:997:50;;;22771:83:0;:::i;15150:221::-;493:997:50;;15241:1:0;15237:5;;958:34;;;15241:1;14261:13;;14292:19;14286:25;;;14282:56;;15150:221;14349:17;14355:11;14599:3;14349:17;;;14345:48;;15150:221;14410:7;14404:13;;;14400:44;;15150:221;14461:5;14455:11;;;14451:40;;15150:221;14508:4;14502:10;;;14498:39;;15150:221;14554:3;14548:9;;;14544:38;;15150:221;14593:9;;14589:23;;15150:221;493:997:50;;;14675:2:0;493:997:50;;14737:3:0;493:997:50;;14760:31:0;14773:18;14755:176;14793:7;15241:1;14793:7;;;;493:997:50;15317:34:0;493:997:50;;;;;15355:3:0;493:997:50;15150:221:0;:::o;14802:9::-;493:997:50;;;;;;;;14737:3:0;493:997:50;;;;;;14802:9:0;14810:1;493:997:50;14760:31:0;;;;14589:23;493:997:50;14611:1:0;493:997:50;14589:23:0;;;14544:38;493:997:50;;;;;;14544:38:0;;14498:39;14523:1;493:997:50;;;;;14498:39:0;;14451:40;14477:1;493:997:50;;;;;14451:40:0;;14400:44;14428:2;493:997:50;;;;;14400:44:0;;14345:48;14377:2;493:997:50;;;;;14345:48:0;;14282:56;-1:-1:-1;14322:2:0;;-1:-1:-1;493:997:50;;;14282:56:0;;15549:6841;493:997:50;;;15643:20:0;15639:24;;958:34;;;15693:21;15689:25;;15685:39;;15763:34;15810:22;493:997:50;15814:18:0;15810:22;;493:997:50;;15810:26:0;15806:100;;15549:6841;493:997:50;15922:18:0;15918:22;;493:997:50;;15918:26:0;15914:100;;15549:6841;493:997:50;16030:18:0;16026:22;;493:997:50;;16026:26:0;16022:100;;15549:6841;493:997:50;16138:18:0;16134:22;;493:997:50;;16134:26:0;16130:100;;15549:6841;493:997:50;16246:17:0;16242:21;;493:997:50;;16242:25:0;16238:99;;15549:6841;493:997:50;16353:17:0;16349:21;;493:997:50;;16349:25:0;16345:99;;15549:6841;493:997:50;16460:17:0;16456:21;;493:997:50;;16456:25:0;16452:99;;15549:6841;493:997:50;16567:17:0;16563:21;;493:997:50;;16563:25:0;16559:99;;15549:6841;493:997:50;16674:16:0;16670:20;;493:997:50;;16670:24:0;16666:98;;15549:6841;493:997:50;16780:16:0;16776:20;;493:997:50;;16776:24:0;16772:98;;15549:6841;493:997:50;16886:16:0;16882:20;;493:997:50;;16882:24:0;16878:98;;15549:6841;493:997:50;16992:16:0;16988:20;;493:997:50;;16988:24:0;16984:98;;15549:6841;493:997:50;17098:15:0;17094:19;;493:997:50;;17094:23:0;17090:97;;15549:6841;493:997:50;17203:15:0;17199:19;;493:997:50;;17199:23:0;17195:97;;15549:6841;493:997:50;17308:15:0;17304:19;;493:997:50;;17304:23:0;17300:97;;15549:6841;493:997:50;17413:15:0;17409:19;;493:997:50;;17409:23:0;17405:97;;15549:6841;493:997:50;17518:14:0;17514:18;;493:997:50;;17514:22:0;17510:96;;15549:6841;493:997:50;17622:14:0;17618:18;;493:997:50;;17618:22:0;17614:96;;15549:6841;493:997:50;17726:14:0;17722:18;;493:997:50;;17722:22:0;17718:96;;15549:6841;493:997:50;17830:14:0;17826:18;;493:997:50;;17826:22:0;17822:96;;15549:6841;493:997:50;17934:13:0;17930:17;;493:997:50;;17930:21:0;17926:95;;15549:6841;493:997:50;18037:13:0;18033:17;;493:997:50;;18033:21:0;18029:95;;15549:6841;493:997:50;18140:13:0;18136:17;;493:997:50;;18136:21:0;18132:95;;15549:6841;493:997:50;18243:13:0;18239:17;;493:997:50;;18239:21:0;18235:95;;15549:6841;493:997:50;18346:12:0;18342:16;;493:997:50;;18342:20:0;18338:94;;15549:6841;493:997:50;18448:12:0;18444:16;;493:997:50;;18444:20:0;18440:94;;15549:6841;493:997:50;18550:12:0;18546:16;;493:997:50;;18546:20:0;18542:94;;15549:6841;493:997:50;18652:12:0;18648:16;;493:997:50;;18648:20:0;18644:94;;15549:6841;493:997:50;18754:11:0;18750:15;;493:997:50;;18750:19:0;18746:93;;15549:6841;493:997:50;18855:11:0;18851:15;;493:997:50;;18851:19:0;18847:93;;15549:6841;493:997:50;18956:11:0;18952:15;;493:997:50;;18952:19:0;18948:93;;15549:6841;493:997:50;19057:11:0;19053:15;;493:997:50;;19053:19:0;19049:93;;15549:6841;493:997:50;19158:10:0;19154:14;;493:997:50;;19154:18:0;19150:92;;15549:6841;493:997:50;19258:10:0;19254:14;;493:997:50;;19254:18:0;19250:92;;15549:6841;493:997:50;19358:10:0;19354:14;;493:997:50;;19354:18:0;19350:92;;15549:6841;493:997:50;19458:10:0;19454:14;;493:997:50;;19454:18:0;19450:92;;15549:6841;493:997:50;19558:9:0;19554:13;;493:997:50;;19554:17:0;19550:91;;15549:6841;493:997:50;19657:9:0;19653:13;;493:997:50;;19653:17:0;19649:91;;15549:6841;493:997:50;19756:9:0;19752:13;;493:997:50;;19752:17:0;19748:91;;15549:6841;493:997:50;19855:9:0;19851:13;;493:997:50;;19851:17:0;19847:91;;15549:6841;493:997:50;19954:8:0;19950:12;;493:997:50;;19950:16:0;19946:90;;15549:6841;493:997:50;20052:8:0;20048:12;;493:997:50;;20048:16:0;20044:90;;15549:6841;493:997:50;20150:8:0;20146:12;;493:997:50;;20146:16:0;20142:90;;15549:6841;493:997:50;20248:8:0;20244:12;;493:997:50;;20244:16:0;20240:90;;15549:6841;493:997:50;20346:7:0;20342:11;;493:997:50;;20342:15:0;20338:89;;15549:6841;493:997:50;20443:7:0;20439:11;;493:997:50;;20439:15:0;20435:89;;15549:6841;493:997:50;20540:7:0;20536:11;;493:997:50;;20536:15:0;20532:89;;15549:6841;493:997:50;20637:7:0;20633:11;;493:997:50;;20633:15:0;20629:89;;15549:6841;493:997:50;20734:6:0;20730:10;;493:997:50;;20730:14:0;20726:88;;15549:6841;493:997:50;20830:6:0;20826:10;;493:997:50;;20826:14:0;20822:88;;15549:6841;493:997:50;20926:6:0;20922:10;;493:997:50;;20922:14:0;20918:88;;15549:6841;493:997:50;21022:6:0;21018:10;;493:997:50;;21018:14:0;21014:88;;15549:6841;493:997:50;21118:5:0;21114:9;;493:997:50;;21114:13:0;21110:87;;15549:6841;493:997:50;21213:5:0;21209:9;;493:997:50;;21209:13:0;21205:87;;15549:6841;493:997:50;21308:5:0;21304:9;;493:997:50;;21304:13:0;21300:87;;15549:6841;493:997:50;21403:5:0;21399:9;;493:997:50;;21399:13:0;21395:87;;15549:6841;493:997:50;21498:4:0;21494:8;;493:997:50;;21494:12:0;21490:86;;15549:6841;493:997:50;21592:4:0;21588:8;;493:997:50;;21588:12:0;21584:86;;15549:6841;493:997:50;21686:4:0;21682:8;;493:997:50;;21682:12:0;21678:86;;15549:6841;493:997:50;21780:4:0;21776:8;;493:997:50;;21776:12:0;21772:86;;15549:6841;493:997:50;21874:3:0;21870:7;;493:997:50;;21870:11:0;21866:85;;15549:6841;493:997:50;21967:3:0;21963:7;;493:997:50;;21963:11:0;21959:85;;15549:6841;493:997:50;22060:3:0;22056:7;;493:997:50;;22056:11:0;22052:85;;15549:6841;22153:3;493:997:50;22149:7:0;;493:997:50;;22149:11:0;22145:85;;15549:6841;21592:4;493:997:50;;;22267:2:0;493:997:50;;;;958:34:0;22300:38;;958:34;;493:997:50;;15549:6841:0;:::o;22145:85::-;493:997:50;22188:35:0;493:997:50;21498:4:0;493:997:50;22145:85:0;;;22052;22095:35;493:997:50;;;21498:4:0;493:997:50;;22052:85:0;;21959;493:997:50;22002:35:0;493:997:50;21498:4:0;493:997:50;21959:85:0;;;21866;493:997:50;21909:35:0;493:997:50;21498:4:0;493:997:50;21866:85:0;;;21772:86;493:997:50;21816:35:0;493:997:50;21498:4:0;493:997:50;21772:86:0;;;21678;493:997:50;21722:35:0;493:997:50;21498:4:0;493:997:50;21678:86:0;;;21584;493:997:50;21628:35:0;493:997:50;21498:4:0;493:997:50;21584:86:0;;;21490;493:997:50;21534:35:0;493:997:50;21498:4:0;493:997:50;21490:86:0;;;21395:87;493:997:50;21440:35:0;493:997:50;21479:3:0;493:997:50;21395:87:0;;;21300;493:997:50;21345:35:0;493:997:50;21384:3:0;493:997:50;21300:87:0;;;21205;493:997:50;21250:35:0;493:997:50;21289:3:0;493:997:50;21205:87:0;;;21110;493:997:50;21155:35:0;493:997:50;21194:3:0;493:997:50;21110:87:0;;;21014:88;493:997:50;21060:35:0;493:997:50;21099:3:0;493:997:50;21014:88:0;;;20918;493:997:50;20964:35:0;493:997:50;21003:3:0;493:997:50;20918:88:0;;;20822;493:997:50;20868:35:0;493:997:50;20907:3:0;493:997:50;20822:88:0;;;20726;493:997:50;20772:35:0;493:997:50;20811:3:0;493:997:50;20726:88:0;;;20629:89;493:997:50;20676:35:0;493:997:50;20715:3:0;493:997:50;20629:89:0;;;20532;493:997:50;20579:35:0;493:997:50;20618:3:0;493:997:50;20532:89:0;;;20435;493:997:50;20482:35:0;493:997:50;20521:3:0;493:997:50;20435:89:0;;;20338;493:997:50;20385:35:0;493:997:50;20424:3:0;493:997:50;20338:89:0;;;20240:90;493:997:50;20288:35:0;493:997:50;20327:3:0;493:997:50;20240:90:0;;;20142;493:997:50;20190:35:0;493:997:50;20229:3:0;493:997:50;20142:90:0;;;20044;493:997:50;20092:35:0;493:997:50;20131:3:0;493:997:50;20044:90:0;;;19946;493:997:50;19994:35:0;493:997:50;20033:3:0;493:997:50;19946:90:0;;;19847:91;493:997:50;19896:35:0;493:997:50;19935:3:0;493:997:50;19847:91:0;;;19748;493:997:50;19797:35:0;493:997:50;19836:3:0;493:997:50;19748:91:0;;;19649;493:997:50;19698:35:0;493:997:50;19737:3:0;493:997:50;19649:91:0;;;19550;493:997:50;19599:35:0;493:997:50;19638:3:0;493:997:50;19550:91:0;;;19450:92;493:997:50;19500:35:0;493:997:50;19539:3:0;493:997:50;19450:92:0;;;19350;493:997:50;19400:35:0;493:997:50;19439:3:0;493:997:50;19350:92:0;;;19250;493:997:50;19300:35:0;493:997:50;19339:3:0;493:997:50;19250:92:0;;;19150;493:997:50;19200:35:0;493:997:50;19239:3:0;493:997:50;19150:92:0;;;19049:93;493:997:50;19100:35:0;493:997:50;19139:3:0;493:997:50;19049:93:0;;;18948;493:997:50;18999:35:0;493:997:50;19038:3:0;493:997:50;18948:93:0;;;18847;493:997:50;18898:35:0;493:997:50;18937:3:0;493:997:50;18847:93:0;;;18746;493:997:50;18797:35:0;493:997:50;18836:3:0;493:997:50;18746:93:0;;;18644:94;493:997:50;18696:35:0;493:997:50;18735:3:0;493:997:50;18644:94:0;;;18542;493:997:50;18594:35:0;493:997:50;18633:3:0;493:997:50;18542:94:0;;;18440;493:997:50;18492:35:0;493:997:50;18531:3:0;493:997:50;18440:94:0;;;18338;493:997:50;18390:35:0;493:997:50;18429:3:0;493:997:50;18338:94:0;;;18235:95;493:997:50;18288:35:0;493:997:50;18327:3:0;493:997:50;18235:95:0;;;18132;493:997:50;18185:35:0;493:997:50;18224:3:0;493:997:50;18132:95:0;;;18029;493:997:50;18082:35:0;493:997:50;18121:3:0;493:997:50;18029:95:0;;;17926;493:997:50;17979:35:0;493:997:50;18018:3:0;493:997:50;17926:95:0;;;17822:96;493:997:50;17876:35:0;493:997:50;17915:3:0;493:997:50;17822:96:0;;;17718;493:997:50;17772:35:0;493:997:50;17811:3:0;493:997:50;17718:96:0;;;17614;493:997:50;17668:35:0;493:997:50;17707:3:0;493:997:50;17614:96:0;;;17510;493:997:50;17564:35:0;493:997:50;17603:3:0;493:997:50;17510:96:0;;;17405:97;493:997:50;17460:35:0;493:997:50;17499:3:0;493:997:50;17405:97:0;;;17300;493:997:50;17355:35:0;493:997:50;17394:3:0;493:997:50;17300:97:0;;;17195;493:997:50;17250:35:0;493:997:50;17289:3:0;493:997:50;17195:97:0;;;17090;493:997:50;17145:35:0;493:997:50;17184:3:0;493:997:50;17090:97:0;;;16984:98;493:997:50;17040:35:0;493:997:50;17079:3:0;493:997:50;16984:98:0;;;16878;493:997:50;16934:35:0;493:997:50;16973:3:0;493:997:50;16878:98:0;;;16772;493:997:50;16828:35:0;493:997:50;16867:3:0;493:997:50;16772:98:0;;;16666;493:997:50;16722:35:0;493:997:50;16761:3:0;493:997:50;16666:98:0;;;16559:99;493:997:50;16616:35:0;493:997:50;16655:3:0;493:997:50;16559:99:0;;;16452;493:997:50;16509:35:0;493:997:50;16548:3:0;493:997:50;16452:99:0;;;16345;493:997:50;16402:35:0;493:997:50;16441:3:0;493:997:50;16345:99:0;;;16238;493:997:50;16295:35:0;493:997:50;16334:3:0;493:997:50;16238:99:0;;;16130:100;493:997:50;16188:35:0;493:997:50;16227:3:0;493:997:50;16130:100:0;;;16022;493:997:50;16080:35:0;493:997:50;16119:3:0;493:997:50;16022:100:0;;;15914;493:997:50;15972:35:0;493:997:50;16011:3:0;493:997:50;15914:100:0;;;15806;493:997:50;;-1:-1:-1;15806:100:0;","linkReferences":{},"immutableReferences":{"48761":[{"start":3859,"length":32},{"start":3967,"length":32}],"48798":[{"start":4936,"length":32},{"start":5939,"length":32}],"48809":[{"start":1452,"length":32},{"start":3157,"length":32},{"start":4189,"length":32},{"start":4974,"length":32},{"start":5310,"length":32},{"start":7204,"length":32}],"48833":[{"start":791,"length":32},{"start":1527,"length":32}],"48846":[{"start":2053,"length":32},{"start":2674,"length":32}],"50149":[{"start":6986,"length":32},{"start":7579,"length":32},{"start":8430,"length":32},{"start":9804,"length":32}]}},"methodIdentifiers":{"LMSR()":"476e44b6","allProtocolFeesOwed()":"017504b6","allTokens()":"6ff97f1d","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(address,address,uint256,uint256,bool)":"6863f5bc","burnSwap(address,address,uint256,uint256,uint256,bool)":"491e7998","collectProtocolFees()":"a1af5b9a","decimals()":"313ce567","denominators()":"017cf661","fee(uint256,uint256)":"939f5ea4","fees()":"9af1d35a","flashFeePpm()":"31596a6a","flashLoan(address,address,uint256,bytes)":"5cffe9de","getToken(uint256)":"e4b50cb8","initialMint(address,uint256)":"6d8d0ff3","kappa()":"6bba3f2f","kill()":"41c0e1b5","killed()":"1f3a0e41","mint(address,address,uint256,uint256)":"b3f1c93d","mintImpl()":"f0d1ae4f","name()":"06fdde03","numTokens()":"8e499bcf","owner()":"8da5cb5b","protocolFeeAddress()":"cce516b7","protocolFeePpm()":"6b4082d1","renounceOwnership()":"715018a6","setProtocolFeeAddress(address)":"6b7b9112","swap(address,bytes4,address,uint256,uint256,uint256,int128,uint256,bool)":"0eeee627","swapAmounts(uint256,uint256,uint256,int128)":"d516b8c6","swapMint(address,address,uint256,uint256,uint256)":"cb717f3a","swapMintImpl()":"95176066","swapToLimit(address,address,uint256,uint256,int128,uint256,bool)":"79a68d53","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b","wrapperToken()":"0d246214"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens_\",\"type\":\"address[]\"},{\"internalType\":\"int128\",\"name\":\"kappa_\",\"type\":\"int128\"},{\"internalType\":\"uint256[]\",\"name\":\"fees_\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"flashFeePpm_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolFeePpm_\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"protocolFeeAddress_\",\"type\":\"address\"},{\"internalType\":\"contract NativeWrapper\",\"name\":\"wrapperToken_\",\"type\":\"address\"},{\"internalType\":\"contract PartyPoolSwapImpl\",\"name\":\"swapMintImpl_\",\"type\":\"address\"},{\"internalType\":\"contract PartyPoolMintImpl\",\"name\":\"mintImpl_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpBurned\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFee\",\"type\":\"uint256\"}],\"name\":\"BurnSwap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC3156FlashBorrower\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFee\",\"type\":\"uint256\"}],\"name\":\"Flash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Killed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpMinted\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"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\":[],\"name\":\"ProtocolFeesCollected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFee\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFee\",\"type\":\"uint256\"}],\"name\":\"SwapMint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"LMSR\",\"outputs\":[{\"components\":[{\"internalType\":\"int128\",\"name\":\"kappa\",\"type\":\"int128\"},{\"internalType\":\"int128[]\",\"name\":\"qInternal\",\"type\":\"int128[]\"}],\"internalType\":\"struct LMSRStabilized.State\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allProtocolFeesOwed\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allTokens\",\"outputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"withdrawAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"name\":\"burnSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outFee\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectProtocolFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"denominators\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"j\",\"type\":\"uint256\"}],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fees\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"flashFeePpm\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC3156FlashBorrower\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenAddr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flashLoan\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"}],\"name\":\"getToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpTokens\",\"type\":\"uint256\"}],\"name\":\"initialMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lpMinted\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kappa\",\"outputs\":[{\"internalType\":\"int128\",\"name\":\"\",\"type\":\"int128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kill\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpTokenAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lpMinted\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintImpl\",\"outputs\":[{\"internalType\":\"contract PartyPoolMintImpl\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"numTokens\",\"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\":\"protocolFeeAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolFeePpm\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeAddress\",\"type\":\"address\"}],\"name\":\"setProtocolFeeAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"int128\",\"name\":\"limitPrice\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inFee\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"inputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"int128\",\"name\":\"limitPrice\",\"type\":\"int128\"}],\"name\":\"swapAmounts\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountInUsed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lpMinted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inFee\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"swapMintImpl\",\"outputs\":[{\"internalType\":\"contract PartyPoolSwapImpl\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"int128\",\"name\":\"limitPrice\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"name\":\"swapToLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountInUsed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inFee\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wrapperToken\",\"outputs\":[{\"internalType\":\"contract NativeWrapper\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"ProtocolFeesCollected()\":{\"details\":\"After collection, the protocolFee accounting array will be zeroed out.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"burn(address,address,uint256,uint256,bool)\":{\"details\":\"This function forwards the call to the burn implementation via delegatecall\",\"params\":{\"deadline\":\"timestamp after which the transaction will revert. Pass 0 to ignore.\",\"lpAmount\":\"amount of LP tokens to burn (proportional withdrawal)\",\"payer\":\"address that provides the LP tokens to burn\",\"receiver\":\"address that receives the withdrawn tokens\",\"unwrap\":\"if true and the native token is being withdrawn, it is unwraped and sent as native currency\"}},\"burnSwap(address,address,uint256,uint256,uint256,bool)\":{\"details\":\"The function burns LP tokens (authorization via allowance if needed), sends the single-asset payout and updates LMSR state.\",\"params\":{\"deadline\":\"optional deadline\",\"lpAmount\":\"amount of LP tokens to burn\",\"outputTokenIndex\":\"index of target asset to receive\",\"payer\":\"who burns LP tokens\",\"receiver\":\"who receives the single asset\"},\"returns\":{\"amountOut\":\"uint amount of asset outputTokenIndex sent to receiver\",\"outFee\":\"uint amount of output asset kept by the LP's and protocol as a fee\"}},\"collectProtocolFees()\":{\"details\":\"Anyone can call; must have protocolFeeAddress != address(0) to be operational.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` _tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"denominators()\":{\"details\":\"denominators()[i] is the base for tokens[i]. These bases are chosen by deployer and must match token decimals.\"},\"flashLoan(address,address,uint256,bytes)\":{\"details\":\"Initiate a flash loan.\",\"params\":{\"amount\":\"The amount of tokens lent.\",\"data\":\"Arbitrary data structure, intended to contain user-defined parameters.\",\"receiver\":\"The receiver of the tokens in the loan, and the receiver of the callback.\",\"token\":\"The loan currency.\"}},\"getToken(uint256)\":{\"details\":\"tokens[i] corresponds to the i-th asset and maps to index i in the internal LMSR arrays.\"},\"initialMint(address,uint256)\":{\"details\":\"Assumes tokens have already been transferred to the pool prior to calling. Can only be called when the pool is uninitialized (totalSupply() == 0 or _lmsr.nAssets == 0).\",\"params\":{\"lpTokens\":\"The number of LP tokens to issue for this mint. If 0, then the number of tokens returned will equal the LMSR internal q total\",\"receiver\":\"address that receives the LP tokens\"}},\"kappa()\":{\"details\":\"Pools are constructed with a \\u03ba value; this getter exposes the \\u03ba used by the pool.\"},\"mint(address,address,uint256,uint256)\":{\"details\":\"This function forwards the call to the mint implementation via delegatecall\",\"params\":{\"deadline\":\"timestamp after which the transaction will revert. Pass 0 to ignore.\",\"lpTokenAmount\":\"desired amount of LP _tokens to mint\",\"payer\":\"address that provides the input _tokens\",\"receiver\":\"address that receives the LP _tokens\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"protocolFeePpm()\":{\"details\":\"This is the fraction (in ppm) of the pool-collected fees that are owed to the protocol.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"swap(address,bytes4,address,uint256,uint256,uint256,int128,uint256,bool)\":{\"details\":\"This function transfers the exact gross input (including fee) from payer and sends the computed output to receiver. Non-standard tokens (fee-on-transfer, rebasers) are rejected via balance checks.\",\"params\":{\"deadline\":\"timestamp after which the transaction will revert. Pass 0 to ignore.\",\"inputTokenIndex\":\"index of input asset\",\"limitPrice\":\"maximum acceptable marginal price (64.64 fixed point). Pass 0 to ignore.\",\"maxAmountIn\":\"maximum amount of token inputTokenIndex (uint256) to transfer in (inclusive of fees)\",\"outputTokenIndex\":\"index of output asset\",\"payer\":\"address of the account that pays for the swap\",\"receiver\":\"address that will receive the output tokens\",\"selector\":\"If zero, then regular ERC20 approvals must be given by the payere to the pool to move the required input amount. If this selector is nonzero, then a callback style funding mechanism is used where the given selector is invoked on the payer, passing the arguments of (address inputToken, uint256 inputAmount). The callback function must send the given amount of input coin to the pool in ordr to continue the swap transaction, otherwise \\\"Insufficient funds\\\" is thrown.\"},\"returns\":{\"amountIn\":\"actual input used (uint256), amountOut actual output sent (uint256), inFee fee taken from the input (uint256)\"}},\"swapAmounts(uint256,uint256,uint256,int128)\":{\"params\":{\"inputTokenIndex\":\"index of input token\",\"limitPrice\":\"maximum acceptable marginal price (pass 0 to ignore)\",\"maxAmountIn\":\"maximum gross input allowed (inclusive of fee)\",\"outputTokenIndex\":\"index of output token\"},\"returns\":{\"amountIn\":\"gross input amount to transfer (includes fee), amountOut output amount user would receive, inFee fee taken from input amount\"}},\"swapMint(address,address,uint256,uint256,uint256)\":{\"details\":\"This function forwards the call to the swapMint implementation via delegatecall\",\"params\":{\"deadline\":\"optional deadline\",\"inputTokenIndex\":\"index of the input token\",\"maxAmountIn\":\"maximum uint token input (inclusive of fee)\",\"payer\":\"who transfers the input token\",\"receiver\":\"who receives the minted LP _tokens\"},\"returns\":{\"amountInUsed\":\"actual input used (uint256), lpMinted actual LP minted (uint256), inFee fee taken from the input (uint256)\"}},\"swapToLimit(address,address,uint256,uint256,int128,uint256,bool)\":{\"details\":\"If balances prevent fully reaching the limit, the function caps and returns actuals. The payer must transfer the exact gross input computed by the view.\",\"params\":{\"deadline\":\"timestamp after which the transaction will revert. Pass 0 to ignore.\",\"inputTokenIndex\":\"index of input asset\",\"limitPrice\":\"target marginal price to reach (must be > 0)\",\"outputTokenIndex\":\"index of output asset\",\"payer\":\"address of the account that pays for the swap\",\"receiver\":\"address that will receive the output tokens\"},\"returns\":{\"amountInUsed\":\"actual input used excluding fee (uint256), amountOut actual output sent (uint256), inFee fee taken from the input (uint256)\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s _tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"events\":{\"BurnSwap(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted instead of Burn when a burnSwap is executed.\"},\"ProtocolFeesCollected()\":{\"notice\":\"Emitted when protocol fees are collected from this pool.\"},\"SwapMint(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted instead of Swap when a single-token swapMint is executed.\"}},\"kind\":\"user\",\"methods\":{\"allProtocolFeesOwed()\":{\"notice\":\"Protocol fee ledger accessor. Returns tokens owed (raw uint token units) from this pool as protocol fees that have not yet been transferred out.\"},\"allTokens()\":{\"notice\":\"Returns the list of all token addresses in the pool (copy).\"},\"burn(address,address,uint256,uint256,bool)\":{\"notice\":\"Burn LP tokens and withdraw the proportional basket to receiver.\"},\"burnSwap(address,address,uint256,uint256,uint256,bool)\":{\"notice\":\"Burn LP tokens then swap the redeemed proportional basket into a single asset `outputTokenIndex` and send to receiver.\"},\"collectProtocolFees()\":{\"notice\":\"Transfer all protocol fees to the configured protocolFeeAddress and zero the ledger.\"},\"denominators()\":{\"notice\":\"Per-token uint base denominators used to convert uint token amounts <-> internal Q64.64 representation.\"},\"fee(uint256,uint256)\":{\"notice\":\"Effective combined fee in ppm for (i as input, j as output)\"},\"fees()\":{\"notice\":\"Per-asset swap fees in ppm.\"},\"flashFeePpm()\":{\"notice\":\"Flash-loan fee in parts-per-million (ppm) applied to flash borrow amounts.\"},\"getToken(uint256)\":{\"notice\":\"Token addresses comprising the pool. Effectively immutable after construction.\"},\"initialMint(address,uint256)\":{\"notice\":\"Initial mint to set up pool for the first time.\"},\"kappa()\":{\"notice\":\"Liquidity parameter \\u03ba (Q64.64) used by the LMSR kernel: b = \\u03ba * S(q)\"},\"kill()\":{\"notice\":\"If a security problem is found, the vault owner may call this function to permanently disable swap and mint functionality, leaving only burns (withdrawals) working.\"},\"killed()\":{\"notice\":\"If true, the vault has been disabled by the owner and only burns (withdrawals) are allowed.\"},\"mint(address,address,uint256,uint256)\":{\"notice\":\"Proportional mint for existing pool.\"},\"numTokens()\":{\"notice\":\"Returns the number of tokens (n) in the pool.\"},\"protocolFeeAddress()\":{\"notice\":\"Address to which collected protocol _tokens will be sent on collectProtocolFees()\"},\"protocolFeePpm()\":{\"notice\":\"Protocol fee share (ppm) applied to fees collected by the pool (floored when accrued)\"},\"swap(address,bytes4,address,uint256,uint256,uint256,int128,uint256,bool)\":{\"notice\":\"Swap input token inputTokenIndex -> token outputTokenIndex. Payer must approve token inputTokenIndex.\"},\"swapAmounts(uint256,uint256,uint256,int128)\":{\"notice\":\"External view to quote exact-in swap amounts (gross input incl. fee and output), matching swap() computations\"},\"swapMint(address,address,uint256,uint256,uint256)\":{\"notice\":\"Single-token mint: deposit a single token, charge swap-LMSR cost, and mint LP.\"},\"swapToLimit(address,address,uint256,uint256,int128,uint256,bool)\":{\"notice\":\"Swap up to the price limit; computes max input to reach limit then performs swap.\"},\"wrapperToken()\":{\"notice\":\"Token contract used for wrapping native currency\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/PartyPoolBalancedPair.sol\":\"PartyPoolBalancedPair\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/abdk-libraries-solidity/ABDKMath64x64.sol\":{\"keccak256\":\"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97\",\"license\":\"BSD-4-Clause\",\"urls\":[\"bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7\",\"dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol\":{\"keccak256\":\"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd\",\"dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashLender.sol\":{\"keccak256\":\"0x3a3549277762438ad9a38fce50493ed8995b806f78aabff02d51b4e1671ce6f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f105ec892766b8a41ece6d3b10a4e434166cc8db4ddb8451493a2de93cf7d893\",\"dweb:/ipfs/QmP5wxpX9cDzKtToA2cM5jbb928UN8DtGyV1cG4w7jPJCt\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd\",\"dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0x25f9b099413f805b4c4bbad8cc179326c10be237aec00349caf91524f8db0bbc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dcfb75af07ad33b1f8e966f793db3df8fbcfb14103ed3644c0c634658a8fd099\",\"dweb:/ipfs/QmPWamdkbcKwG3ah2G9TZtKHzQmjnunsWoPWr5KKfbrKNb\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168\",\"dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd274645d15bb7e4fcb9c833e401b2c5837404f90057f11a49118f25e0af7c76f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d38e0b997bb7aebae26d190b03d0991feb0d204c45f945e60014e1ca9175de69\",\"dweb:/ipfs/QmWzsUHHAZcjMyF8uMDEtNpMTkYZdQrfvdKPobXvwVHKo6\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x50e81a8b089e3f382b6c915aa0166773de64ea4756e8f9479d9943a5f956ddf5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bfeb96a150537222e2191c03887127499a4f21dfb5f9a7211da4d81749b52848\",\"dweb:/ipfs/QmYR75ECbsBuxSiXmGvGfNKJRLoK5MdLUZL1bd8SixzxL4\"]},\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161\",\"dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"src/ERC20External.sol\":{\"keccak256\":\"0x421f511bb3aa7258fb7121aa66b9a2e8e0b7a07b7e51c800c714f7acbfd599d3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b3fde56a83eae12a31eb4875d8952a99d18591fe0f18b6a12392c8f48f76af46\",\"dweb:/ipfs/QmeApbmGv6Z2b1JynvBxaAK1j1eWhGYpeNEP56V8XXvpcz\"]},\"src/ERC20Internal.sol\":{\"keccak256\":\"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f\",\"dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk\"]},\"src/IOwnable.sol\":{\"keccak256\":\"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1\",\"dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9\"]},\"src/IPartyFlashCallback.sol\":{\"keccak256\":\"0xff1d473d27c4dc75441a5f0db2d761916cce4a702f660e998467791efd1d9b2e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3220d69c62ed8c8106762c92857f24011284e8ddcfa5db4210e506b112fa1870\",\"dweb:/ipfs/QmYoZiGsVwoJvyPMcsSste4tq93wVBgDqCZkwPY7dvyLBJ\"]},\"src/IPartyInfo.sol\":{\"keccak256\":\"0x80e88e8c29cdf12426f16b4bf2a088397fcc31c2664564f7f26117dc85009af7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b91392cbda8adfccf9bea2e584616c4b3359d7381a18f5f3e5c9c71618786051\",\"dweb:/ipfs/QmWtWb1gVs2pzFkjwDj4mcdoCnQLPbwq4Qxbh38VEdWwAW\"]},\"src/IPartyPool.sol\":{\"keccak256\":\"0x55d3656b1a4c75801852066b7ba871212e5e807917b3b9029349349fae39375c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://009b67ccf1d28a04a2407a05ddda8f954033b7ac70f7fd5cbedbf779e867df9f\",\"dweb:/ipfs/QmS5vQcfma6PN28Q6qQwqa7KmUKu2KST72jwF8ffsj6Bw2\"]},\"src/LMSRStabilized.sol\":{\"keccak256\":\"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3\",\"dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB\"]},\"src/LMSRStabilizedBalancedPair.sol\":{\"keccak256\":\"0x782f3baf92f74152c0b93b95199abbb3a36c75c921454260c8b0237f91d7c59d\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://04d463c4fdcb6c8e2ebf9aed649ff21cca759ba73a4c93659e30c7df25e26c81\",\"dweb:/ipfs/QmUxmWytiw5VYJRUrFbSGm1oWmDPQ4q23pnkmK1q9P4apN\"]},\"src/NativeWrapper.sol\":{\"keccak256\":\"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238\",\"dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB\"]},\"src/OwnableExternal.sol\":{\"keccak256\":\"0x0a0199368ad20a31e7169b3e56449bf022c9d680e0d487c118608a7f14cb7efb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3348a063649e01acf9c6aa6b7ce2ecf62ace8c6f1467477de7d605996f08ec64\",\"dweb:/ipfs/QmSoxb35FFsNCgXgWn91CupvjpGmyM31wcfxAVpVFFPecX\"]},\"src/OwnableInternal.sol\":{\"keccak256\":\"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca\",\"dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE\"]},\"src/PartyPool.sol\":{\"keccak256\":\"0xf4af110b4cd06a00ee1ec2bd61e887662dcb26aaf6903b9910902614b50e4955\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://691fabaffecdf698601cc0696099e3bfa44ed60097b8f9b9f01cd4bf703bbb77\",\"dweb:/ipfs/QmXuPX2zu8sN9VyePDvVra4QP8LN2knNxbiGsMGzYAyS8S\"]},\"src/PartyPoolBalancedPair.sol\":{\"keccak256\":\"0x7d36ae211709da83ecafcc70f31e5fcdc1bc299243eedceebf17f26339757d7b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://91762575c367c9b1d50a633fb46ccf429a28bbaf70f76b524749ad32dc716d7a\",\"dweb:/ipfs/QmVLxjR3h2XJukjXFx56b4m8SPg6oupxqkzY5EKCK7GFHn\"]},\"src/PartyPoolBase.sol\":{\"keccak256\":\"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5\",\"dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5\"]},\"src/PartyPoolHelpers.sol\":{\"keccak256\":\"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5\",\"dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP\"]},\"src/PartyPoolMintImpl.sol\":{\"keccak256\":\"0xe9d9927cecd46a1f836b2c43e9d6184642b9e695c7462e5fb7c671a38aab7398\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8d821911d7982fc302929198539b27f72be100b91450c98d2e0081519f776499\",\"dweb:/ipfs/QmRChx1DPD1gKXwfD1m6aQ7pgh1aX6CvYLNX41ufdJteaJ\"]},\"src/PartyPoolSwapImpl.sol\":{\"keccak256\":\"0x71ecbd6d0fb106031baed7e4c21694ef24f0112af7d975325b98b1b0463ba5b2\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://64f8f8bae2f89ca495b9edacd012363b55e78a198f100650beb2b1238e8ef11f\",\"dweb:/ipfs/QmVfihiw9TqncuEfZKx7c6WEHiGFfRQyhtfdTGzfN7emNY\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"contract IERC20[]","name":"tokens_","type":"address[]"},{"internalType":"int128","name":"kappa_","type":"int128"},{"internalType":"uint256[]","name":"fees_","type":"uint256[]"},{"internalType":"uint256","name":"flashFeePpm_","type":"uint256"},{"internalType":"uint256","name":"protocolFeePpm_","type":"uint256"},{"internalType":"address","name":"protocolFeeAddress_","type":"address"},{"internalType":"contract NativeWrapper","name":"wrapperToken_","type":"address"},{"internalType":"contract PartyPoolSwapImpl","name":"swapMintImpl_","type":"address"},{"internalType":"contract PartyPoolMintImpl","name":"mintImpl_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":false},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"uint256[]","name":"amounts","type":"uint256[]","indexed":false},{"internalType":"uint256","name":"lpBurned","type":"uint256","indexed":false}],"type":"event","name":"Burn","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":true},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"contract IERC20","name":"tokenOut","type":"address","indexed":true},{"internalType":"uint256","name":"amountIn","type":"uint256","indexed":false},{"internalType":"uint256","name":"amountOut","type":"uint256","indexed":false},{"internalType":"uint256","name":"lpFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolFee","type":"uint256","indexed":false}],"type":"event","name":"BurnSwap","anonymous":false},{"inputs":[{"internalType":"address","name":"initiator","type":"address","indexed":true},{"internalType":"contract IERC3156FlashBorrower","name":"receiver","type":"address","indexed":true},{"internalType":"contract IERC20","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"lpFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolFee","type":"uint256","indexed":false}],"type":"event","name":"Flash","anonymous":false},{"inputs":[],"type":"event","name":"Killed","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":false},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"uint256[]","name":"amounts","type":"uint256[]","indexed":false},{"internalType":"uint256","name":"lpMinted","type":"uint256","indexed":false}],"type":"event","name":"Mint","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":[],"type":"event","name":"ProtocolFeesCollected","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":false},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"contract IERC20","name":"tokenIn","type":"address","indexed":true},{"internalType":"contract IERC20","name":"tokenOut","type":"address","indexed":true},{"internalType":"uint256","name":"amountIn","type":"uint256","indexed":false},{"internalType":"uint256","name":"amountOut","type":"uint256","indexed":false},{"internalType":"uint256","name":"lpFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolFee","type":"uint256","indexed":false}],"type":"event","name":"Swap","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":true},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"contract IERC20","name":"tokenIn","type":"address","indexed":true},{"internalType":"uint256","name":"amountIn","type":"uint256","indexed":false},{"internalType":"uint256","name":"amountOut","type":"uint256","indexed":false},{"internalType":"uint256","name":"lpFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolFee","type":"uint256","indexed":false}],"type":"event","name":"SwapMint","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"LMSR","outputs":[{"internalType":"struct LMSRStabilized.State","name":"","type":"tuple","components":[{"internalType":"int128","name":"kappa","type":"int128"},{"internalType":"int128[]","name":"qInternal","type":"int128[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"allProtocolFeesOwed","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"allTokens","outputs":[{"internalType":"contract IERC20[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"lpAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"unwrap","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"burn","outputs":[{"internalType":"uint256[]","name":"withdrawAmounts","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"lpAmount","type":"uint256"},{"internalType":"uint256","name":"outputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"unwrap","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"burnSwap","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"outFee","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"collectProtocolFees"},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"denominators","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"i","type":"uint256"},{"internalType":"uint256","name":"j","type":"uint256"}],"stateMutability":"view","type":"function","name":"fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"fees","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"flashFeePpm","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"contract IERC3156FlashBorrower","name":"receiver","type":"address"},{"internalType":"address","name":"tokenAddr","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"flashLoan","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"i","type":"uint256"}],"stateMutability":"view","type":"function","name":"getToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"lpTokens","type":"uint256"}],"stateMutability":"payable","type":"function","name":"initialMint","outputs":[{"internalType":"uint256","name":"lpMinted","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"kappa","outputs":[{"internalType":"int128","name":"","type":"int128"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"kill"},{"inputs":[],"stateMutability":"view","type":"function","name":"killed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"lpTokenAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"payable","type":"function","name":"mint","outputs":[{"internalType":"uint256","name":"lpMinted","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mintImpl","outputs":[{"internalType":"contract PartyPoolMintImpl","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"numTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"protocolFeeAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"protocolFeePpm","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"feeAddress","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setProtocolFeeAddress"},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"bytes4","name":"selector","type":"bytes4"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"inputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"outputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"int128","name":"limitPrice","type":"int128"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"unwrap","type":"bool"}],"stateMutability":"payable","type":"function","name":"swap","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"inFee","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"inputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"outputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"int128","name":"limitPrice","type":"int128"}],"stateMutability":"view","type":"function","name":"swapAmounts","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"inFee","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"inputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"payable","type":"function","name":"swapMint","outputs":[{"internalType":"uint256","name":"amountInUsed","type":"uint256"},{"internalType":"uint256","name":"lpMinted","type":"uint256"},{"internalType":"uint256","name":"inFee","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"swapMintImpl","outputs":[{"internalType":"contract PartyPoolSwapImpl","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"inputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"outputTokenIndex","type":"uint256"},{"internalType":"int128","name":"limitPrice","type":"int128"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"unwrap","type":"bool"}],"stateMutability":"payable","type":"function","name":"swapToLimit","outputs":[{"internalType":"uint256","name":"amountInUsed","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"inFee","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"wrapperToken","outputs":[{"internalType":"contract NativeWrapper","name":"","type":"address"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"burn(address,address,uint256,uint256,bool)":{"details":"This function forwards the call to the burn implementation via delegatecall","params":{"deadline":"timestamp after which the transaction will revert. Pass 0 to ignore.","lpAmount":"amount of LP tokens to burn (proportional withdrawal)","payer":"address that provides the LP tokens to burn","receiver":"address that receives the withdrawn tokens","unwrap":"if true and the native token is being withdrawn, it is unwraped and sent as native currency"}},"burnSwap(address,address,uint256,uint256,uint256,bool)":{"details":"The function burns LP tokens (authorization via allowance if needed), sends the single-asset payout and updates LMSR state.","params":{"deadline":"optional deadline","lpAmount":"amount of LP tokens to burn","outputTokenIndex":"index of target asset to receive","payer":"who burns LP tokens","receiver":"who receives the single asset"},"returns":{"amountOut":"uint amount of asset outputTokenIndex sent to receiver","outFee":"uint amount of output asset kept by the LP's and protocol as a fee"}},"collectProtocolFees()":{"details":"Anyone can call; must have protocolFeeAddress != address(0) to be operational."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` _tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"denominators()":{"details":"denominators()[i] is the base for tokens[i]. These bases are chosen by deployer and must match token decimals."},"flashLoan(address,address,uint256,bytes)":{"details":"Initiate a flash loan.","params":{"amount":"The amount of tokens lent.","data":"Arbitrary data structure, intended to contain user-defined parameters.","receiver":"The receiver of the tokens in the loan, and the receiver of the callback.","token":"The loan currency."}},"getToken(uint256)":{"details":"tokens[i] corresponds to the i-th asset and maps to index i in the internal LMSR arrays."},"initialMint(address,uint256)":{"details":"Assumes tokens have already been transferred to the pool prior to calling. Can only be called when the pool is uninitialized (totalSupply() == 0 or _lmsr.nAssets == 0).","params":{"lpTokens":"The number of LP tokens to issue for this mint. If 0, then the number of tokens returned will equal the LMSR internal q total","receiver":"address that receives the LP tokens"}},"kappa()":{"details":"Pools are constructed with a κ value; this getter exposes the κ used by the pool."},"mint(address,address,uint256,uint256)":{"details":"This function forwards the call to the mint implementation via delegatecall","params":{"deadline":"timestamp after which the transaction will revert. Pass 0 to ignore.","lpTokenAmount":"desired amount of LP _tokens to mint","payer":"address that provides the input _tokens","receiver":"address that receives the LP _tokens"}},"name()":{"details":"Returns the name of the token."},"owner()":{"details":"Returns the address of the current owner."},"protocolFeePpm()":{"details":"This is the fraction (in ppm) of the pool-collected fees that are owed to the protocol."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"swap(address,bytes4,address,uint256,uint256,uint256,int128,uint256,bool)":{"details":"This function transfers the exact gross input (including fee) from payer and sends the computed output to receiver. Non-standard tokens (fee-on-transfer, rebasers) are rejected via balance checks.","params":{"deadline":"timestamp after which the transaction will revert. Pass 0 to ignore.","inputTokenIndex":"index of input asset","limitPrice":"maximum acceptable marginal price (64.64 fixed point). Pass 0 to ignore.","maxAmountIn":"maximum amount of token inputTokenIndex (uint256) to transfer in (inclusive of fees)","outputTokenIndex":"index of output asset","payer":"address of the account that pays for the swap","receiver":"address that will receive the output tokens","selector":"If zero, then regular ERC20 approvals must be given by the payere to the pool to move the required input amount. If this selector is nonzero, then a callback style funding mechanism is used where the given selector is invoked on the payer, passing the arguments of (address inputToken, uint256 inputAmount). The callback function must send the given amount of input coin to the pool in ordr to continue the swap transaction, otherwise \"Insufficient funds\" is thrown."},"returns":{"amountIn":"actual input used (uint256), amountOut actual output sent (uint256), inFee fee taken from the input (uint256)"}},"swapAmounts(uint256,uint256,uint256,int128)":{"params":{"inputTokenIndex":"index of input token","limitPrice":"maximum acceptable marginal price (pass 0 to ignore)","maxAmountIn":"maximum gross input allowed (inclusive of fee)","outputTokenIndex":"index of output token"},"returns":{"amountIn":"gross input amount to transfer (includes fee), amountOut output amount user would receive, inFee fee taken from input amount"}},"swapMint(address,address,uint256,uint256,uint256)":{"details":"This function forwards the call to the swapMint implementation via delegatecall","params":{"deadline":"optional deadline","inputTokenIndex":"index of the input token","maxAmountIn":"maximum uint token input (inclusive of fee)","payer":"who transfers the input token","receiver":"who receives the minted LP _tokens"},"returns":{"amountInUsed":"actual input used (uint256), lpMinted actual LP minted (uint256), inFee fee taken from the input (uint256)"}},"swapToLimit(address,address,uint256,uint256,int128,uint256,bool)":{"details":"If balances prevent fully reaching the limit, the function caps and returns actuals. The payer must transfer the exact gross input computed by the view.","params":{"deadline":"timestamp after which the transaction will revert. Pass 0 to ignore.","inputTokenIndex":"index of input asset","limitPrice":"target marginal price to reach (must be > 0)","outputTokenIndex":"index of output asset","payer":"address of the account that pays for the swap","receiver":"address that will receive the output tokens"},"returns":{"amountInUsed":"actual input used excluding fee (uint256), amountOut actual output sent (uint256), inFee fee taken from the input (uint256)"}},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s _tokens of at least `value`."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{"allProtocolFeesOwed()":{"notice":"Protocol fee ledger accessor. Returns tokens owed (raw uint token units) from this pool as protocol fees that have not yet been transferred out."},"allTokens()":{"notice":"Returns the list of all token addresses in the pool (copy)."},"burn(address,address,uint256,uint256,bool)":{"notice":"Burn LP tokens and withdraw the proportional basket to receiver."},"burnSwap(address,address,uint256,uint256,uint256,bool)":{"notice":"Burn LP tokens then swap the redeemed proportional basket into a single asset `outputTokenIndex` and send to receiver."},"collectProtocolFees()":{"notice":"Transfer all protocol fees to the configured protocolFeeAddress and zero the ledger."},"denominators()":{"notice":"Per-token uint base denominators used to convert uint token amounts <-> internal Q64.64 representation."},"fee(uint256,uint256)":{"notice":"Effective combined fee in ppm for (i as input, j as output)"},"fees()":{"notice":"Per-asset swap fees in ppm."},"flashFeePpm()":{"notice":"Flash-loan fee in parts-per-million (ppm) applied to flash borrow amounts."},"getToken(uint256)":{"notice":"Token addresses comprising the pool. Effectively immutable after construction."},"initialMint(address,uint256)":{"notice":"Initial mint to set up pool for the first time."},"kappa()":{"notice":"Liquidity parameter κ (Q64.64) used by the LMSR kernel: b = κ * S(q)"},"kill()":{"notice":"If a security problem is found, the vault owner may call this function to permanently disable swap and mint functionality, leaving only burns (withdrawals) working."},"killed()":{"notice":"If true, the vault has been disabled by the owner and only burns (withdrawals) are allowed."},"mint(address,address,uint256,uint256)":{"notice":"Proportional mint for existing pool."},"numTokens()":{"notice":"Returns the number of tokens (n) in the pool."},"protocolFeeAddress()":{"notice":"Address to which collected protocol _tokens will be sent on collectProtocolFees()"},"protocolFeePpm()":{"notice":"Protocol fee share (ppm) applied to fees collected by the pool (floored when accrued)"},"swap(address,bytes4,address,uint256,uint256,uint256,int128,uint256,bool)":{"notice":"Swap input token inputTokenIndex -> token outputTokenIndex. Payer must approve token inputTokenIndex."},"swapAmounts(uint256,uint256,uint256,int128)":{"notice":"External view to quote exact-in swap amounts (gross input incl. fee and output), matching swap() computations"},"swapMint(address,address,uint256,uint256,uint256)":{"notice":"Single-token mint: deposit a single token, charge swap-LMSR cost, and mint LP."},"swapToLimit(address,address,uint256,uint256,int128,uint256,bool)":{"notice":"Swap up to the price limit; computes max input to reach limit then performs swap."},"wrapperToken()":{"notice":"Token contract used for wrapping native currency"}},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/PartyPoolBalancedPair.sol":"PartyPoolBalancedPair"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/abdk-libraries-solidity/ABDKMath64x64.sol":{"keccak256":"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97","urls":["bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7","dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN"],"license":"BSD-4-Clause"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d","urls":["bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100","dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc","urls":["bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037","dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44","urls":["bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d","dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol":{"keccak256":"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e","urls":["bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd","dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashLender.sol":{"keccak256":"0x3a3549277762438ad9a38fce50493ed8995b806f78aabff02d51b4e1671ce6f5","urls":["bzz-raw://f105ec892766b8a41ece6d3b10a4e434166cc8db4ddb8451493a2de93cf7d893","dweb:/ipfs/QmP5wxpX9cDzKtToA2cM5jbb928UN8DtGyV1cG4w7jPJCt"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86","urls":["bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd","dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0x25f9b099413f805b4c4bbad8cc179326c10be237aec00349caf91524f8db0bbc","urls":["bzz-raw://dcfb75af07ad33b1f8e966f793db3df8fbcfb14103ed3644c0c634658a8fd099","dweb:/ipfs/QmPWamdkbcKwG3ah2G9TZtKHzQmjnunsWoPWr5KKfbrKNb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9","urls":["bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168","dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd274645d15bb7e4fcb9c833e401b2c5837404f90057f11a49118f25e0af7c76f","urls":["bzz-raw://d38e0b997bb7aebae26d190b03d0991feb0d204c45f945e60014e1ca9175de69","dweb:/ipfs/QmWzsUHHAZcjMyF8uMDEtNpMTkYZdQrfvdKPobXvwVHKo6"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol":{"keccak256":"0x50e81a8b089e3f382b6c915aa0166773de64ea4756e8f9479d9943a5f956ddf5","urls":["bzz-raw://bfeb96a150537222e2191c03887127499a4f21dfb5f9a7211da4d81749b52848","dweb:/ipfs/QmYR75ECbsBuxSiXmGvGfNKJRLoK5MdLUZL1bd8SixzxL4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol":{"keccak256":"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0","urls":["bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161","dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"},"src/ERC20External.sol":{"keccak256":"0x421f511bb3aa7258fb7121aa66b9a2e8e0b7a07b7e51c800c714f7acbfd599d3","urls":["bzz-raw://b3fde56a83eae12a31eb4875d8952a99d18591fe0f18b6a12392c8f48f76af46","dweb:/ipfs/QmeApbmGv6Z2b1JynvBxaAK1j1eWhGYpeNEP56V8XXvpcz"],"license":"UNLICENSED"},"src/ERC20Internal.sol":{"keccak256":"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36","urls":["bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f","dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk"],"license":"UNLICENSED"},"src/IOwnable.sol":{"keccak256":"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990","urls":["bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1","dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9"],"license":"MIT"},"src/IPartyFlashCallback.sol":{"keccak256":"0xff1d473d27c4dc75441a5f0db2d761916cce4a702f660e998467791efd1d9b2e","urls":["bzz-raw://3220d69c62ed8c8106762c92857f24011284e8ddcfa5db4210e506b112fa1870","dweb:/ipfs/QmYoZiGsVwoJvyPMcsSste4tq93wVBgDqCZkwPY7dvyLBJ"],"license":"UNLICENSED"},"src/IPartyInfo.sol":{"keccak256":"0x80e88e8c29cdf12426f16b4bf2a088397fcc31c2664564f7f26117dc85009af7","urls":["bzz-raw://b91392cbda8adfccf9bea2e584616c4b3359d7381a18f5f3e5c9c71618786051","dweb:/ipfs/QmWtWb1gVs2pzFkjwDj4mcdoCnQLPbwq4Qxbh38VEdWwAW"],"license":"UNLICENSED"},"src/IPartyPool.sol":{"keccak256":"0x55d3656b1a4c75801852066b7ba871212e5e807917b3b9029349349fae39375c","urls":["bzz-raw://009b67ccf1d28a04a2407a05ddda8f954033b7ac70f7fd5cbedbf779e867df9f","dweb:/ipfs/QmS5vQcfma6PN28Q6qQwqa7KmUKu2KST72jwF8ffsj6Bw2"],"license":"UNLICENSED"},"src/LMSRStabilized.sol":{"keccak256":"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b","urls":["bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3","dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB"],"license":"UNLICENSED"},"src/LMSRStabilizedBalancedPair.sol":{"keccak256":"0x782f3baf92f74152c0b93b95199abbb3a36c75c921454260c8b0237f91d7c59d","urls":["bzz-raw://04d463c4fdcb6c8e2ebf9aed649ff21cca759ba73a4c93659e30c7df25e26c81","dweb:/ipfs/QmUxmWytiw5VYJRUrFbSGm1oWmDPQ4q23pnkmK1q9P4apN"],"license":"UNLICENSED"},"src/NativeWrapper.sol":{"keccak256":"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579","urls":["bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238","dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB"],"license":"UNLICENSED"},"src/OwnableExternal.sol":{"keccak256":"0x0a0199368ad20a31e7169b3e56449bf022c9d680e0d487c118608a7f14cb7efb","urls":["bzz-raw://3348a063649e01acf9c6aa6b7ce2ecf62ace8c6f1467477de7d605996f08ec64","dweb:/ipfs/QmSoxb35FFsNCgXgWn91CupvjpGmyM31wcfxAVpVFFPecX"],"license":"MIT"},"src/OwnableInternal.sol":{"keccak256":"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581","urls":["bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca","dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE"],"license":"MIT"},"src/PartyPool.sol":{"keccak256":"0xf4af110b4cd06a00ee1ec2bd61e887662dcb26aaf6903b9910902614b50e4955","urls":["bzz-raw://691fabaffecdf698601cc0696099e3bfa44ed60097b8f9b9f01cd4bf703bbb77","dweb:/ipfs/QmXuPX2zu8sN9VyePDvVra4QP8LN2knNxbiGsMGzYAyS8S"],"license":"UNLICENSED"},"src/PartyPoolBalancedPair.sol":{"keccak256":"0x7d36ae211709da83ecafcc70f31e5fcdc1bc299243eedceebf17f26339757d7b","urls":["bzz-raw://91762575c367c9b1d50a633fb46ccf429a28bbaf70f76b524749ad32dc716d7a","dweb:/ipfs/QmVLxjR3h2XJukjXFx56b4m8SPg6oupxqkzY5EKCK7GFHn"],"license":"UNLICENSED"},"src/PartyPoolBase.sol":{"keccak256":"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999","urls":["bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5","dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5"],"license":"UNLICENSED"},"src/PartyPoolHelpers.sol":{"keccak256":"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c","urls":["bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5","dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP"],"license":"UNLICENSED"},"src/PartyPoolMintImpl.sol":{"keccak256":"0xe9d9927cecd46a1f836b2c43e9d6184642b9e695c7462e5fb7c671a38aab7398","urls":["bzz-raw://8d821911d7982fc302929198539b27f72be100b91450c98d2e0081519f776499","dweb:/ipfs/QmRChx1DPD1gKXwfD1m6aQ7pgh1aX6CvYLNX41ufdJteaJ"],"license":"UNLICENSED"},"src/PartyPoolSwapImpl.sol":{"keccak256":"0x71ecbd6d0fb106031baed7e4c21694ef24f0112af7d975325b98b1b0463ba5b2","urls":["bzz-raw://64f8f8bae2f89ca495b9edacd012363b55e78a198f100650beb2b1238e8ef11f","dweb:/ipfs/QmVfihiw9TqncuEfZKx7c6WEHiGFfRQyhtfdTGzfN7emNY"],"license":"UNLICENSED"}},"version":1},"id":50} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"owner_","type":"address","internalType":"address"},{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"},{"name":"tokens_","type":"address[]","internalType":"contract IERC20[]"},{"name":"kappa_","type":"int128","internalType":"int128"},{"name":"fees_","type":"uint256[]","internalType":"uint256[]"},{"name":"flashFeePpm_","type":"uint256","internalType":"uint256"},{"name":"protocolFeePpm_","type":"uint256","internalType":"uint256"},{"name":"protocolFeeAddress_","type":"address","internalType":"address"},{"name":"wrapperToken_","type":"address","internalType":"contract NativeWrapper"},{"name":"swapMintImpl_","type":"address","internalType":"contract PartyPoolSwapImpl"},{"name":"mintImpl_","type":"address","internalType":"contract PartyPoolMintImpl"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"LMSR","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct LMSRStabilized.State","components":[{"name":"kappa","type":"int128","internalType":"int128"},{"name":"qInternal","type":"int128[]","internalType":"int128[]"}]}],"stateMutability":"view"},{"type":"function","name":"allProtocolFeesOwed","inputs":[],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"allTokens","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"contract IERC20[]"}],"stateMutability":"view"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"lpAmount","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"unwrap","type":"bool","internalType":"bool"}],"outputs":[{"name":"withdrawAmounts","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"burnSwap","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"lpAmount","type":"uint256","internalType":"uint256"},{"name":"outputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"unwrap","type":"bool","internalType":"bool"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"outFee","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"collectProtocolFees","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"denominators","inputs":[],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"fee","inputs":[{"name":"i","type":"uint256","internalType":"uint256"},{"name":"j","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"fees","inputs":[],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"flashFeePpm","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"flashLoan","inputs":[{"name":"receiver","type":"address","internalType":"contract IERC3156FlashBorrower"},{"name":"tokenAddr","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"getToken","inputs":[{"name":"i","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"initialMint","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"lpTokens","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"lpMinted","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"kappa","inputs":[],"outputs":[{"name":"","type":"int128","internalType":"int128"}],"stateMutability":"view"},{"type":"function","name":"kill","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"killed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"lpTokenAmount","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"lpMinted","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"mintImpl","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract PartyPoolMintImpl"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"numTokens","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":"protocolFeeAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"protocolFeePpm","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setProtocolFeeAddress","inputs":[{"name":"feeAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"swap","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"fundingSelector","type":"bytes4","internalType":"bytes4"},{"name":"receiver","type":"address","internalType":"address"},{"name":"inputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"outputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"maxAmountIn","type":"uint256","internalType":"uint256"},{"name":"limitPrice","type":"int128","internalType":"int128"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"unwrap","type":"bool","internalType":"bool"}],"outputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"inFee","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"swapAmounts","inputs":[{"name":"inputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"outputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"maxAmountIn","type":"uint256","internalType":"uint256"},{"name":"limitPrice","type":"int128","internalType":"int128"}],"outputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"inFee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"swapMint","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"inputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"maxAmountIn","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountInUsed","type":"uint256","internalType":"uint256"},{"name":"lpMinted","type":"uint256","internalType":"uint256"},{"name":"inFee","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"swapMintImpl","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract PartyPoolSwapImpl"}],"stateMutability":"view"},{"type":"function","name":"swapToLimit","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"inputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"outputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"limitPrice","type":"int128","internalType":"int128"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"unwrap","type":"bool","internalType":"bool"}],"outputs":[{"name":"amountInUsed","type":"uint256","internalType":"uint256"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"inFee","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"wrapperToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract NativeWrapper"}],"stateMutability":"view"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Burn","inputs":[{"name":"payer","type":"address","indexed":false,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"amounts","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"lpBurned","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BurnSwap","inputs":[{"name":"payer","type":"address","indexed":true,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"tokenOut","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lpFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Flash","inputs":[{"name":"initiator","type":"address","indexed":true,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"contract IERC3156FlashBorrower"},{"name":"token","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lpFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Killed","inputs":[],"anonymous":false},{"type":"event","name":"Mint","inputs":[{"name":"payer","type":"address","indexed":false,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"amounts","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"lpMinted","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":"ProtocolFeesCollected","inputs":[],"anonymous":false},{"type":"event","name":"Swap","inputs":[{"name":"payer","type":"address","indexed":false,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"tokenIn","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"tokenOut","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lpFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SwapMint","inputs":[{"name":"payer","type":"address","indexed":true,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"tokenIn","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lpFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x610140604052346106ee57615ac68038038061001a81610a6a565b9283398101610180828203126106ee5761003382610a8f565b60208301516001600160401b0381116106ee5782610052918501610aa3565b60408401519091906001600160401b0381116106ee5783610074918601610aa3565b60608501519094906001600160401b0381116106ee5781019284601f850112156106ee578351956100ac6100a788610af4565b610a6a565b9460208689815201906020829960051b820101908882116106ee57602001915b818310610a4a57505050608083015180600f0b81036106ee5760a08401516001600160401b0381116106ee5784019680601f890112156106ee5787516101146100a782610af4565b986020808b848152019260051b8201019283116106ee57602001905b828210610a3a5750505060c08401519760e0850151926101536101008701610a8f565b610120870151979095906001600160a01b03891689036106ee57610140880151976001600160a01b03891689036106ee576101600151986001600160a01b038a168a036106ee5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00556080526001600160a01b03168015610a27575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a38051906001600160401b0382116106335760045490600182811c92168015610a1d575b60208310146109405781601f8493116109cf575b50602090601f8311600114610969575f9261095e575b50508160011b915f199060031b1c1916176004555b8051906001600160401b0382116106335760055490600182811c92168015610954575b60208310146109405781601f849311610904575b50602090601f831160011461089e575f92610893575b50508160011b915f199060031b1c1916176005555b60018751111561084e578651906001600160401b0382116106335768010000000000000000821161063357600b5482600b55808310610814575b50600b5f5260205f205f5b8381106107f7575050505060a05285518551036107be5761033a8651610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600654836006558084106107a2575b500160065f5260205f205f5b83811061078e57505050505f5b86518110156104185761271061039c8289610b49565b5110156103e1576103ad8188610b49565b51906006548110156103cd5760019160065f528160205f20015501610386565b634e487b7160e01b5f52603260045260245ffd5b60405162461bcd60e51b815260206004820152600f60248201526e506f6f6c3a20666565203e3d20312560881b6044820152606490fd5b50866127108110156107495760c05262061a8081101561070457801580156106f2575b156106ee5760e052601080546001600160a01b0319166001600160a01b039290921691909117905561012052610100528051905f5b8281106106a7578261048181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600d5483600d5580841061068b575b5001600d5f5260205f205f5b83811061067757846104d181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600f5483600f5580841061065b575b5001600f5f5260205f205f5b8381106106475761052085610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600c5483600c55808410610617575b500190600c5f5260205f20915f5b82811061060357604051614f689081610b5e8239608051818181611b5001528181611da1015281816120f40152612817015260a051818181610f130152610f7f015260c0518181816113480152611733015260e0518181816105ac01528181610c550152818161105d0152818161136e015281816114be0152611c2a01526101005181818161031701526105f70152610120518181816108050152610a720152f35b600190602083519301928186015501610561565b61062d90600c5f5284845f209182019101610b0b565b83610553565b634e487b7160e01b5f52604160045260245ffd5b600190602084519401938184015501610510565b61067190600f5f5284845f209182019101610b0b565b84610504565b6001906020845194019381840155016104c0565b6106a190600d5f5284845f209182019101610b0b565b846104b4565b60018101908181116106da576001600160a01b03906106c69084610b49565b51165f52600e6020528060405f2055610470565b634e487b7160e01b5f52601160045260245ffd5b5f80fd5b506001600160a01b038216151561043b565b60405162461bcd60e51b815260206004820152601960248201527f506f6f6c3a2070726f746f636f6c20666565203e3d20343025000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601560248201527f506f6f6c3a20666c61736820666565203e3d20312500000000000000000000006044820152606490fd5b600190602084519401938184015501610379565b6107b89060065f5284845f209182019101610b0b565b5f61036d565b60405162461bcd60e51b81526020600482015260116024820152700a0deded87440cccacae640d8cadccee8d607b1b6044820152606490fd5b82516001600160a01b031681830155602090920191600101610319565b600b5f52610848907f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9908101908401610b0b565b5f61030e565b60405162461bcd60e51b815260206004820152601360248201527f506f6f6c3a206e656564203e31206173736574000000000000000000000000006044820152606490fd5b015190505f806102bf565b60055f9081528281209350601f198516905b8181106108ec57509084600195949392106108d4575b505050811b016005556102d4565b01515f1960f88460031b161c191690555f80806108c6565b929360206001819287860151815501950193016108b0565b6109309060055f5260205f20601f850160051c81019160208610610936575b601f0160051c0190610b0b565b5f6102a9565b9091508190610923565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610295565b015190505f8061025d565b60045f9081528281209350601f198516905b8181106109b7575090846001959493921061099f575b505050811b01600455610272565b01515f1960f88460031b161c191690555f8080610991565b9293602060018192878601518155019501930161097b565b60045f52610a17907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f850160051c8101916020861061093657601f0160051c0190610b0b565b5f610247565b91607f1691610233565b631e4fbdf760e01b5f525f60045260245ffd5b8151815260209182019101610130565b82516001600160a01b03811681036106ee578152602092830192016100cc565b6040519190601f01601f191682016001600160401b0381118382101761063357604052565b51906001600160a01b03821682036106ee57565b81601f820112156106ee578051906001600160401b03821161063357610ad2601f8301601f1916602001610a6a565b92828452602083830101116106ee57815f9260208093018386015e8301015290565b6001600160401b0381116106335760051b60200190565b818110610b16575050565b5f8155600101610b0b565b90610b2e6100a783610af4565b8281528092610b3f601f1991610af4565b0190602036910137565b80518210156103cd5760209160051b01019056fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c908163017504b614612b1b57508063017cf66114612a8957806306fdde0314612940578063095ea7b31461283b5780630d246214146127cd5780630eeee627146119a457806318160ddd146119685780631f3a0e411461192757806323b872dd14611790578063313ce5671461175657806331596a6a146116fd57806341c0e1b514611667578063476e44b614611519578063491e7998146113f15780635cffe9de146112115780636863f5bc146110805780636b4082d1146110275780636b7b911214610fa55780636bba3f2f14610f495780636d8d0ff314610e8e5780636ff97f1d14610d8e57806370a0823114610d2b578063715018a614610c8f57806379a68d5314610b6b5780638da5cb5b14610b1a5780638e499bcf14610ade578063939f5ea414610a965780639517606614610a2757806395d89b41146108cd5780639af1d35a1461082e578063a1af5b9a14610765578063a9059cbb14610715578063b3f1c93d14610648578063cb717f3a146104f3578063cce516b7146104a1578063d516b8c614610416578063dd62ed3e1461039d578063e4b50cb81461033b578063f0d1ae4f146102cc5763f2fde38b0361000f57346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610228612c2a565b610230613288565b16801561029d5773ffffffffffffffffffffffffffffffffffffffff8254827fffffffffffffffffffffffff00000000000000000000000000000000000000008216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b6024827f1e4fbdf700000000000000000000000000000000000000000000000000000000815280600452fd5b80fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff61038d600435612cfa565b90549060031b1c16604051908152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff60406103ec612c2a565b92826103f6612c4d565b9416815260026020522091165f52602052602060405f2054604051908152f35b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043590602435916064359182600f0b83036102c95761049d61047985858561046f83826133ad565b9260443591612f95565b92505050604093919351938493846040919493926060820195825260208201520152565b0390f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff60105416604051908152f35b5060a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761049d61062b61061c61052f612c2a565b610537612c4d565b60443573ffffffffffffffffffffffffffffffffffffffff610558826132d4565b9281604051957f3dd3c8050000000000000000000000000000000000000000000000000000000060208801521660248601521660448401526064830152606435608483015260843560a483015260c48201527f000000000000000000000000000000000000000000000000000000000000000060e482015260e481526105e061010482612cb9565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166132f4565b60208082518301019101612f29565b604080519384526020840192909252908201529081906060820190565b5060807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f161067e612c2a565b73ffffffffffffffffffffffffffffffffffffffff61069b612c4d565b81604051937fb3f1c93d00000000000000000000000000000000000000000000000000000000602086015216602484015216604482015260443560648201526064356084820152608481526105e060a482612cb9565b602081519181808201938492010103126107115760209051604051908152f35b5f80fd5b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761075a610750612c2a565b6024359033613163565b602060405160018152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761082a73ffffffffffffffffffffffffffffffffffffffff60105416604051907f2a54db010000000000000000000000000000000000000000000000000000000060208301526024820152602481526107ee604482612cb9565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166132f4565b5080f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760405180916020600654928381520191600682527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f915b8181106108b75761049d856108ab81870382612cb9565b60405191829182612ba9565b8254845260209093019260019283019201610894565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576040519080600554908160011c91600181168015610a1d575b6020841081146109f0578386529081156109ab575060011461094e575b61049d8461094281860382612cb9565b60405191829182612be2565b600581527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0939250905b8082106109915750909150810160200161094282610932565b919260018160209254838588010152019101909291610978565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208087019190915292151560051b850190920192506109429150839050610932565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b92607f1692610915565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020610ad66024356004356133ad565b604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600b54604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b5060e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610b9e612c2a565b90610ba7612c4d565b906044356064356084359182600f0b809303610c8b5760c435938415158095036102c95761049d61062b61061c89898989898973ffffffffffffffffffffffffffffffffffffffff610bf98383612f44565b9581604051987f8a3d858d0000000000000000000000000000000000000000000000000000000060208b01521660248901521660448701526064860152608485015260a484015260a43560c484015260e48301526101048201527f000000000000000000000000000000000000000000000000000000000000000061012482015261012481526107ee61014482612cb9565b8380fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610cc6613288565b8073ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604060209173ffffffffffffffffffffffffffffffffffffffff610d7d612c2a565b168152600183522054604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604051806020600b5491828152018091600b85527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db990855b818110610e625750505082610e0b910383612cb9565b604051928392602084019060208552518091526040840192915b818110610e33575050500390f35b825173ffffffffffffffffffffffffffffffffffffffff16845285945060209384019390920191600101610e25565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610df5565b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f1610ec4612c2a565b73ffffffffffffffffffffffffffffffffffffffff604051917fc5eabfb900000000000000000000000000000000000000000000000000000000602084015216602482015260243560448201527f0000000000000000000000000000000000000000000000000000000000000000600f0b6064820152606481526105e0608482612cb9565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f0000000000000000000000000000000000000000000000000000000000000000600f0b8152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610ff2612c2a565b610ffa613288565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000601054161760105580f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c95760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576110b8612c2a565b6110c0612c4d565b90608435801515809103610c8b5773ffffffffffffffffffffffffffffffffffffffff6111429381604051947f6863f5bc0000000000000000000000000000000000000000000000000000000060208701521660248501521660448301526044356064830152606435608483015260a482015260a481526105e060c482612cb9565b805181019060208181840193031261120d5760208101519067ffffffffffffffff8211610c8b57019181603f840112156102c95760208301519267ffffffffffffffff84116111e0578360051b91604051946111a16020850187612cb9565b855260208080870194840101019384116102c95750604001905b8282106111d0576040518061049d8682612ba9565b81518152602091820191016111bb565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8280fd5b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043573ffffffffffffffffffffffffffffffffffffffff81168091036113e95761126a612c4d565b60643567ffffffffffffffff8111610c8b5736602382011215610c8b5780600401359067ffffffffffffffff82116113ed5736602483830101116113ed576113c3937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f846107ee9560246101049673ffffffffffffffffffffffffffffffffffffffff6040519a8b987fe49cd4750000000000000000000000000000000000000000000000000000000060208b0152848a0152166044880152604435606488015260c060848801528260e48801520186860137888582860101527f000000000000000000000000000000000000000000000000000000000000000060a48501527f000000000000000000000000000000000000000000000000000000000000000060c48501520116810103017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612cb9565b6020818051810103126113e957602001518015158091036113e957602090604051908152f35b5080fd5b8480fd5b50346102c95760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957611429612c2a565b611431612c4d565b906064359160a4358015158091036113ed578373ffffffffffffffffffffffffffffffffffffffff6114656114f4966132d4565b9381604051967f8d01fa440000000000000000000000000000000000000000000000000000000060208901521660248701521660448501526044356064850152608484015260843560a484015260c483015260e48201527f000000000000000000000000000000000000000000000000000000000000000061010482015261010481526105e061012482612cb9565b6040818051810103126113e95780604060208193015191015182519182526020820152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576060602060405161155881612c70565b83815201526040519061156a82612c70565b600954600f0b825260405191600a548084528360208101600a8552602085209285905b80600183011061163b576115b6945491818110611627575b10611616575b509493940383612cb9565b6020810191825260405192839260208452606084019251600f0b6020850152519160408085015282518091526020608085019301915b8181106115fa575050500390f35b8251600f0b8452859450602093840193909201916001016115ec565b60801d600f0b81526020015f6115ab565b92602060019184600f0b81520193016115a5565b9160029193506040600191865480600f0b825260801d600f0b602082015201940192018692939161158d565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761169e613288565b60085460ff8116156116ae575080f35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001176008557f0f8eeedbc400fd6686703559f58d1e6143fdaed533f19a86c93d67a2fe4fb3318180a180f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405160128152f35b50346102c95760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576117c8612c2a565b6117d0612c4d565b6044359173ffffffffffffffffffffffffffffffffffffffff811680855260026020526040852073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f2054907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821061184d575b505061075a9350613163565b8482106118f35780156118c757331561189b578560409161075a975260026020522073ffffffffffffffffffffffffffffffffffffffff33165f526020528360405f20910390555f80611841565b6024867f94280d6200000000000000000000000000000000000000000000000000000000815280600452fd5b6024867fe602df0500000000000000000000000000000000000000000000000000000000815280600452fd5b60648686847ffb8f41b200000000000000000000000000000000000000000000000000000000835233600452602452604452fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060ff600854166040519015158152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600354604051908152f35b506101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576119d8612c2a565b602435917fffffffff00000000000000000000000000000000000000000000000000000000831690818403610711576044359173ffffffffffffffffffffffffffffffffffffffff83169485840361071157606435956084359560c4359687600f0b9687890361071157610104359860e4358a15158b036107115760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146127a55760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005560ff6008541661274757801590811561273c575b50156126de57611ad390611ac8848d612f44565b9060a435858e612f95565b9c859e95979392949f915073ffffffffffffffffffffffffffffffffffffffff611afc83612cfa565b90549060031b1c169a73ffffffffffffffffffffffffffffffffffffffff611b2386612cfa565b90549060031b1c169c80155f1461236c57505050878a73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169889821480612362575b1561228b57505050863b15610711575f8e976004604051809a81937fd0e30db00000000000000000000000000000000000000000000000000000000083525af1968715612280578f908f908f99612269575b50611c03611c25915b611bfe611be186612d3f565b90549060031b1c611bf187612d57565b90549060031b1c90612dd9565b612dd9565b91611c20611c1087612d3f565b90549060031b1c611bf188612d57565b612d9f565b908d987f00000000000000000000000000000000000000000000000000000000000000009081151580612260575b6121d7575b5050611cf691611cd8611c99611ced93611c83611c7488612d57565b90549060031b1c821015612e30565b611c8c87612d57565b90549060031b1c90612d9f565b611ca286612d3f565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b611ce4611c7487612d57565b611c8c86612d57565b611ca285612d3f565b8b82600f0b1315612179578b84600f0b131561211b57611d7f93611d6782611d3f611d39611d3f96611d2a611d3997613102565b90549060031b1c600f0b6134d7565b91613102565b9091906fffffffffffffffffffffffffffffffff83549160031b928116831b921b1916179055565b611d7084613102565b90549060031b1c600f0b613514565b806120dc575b156120165773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b156120125787809160248d60405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af18015612007579188918c93611fe9575b5081809381925af13d15611fe4573d67ffffffffffffffff8111611fb75760405190611e6460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160183612cb9565b81528760203d92013e5b15611f59577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a0915b611ea3818a612d9f565b73ffffffffffffffffffffffffffffffffffffffff604051931683528a60208401528b604084015260608301526080820152a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015611f28575b50505061049d90604051938493846040919493926060820195825260208201520152565b8280809381938290611f50575b3390f115611f44578080611f04565b604051903d90823e3d90fd5b506108fc611f35565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b611e6e565b611ff69193508290612cb9565b61200357868a915f611e10565b8680fd5b6040513d8a823e3d90fd5b8780fd5b506040517fa9059cbb0000000000000000000000000000000000000000000000000000000087528360045289602452602087604481808a5af19060018851148216156120bb575b6040521561208f577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a091611e99565b602486867f5274afe7000000000000000000000000000000000000000000000000000000008252600452fd5b9060018115166120d357863b15153d1516169061205d565b503d87823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168614611d85565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a20616d6f756e744f7574203c3d20300000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4d53523a20616d6f756e74496e203c3d2030000000000000000000000000006044820152fd5b611ced929a50611c99620f42406121f5611cf69694611cd894612de6565b049b8c612208575b93505050918f611c58565b61225b8d6122276122188a612d57565b91909283548360031b1c612dd9565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b6121fd565b50801515611c53565b612276919e505f90612cb9565b5f9c611c03611bcc565b6040513d5f823e3d90fd5b60209293949596979899505f80809360649373ffffffffffffffffffffffffffffffffffffffff604051987f23b872dd00000000000000000000000000000000000000000000000000000000855216600452306024526044525af19060015f5114821615612341575b6040525f6060521561231557908b95949392918e611c258f611c0390611bd5565b887f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b906001811516612359578a3b15153d151616906122f4565b503d5f823e3d90fd5b5080341015611b7a565b92985090917c01000000000000000000000000000000000000000000000000000000000361253257506124ae576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526020816024818d5afa8015612280578e915f91612477575b50612404906123fe6123ee8a612d3f565b90549060031b1c611bf18b612d57565b90612d9f565b03612419578b958e611c258f611c0390611bd5565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496e636f72726563742070726566756e64696e6720616d6f756e7400000000006044820152fd5b9150506020813d6020116124a6575b8161249360209383612cb9565b8101031261071157518d906124046123dd565b3d9150612486565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f50726566756e64696e672063616e6e6f7420626520757365642077697468206160448201527f206c696d697420707269636500000000000000000000000000000000000000006064820152fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015291506020826024818e5afa918215612280578f905f936126a6575b50602492916125aa916040519160208301528d858301526044820152604481526125a4606482612cb9565b8a613457565b5060208b604051938480927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa8015612280578f925f9161266d575b50906125fa91612d9f565b0361260f578b958e611c258f611c0390611bd5565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e742066756e647300000000000000000000000000006044820152fd5b919250506020813d60201161269e575b8161268a60209383612cb9565b8101031261071157518e91906125fa6125ef565b3d915061267d565b9250506020823d6020116126d6575b816126c260209383612cb9565b81010312610711579051908e6125aa612579565b3d91506126b5565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f737761703a20646561646c696e652065786365656465640000000000000000006044820152fd5b90504211155f611ab4565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346107115760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157612872612c2a565b6024359033156129145773ffffffffffffffffffffffffffffffffffffffff169081156128e857335f52600260205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576040515f6004548060011c90600181168015612a7f575b602083108114612a5257828552908115612a1057506001146129b2575b61049d8361094281850382612cb9565b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b8082106129f6575090915081016020016109426129a2565b9192600181602092548385880101520191019092916129de565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b8401909101915061094290506129a2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691612985565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157604051806020600d54918281520190600d5f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5905f5b818110612b055761049d856108ab81870382612cb9565b8254845260209093019260019283019201612aee565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157600c548082526020820190600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7905f5b818110612b935761049d856108ab81870382612cb9565b8254845260209093019260019283019201612b7c565b60206040818301928281528451809452019201905f5b818110612bcc5750505090565b8251845260209384019390920191600101612bbf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6040810190811067ffffffffffffffff821117612c8c57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612c8c57604052565b600b54811015612d1257600b5f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600f54811015612d1257600f5f5260205f2001905f90565b600c54811015612d1257600c5f5260205f2001905f90565b600d54811015612d1257600d5f5260205f2001905f90565b600654811015612d125760065f5260205f2001905f90565b91908203918211612dac57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b91908201809211612dac57565b81810292918115918404141715612dac57565b8115612e03570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b15612e3757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f62616c616e6365203c2070726f746f636f6c206f7765640000000000000000006044820152fd5b90604051918281549182825260208201905f5260205f20925f905b806001830110612efd57612ed6945491818110612ee9575b10612ed8575b500383612cb9565b565b60801d600f0b81526020015f612ece565b92602060019184600f0b8152019301612ec8565b9160029193506040600191865480600f0b825260801d600f0b6020820152019401920185929391612eb0565b90816060910312610711578051916040602083015192015190565b9190826103e8026103e881048403612dac5781612f6091612dd9565b90815f52600760205260405f2054938415612f7a57505050565b612f859294506133ad565b915f5260076020528160405f2055565b92949394919091612fc1612fa987846133ca565b9050612fb486612d6f565b90549060031b1c9061356a565b905f82600f0b13156130a457612fd8918486613794565b919092612ff78394612fea8197612d6f565b90549060031b1c906133ec565b925f92849880613083575b5088116130255761301561302292612d6f565b90549060031b1c90613c6b565b94565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f737761703a207472616e736665722065786365656473206d61780000000000006044820152fd5b9098506130929193508461341e565b9161309d8385612dd9565b975f613002565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761703a20696e70757420746f6f20736d616c6c20616674657220666565006044820152fd5b90600a54821015612d1257600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b9190918054831015612d12575f52601060205f208360011c019260041b1690565b73ffffffffffffffffffffffffffffffffffffffff1690811561325c5773ffffffffffffffffffffffffffffffffffffffff1691821561323057815f52600160205260405f20548181106131fe57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f52600184520360405f2055845f526001825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff5f541633036132a857565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b600654156132ef576132e590612d87565b90549060031b1c90565b505f90565b905f8091602081519101845af4808061339a575b1561331a575050613317613551565b90565b156133615773ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b3d15613372576040513d5f823e3d90fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b503d1515806133085750813b1515613308565b90611bf16133bd61331793612d87565b90549060031b1c91612d87565b919080156133e6576133df613317918461341e565b8093612d9f565b505f9190565b6134006133f98383613c6b565b928361356a565b90600f0b90600f0b126134105790565b60018101809111612dac5790565b9080156134515761342e91612de6565b620f4240810190818111612dac57620f423f01908111612dac57620f4240900490565b50505f90565b905f809160208151910182855af1808061339a571561331a575050613317613551565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd575b1561071157600f0b90565b506f7fffffffffffffffffffffffffffffff8113156134b2565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b604051903d82523d5f602084013e60203d830101604052565b81156107115777ffffffffffffffffffffffffffffffffffffffffffffffff81116135e2579061359c9160401b612df9565b6fffffffffffffffffffffffffffffffff8111610711576fffffffffffffffffffffffffffffffff166f7fffffffffffffffffffffffffffffff811161071157600f0b90565b60c09181831c8093640100000000821015613787575b6002826201000061368594101561377b575b61010081101561376f575b6010811015613763575b6004811015613758575b1015613750575b8360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b612df9565b926fffffffffffffffffffffffffffffffff8411610711578160801c8402906fffffffffffffffffffffffffffffffff8316850290809460401b90828210613726575b5003928160801b918285106136fd575b60801c036136f2576136ea9203612df9565b905b0161359c565b5050506001906136ec565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906136d8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f6136c8565b600101613630565b91810191811c613629565b6004928301921c61361f565b6008928301921c613615565b6010928301921c61360a565b505060e082811c906135f8565b9193929093600a5480841080613c62575b15613c0457600203613bec576137c36137be600a612e95565b61415f565b946137d25f87600f0b13613cc6565b6137e2600954600f0b9687613e4d565b5f81600f0b1315613bd9576137f681613d2b565b6138328161382d61380889600a613142565b90549060031b1c600f0b61381d87600a613142565b90549060031b1c600f0b90613514565b613e4d565b9085600f0b5f81136139a3575b505f600f83900b1261399557815b67028f5c28f5c28f5c90600f0b13613980576138699085613e4d565b80600f0b915f83131561396a57678000000000000000831361396a57906138c46138e59493926138be6138b8671999999999999999946138b26138ac8280613e4d565b9461347a565b90613e4d565b91613d7b565b90613514565b916138cf8380613e4d565b91600f0b1261394157906138be6138b292613d7b565b9384600f0b965f881315613921576138fe83600a613142565b90549060031b1c600f0b881215613921575f849698126139215750505050509190565b90919293945061393d959650613937600a612e95565b90613ed3565b9091565b61396461395e836138be6139586138b29686613e4d565b94613d7b565b91613dc1565b906134d7565b5050505090919261393d9495613937600a612e95565b50505090919261393d9495613937600a612e95565b61399e82613e8d565b61384d565b6139b08380979397613e4d565b680600000000000000006139d46139c78684613e4d565b926139646138b88861347a565b9160401b60170b05907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082121580613bbf575b1561071157613a1991600f0b906134d7565b9081600f0b1215613b3a57613a4f7fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009188613e07565b600f0b017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613b20575b1561071157600f0b5f8112613b1257805b671999999999999999600f0b90600f0b13613afb578061396461395e613ab783613ac595613e4d565b926138be6139588286613e4d565b5f81600f0b1315613afb57613ada9084613e4d565b9080600f0b82600f0b125f14613af35750935b5f61383f565b949050613aed565b509495929350505061393d9495613937600a612e95565b613b1b81613e8d565b613a8e565b506f7fffffffffffffffffffffffffffffff811315613a7d565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4c4d53523a206c696d69745072696365203c3d2063757272656e74207072696360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152608490fd5b506f7fffffffffffffffffffffffffffffff821315613a07565b5090919261393d9495613937600a612e95565b90919361393d9394600954600f0b613937600a612e95565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4c4d53523a2069647800000000000000000000000000000000000000000000006044820152fd5b508086106137a5565b811561345157600f0b5f8112610711576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116107115760401b81198111610711570190565b15613ccd57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b600f0b801561071157700100000000000000000000000000000000057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b680200000000000000009060401b60170b057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b680300000000000000009060401b60170b057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b90600f0b9081156107115760401b60170b057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081600f0b14610711575f03600f0b90565b8051821015612d125760209160051b010190565b95949093613f1790939293613f34613f2f613f01839a613ef28a61415f565b9061382d5f83600f0b13613cc6565b9661382d613f0e89613d2b565b9586928b613ebf565b51600f0b613f25898c613ebf565b51600f0b90613514565b614194565b9280600f0b5f81136140a1575b505090613f4d91613e4d565b6820000000000000000081600f0b1361401d57613f2f613f6c91613e8d565b600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580614003575b1561071157613fbf91613fba91600f0b90613e4d565b61347a565b925f84600f0b1315613fef5750506138b2613fd9926141f1565b905f82600f0b1315613fe757565b5f9250829150565b909150613ffc9250613ebf565b51600f0b90565b506f7fffffffffffffffffffffffffffffff811315613fa4565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4c4d53523a20612f6220746f6f206c617267652028776f756c64206f7665726660448201527f6c6f7720657870290000000000000000000000000000000000000000000000006064820152fd5b84600f9a939a0b1215613b3a57836140b891613e07565b5f81600f0b1315614101576140cf6140d5916141f1565b86613e4d565b9780600f0b89600f0b125f146140f5575050613f4d90875b90915f613f41565b613f4d929198506140ed565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4d53523a20726174696f3c3d300000000000000000000000000000000000006044820152fd5b5f90815b815183101561418e5761418660019161417c8585613ebf565b51600f0b906134d7565b920191614163565b91505090565b600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000081126132ef57700171547652b82fe1777d0ffda0d23a7d12613317910260801d600f0b61431e565b600f0b5f811315610711575f908068010000000000000000821215614311575b806401000000006002921215614305575b620100008112156142f9575b6101008112156142ed575b60108112156142e1575b60048112156142d6575b12156142cc575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f83136142b057506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d90565b8002908160ff1c9182607f011c918302019160011d919061428b565b9060010190614254565b92810192811d61424d565b6004938401931d614243565b6008938401931d614239565b6010938401931d61422e565b6020938401931d614222565b506040915080821d614211565b80600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc000000000000000008112613451576f80000000000000000000000000000000915f6780000000000000008216600f0b13614f1a575b5f6740000000000000008216600f0b13614efd575b5f6720000000000000008216600f0b13614ee0575b5f6710000000000000008216600f0b13614ec3575b5f6708000000000000008216600f0b13614ea6575b5f6704000000000000008216600f0b13614e89575b5f6702000000000000008216600f0b13614e6c575b5f6701000000000000008216600f0b13614e4f575b5f66800000000000008216600f0b13614e32575b5f66400000000000008216600f0b13614e15575b5f66200000000000008216600f0b13614df8575b5f66100000000000008216600f0b13614ddb575b5f66080000000000008216600f0b13614dbe575b5f66040000000000008216600f0b13614da1575b5f66020000000000008216600f0b13614d84575b5f66010000000000008216600f0b13614d67575b5f658000000000008216600f0b13614d4a575b5f654000000000008216600f0b13614d2d575b5f652000000000008216600f0b13614d10575b5f651000000000008216600f0b13614cf3575b5f650800000000008216600f0b13614cd6575b5f650400000000008216600f0b13614cb9575b5f650200000000008216600f0b13614c9c575b5f650100000000008216600f0b13614c7f575b5f6480000000008216600f0b13614c62575b5f6440000000008216600f0b13614c45575b5f6420000000008216600f0b13614c28575b5f6410000000008216600f0b13614c0b575b5f6408000000008216600f0b13614bee575b5f6404000000008216600f0b13614bd1575b5f6402000000008216600f0b13614bb4575b5f6401000000008216600f0b13614b97575b5f63800000008216600f0b13614b7a575b5f63400000008216600f0b13614b5d575b5f63200000008216600f0b13614b40575b5f63100000008216600f0b13614b23575b5f63080000008216600f0b13614b06575b5f63040000008216600f0b13614ae9575b5f63020000008216600f0b13614acc575b5f63010000008216600f0b13614aaf575b5f628000008216600f0b13614a92575b5f624000008216600f0b13614a75575b5f622000008216600f0b13614a58575b5f621000008216600f0b13614a3b575b5f620800008216600f0b13614a1e575b5f620400008216600f0b13614a01575b5f620200008216600f0b136149e4575b5f620100008216600f0b136149c7575b5f6180008216600f0b136149aa575b5f6140008216600f0b1361498d575b5f6120008216600f0b13614970575b5f6110008216600f0b13614953575b5f6108008216600f0b13614936575b5f6104008216600f0b13614919575b5f6102008216600f0b136148fc575b5f6101008216600f0b136148df575b5f60808216600f0b136148c2575b5f60408216600f0b136148a5575b5f60208216600f0b13614888575b5f60108216600f0b1361486b575b5f60088216600f0b1361484e575b5f60048216600f0b13614831575b5f60028216600f0b13614813575b60015f9116600f0b136147f6575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161071157600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c906147cc565b7001000000000000000162e42fefa39ef35890920260801c916147be565b9170010000000000000002c5c85fdf473de6b20260801c916147b0565b91700100000000000000058b90bfbe8e7bcd6d0260801c916147a2565b917001000000000000000b17217f7d1cf79afa0260801c91614794565b91700100000000000000162e42fefa39ef366f0260801c91614786565b917001000000000000002c5c85fdf473de6eca0260801c91614778565b9170010000000000000058b90bfbe8e7bce5440260801c9161476a565b91700100000000000000b17217f7d1cf79e9490260801c9161475c565b9170010000000000000162e42fefa39ef44d910260801c9161474d565b91700100000000000002c5c85fdf473dea871f0260801c9161473e565b917001000000000000058b90bfbe8e7bdcbe2e0260801c9161472f565b9170010000000000000b17217f7d1cf7d83c1a0260801c91614720565b917001000000000000162e42fefa39f02b772c0260801c91614711565b9170010000000000002c5c85fdf473e242ea380260801c91614702565b91700100000000000058b90bfbe8e7cc35c3f00260801c916146f3565b917001000000000000b17217f7d1cfb72b45e10260801c916146e4565b91700100000000000162e42fefa39fe95583c20260801c916146d4565b917001000000000002c5c85fdf4741bea6e77e0260801c916146c4565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c916146b4565b91700100000000000b17217f7d1d351a389d400260801c916146a4565b9170010000000000162e42fefa3ae53369388c0260801c91614694565b91700100000000002c5c85fdf477b662b269450260801c91614684565b917001000000000058b90bfbe8f71cb4e4b33d0260801c91614674565b9170010000000000b17217f7d20cf927c8e94c0260801c91614664565b917001000000000162e42fefa494f1478fde050260801c91614653565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c91614642565b91700100000000058b90bfbe9ddbac5e109cce0260801c91614631565b917001000000000b17217f7d5a7716bba4a9ae0260801c91614620565b91700100000000162e42fefb2fed257559bdaa0260801c9161460f565b917001000000002c5c85fdf84bd62ae30a74cc0260801c916145fe565b9170010000000058b90bfbf8479bd5a81b51ad0260801c916145ed565b91700100000000b17217f80f4ef5aadda455540260801c916145dc565b9170010000000162e42ff0999ce3541b9fffcf0260801c916145ca565b91700100000002c5c85fe31f35a6a30da1be500260801c916145b8565b917001000000058b90bfcdee5acd3c1cedc8230260801c916145a6565b9170010000000b17217fba9c739aa5819f44f90260801c91614594565b917001000000162e42fff037df38aa2b219f060260801c91614582565b9170010000002c5c8601cc6b9e94213c72737a0260801c91614570565b91700100000058b90c0b48c6be5df846c5b2ef0260801c9161455e565b917001000000b1721835514b86e6d96efd1bfe0260801c9161454c565b91700100000162e430e5a18f6119e3c02282a50260801c91614539565b917001000002c5c863b73f016468f6bac5ca2b0260801c91614526565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91614513565b91700100000b1721bcfc99d9f890ea069117630260801c91614500565b9170010000162e43f4f831060e02d839a9d16d0260801c916144ed565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c916144da565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c916144c7565b9170010000b17255775c040618bf4a4ade83fc0260801c916144b4565b917001000162e525ee054754457d59952920260260801c916144a0565b9170010002c5cc37da9491d0985c348c68e7b30260801c9161448c565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91614478565b917001000b175effdc76ba38e31671ca9397250260801c91614464565b91700100162f3904051fa128bca9c55c31e5df0260801c91614450565b917001002c605e2e8cec506d21bfc89a23a00f0260801c9161443c565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c91614428565b91700100b1afa5abcbed6129ab13ec11dc95430260801c91614414565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c916143ff565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c916143ea565b917001059b0d31585743ae7c548eb68ca417fd0260801c916143d5565b9170010b5586cf9890f6298b92b71842a983630260801c916143c0565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c916143ab565b917001306fe0a31b7152de8d5a46305c85edec0260801c91614396565b6fb504f333f9de6484597d89b3754abe9f925061438156fea264697066735822122043bf74af2633e25ab2330d593dbfd1d52cff0bf909bfe29106cc479fea7a2a7864736f6c634300081e0033","sourceMap":"493:997:49:-:0;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;493:997:49;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;493:997:49;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;493:997:49;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;493:997:49;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;493:997:49;;;;;;;;;;;-1:-1:-1;;;;;493:997:49;;;;;;;;;;-1:-1:-1;;;;;493:997:49;;;;;;;1505:66:29;493:997:49;;1149:24:50;-1:-1:-1;;;;;493:997:49;1018:26:44;;1014:95;;-1:-1:-1;493:997:49;;-1:-1:-1;;;;;;493:997:49;;;;;;-1:-1:-1;;;;;493:997:49;;1104:49:45;;-1:-1:-1;1104:49:45;493:997:49;;;-1:-1:-1;;;;;493:997:49;;;;882:13:33;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;493:997:49;;;;;;;;;;;;;;;;;;;882:13:33;493:997:49;;;;;-1:-1:-1;;;;;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;6422:18:48;493:997:49;;;;;;-1:-1:-1;;;;;493:997:49;;;;;;;;;6474:17:48;493:997:49;;6474:17:48;493:997:49;;;;;;;;6474:17:48;-1:-1:-1;493:997:49;;-1:-1:-1;493:997:49;-1:-1:-1;493:997:49;;;;;;6501:14:48;;;;493:997:49;6501:14:48;493:997:49;;;;6533:30:48;493:997:49;;6645:27:48;493:997:49;;6645:27:48;:::i;:::-;493:997:49;;;-1:-1:-1;;;;;493:997:49;;;;;;;;;;;6637:35:48;493:997:49;;6637:35:48;493:997:49;;;;;;;;;6637:35:48;-1:-1:-1;493:997:49;;-1:-1:-1;493:997:49;-1:-1:-1;493:997:49;;;;;;6687:13:48;;;;-1:-1:-1;6720:3:48;493:997:49;;6702:16:48;;;;;6792:6;6781:8;;;;:::i;:::-;493:997:49;6781:17:48;493:997:49;;;6843:8:48;;;;:::i;:::-;493:997:49;;6637:35:48;493:997:49;;;;;;;;6637:35:48;-1:-1:-1;493:997:49;;;-1:-1:-1;493:997:49;;;;6687:13:48;;493:997:49;;;;-1:-1:-1;493:997:49;;882:13:33;493:997:49;;-1:-1:-1;493:997:49;;;;-1:-1:-1;;;493:997:49;;;882:13:33;493:997:49;;;;;;;;-1:-1:-1;;;493:997:49;;;;;;;6702:16:48;;;6792:6;6879:21;;493:997:49;;;;6936:28:48;7000:7;6982:25;;493:997:49;;;7145:20:48;;:57;;;;6682:180;493:997:49;;;;7213:34:48;7257:40;493:997:49;;-1:-1:-1;;;;;;493:997:49;-1:-1:-1;;;;;493:997:49;;;;;;;;;;;7307:21:48;493:997:49;7338:21:48;493:997:49;;;-1:-1:-1;7477:5:48;;;;;;7702:16;;;;:::i;:::-;493:997:49;;;-1:-1:-1;;;;;493:997:49;;;;;;;;;;;7693:25:48;493:997:49;;7693:25:48;493:997:49;;;;;;7460:126:48;493:997:49;;7693:25:48;-1:-1:-1;493:997:49;;-1:-1:-1;493:997:49;-1:-1:-1;493:997:49;;;;;;7808:16:48;;;;:::i;:::-;493:997:49;;;-1:-1:-1;;;;;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;493:997:49;;-1:-1:-1;493:997:49;-1:-1:-1;493:997:49;;;;;;7854:16:48;;;:::i;:::-;493:997:49;;;-1:-1:-1;;;;;493:997:49;;;;;;;;;;;7834:36:48;493:997:49;;7834:36:48;493:997:49;;;;;;;;;;7834:36:48;-1:-1:-1;493:997:49;;-1:-1:-1;493:997:49;;-1:-1:-1;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7834:36:48;-1:-1:-1;493:997:49;;;-1:-1:-1;493:997:49;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;493:997:49;;882:13:33;493:997:49;;-1:-1:-1;493:997:49;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;493:997:49;;;-1:-1:-1;493:997:49;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7693:25:48;-1:-1:-1;493:997:49;;;-1:-1:-1;493:997:49;;;;;;;:::i;:::-;;;;7465:10:48;493:997:49;;;;;;;;;-1:-1:-1;;;;;493:997:49;7527:10:48;;;;:::i;:::-;493:997:49;;-1:-1:-1;493:997:49;7499:27:48;493:997:49;;;;-1:-1:-1;493:997:49;;7465:10:48;;493:997:49;;;;-1:-1:-1;493:997:49;;882:13:33;493:997:49;;-1:-1:-1;493:997:49;;-1:-1:-1;493:997:49;;7145:57:48;-1:-1:-1;;;;;;493:997:49;;7169:33:48;;7145:57;;493:997:49;;;-1:-1:-1;;;493:997:49;;;882:13:33;493:997:49;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;493:997:49;;;882:13:33;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6637:35:48;-1:-1:-1;493:997:49;;;-1:-1:-1;493:997:49;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;493:997:49;;;882:13:33;493:997:49;;;;;;;;-1:-1:-1;;;493:997:49;;;;;;;;;;-1:-1:-1;;;;;493:997:49;;;;;;;;;;;;;;;6474:17:48;-1:-1:-1;493:997:49;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;493:997:49;;;882:13:33;493:997:49;;;;;;;;;;;;;;;;;;;;-1:-1:-1;493:997:49;;;;;;-1:-1:-1;493:997:49;;;;;;;-1:-1:-1;;;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;493:997:49;;-1:-1:-1;493:997:49;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;493:997:49;;;;;;;;-1:-1:-1;493:997:49;;882:13:33;493:997:49;;-1:-1:-1;493:997:49;;;;;;;;;;;;-1:-1:-1;493:997:49;;;;;882:13:33;-1:-1:-1;493:997:49;;;;;;;-1:-1:-1;;;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;;;882:13:33;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;882:13:33;-1:-1:-1;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;1014:95:44;1067:31;;;-1:-1:-1;1067:31:44;-1:-1:-1;1067:31:44;493:997:49;;-1:-1:-1;1067:31:44;493:997:49;;;;;;;;;;;;;;;;-1:-1:-1;;;;;493:997:49;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;493:997:49;;;-1:-1:-1;;;;;493:997:49;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;493:997:49;;;;;;:::o;:::-;;;;;;;;;;;;-1:-1:-1;;;;;493:997:49;;;;;;;;-1:-1:-1;;493:997:49;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;493:997:49;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;493:997:49;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c908163017504b614612b1b57508063017cf66114612a8957806306fdde0314612940578063095ea7b31461283b5780630d246214146127cd5780630eeee627146119a457806318160ddd146119685780631f3a0e411461192757806323b872dd14611790578063313ce5671461175657806331596a6a146116fd57806341c0e1b514611667578063476e44b614611519578063491e7998146113f15780635cffe9de146112115780636863f5bc146110805780636b4082d1146110275780636b7b911214610fa55780636bba3f2f14610f495780636d8d0ff314610e8e5780636ff97f1d14610d8e57806370a0823114610d2b578063715018a614610c8f57806379a68d5314610b6b5780638da5cb5b14610b1a5780638e499bcf14610ade578063939f5ea414610a965780639517606614610a2757806395d89b41146108cd5780639af1d35a1461082e578063a1af5b9a14610765578063a9059cbb14610715578063b3f1c93d14610648578063cb717f3a146104f3578063cce516b7146104a1578063d516b8c614610416578063dd62ed3e1461039d578063e4b50cb81461033b578063f0d1ae4f146102cc5763f2fde38b0361000f57346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610228612c2a565b610230613288565b16801561029d5773ffffffffffffffffffffffffffffffffffffffff8254827fffffffffffffffffffffffff00000000000000000000000000000000000000008216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b6024827f1e4fbdf700000000000000000000000000000000000000000000000000000000815280600452fd5b80fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff61038d600435612cfa565b90549060031b1c16604051908152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff60406103ec612c2a565b92826103f6612c4d565b9416815260026020522091165f52602052602060405f2054604051908152f35b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043590602435916064359182600f0b83036102c95761049d61047985858561046f83826133ad565b9260443591612f95565b92505050604093919351938493846040919493926060820195825260208201520152565b0390f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff60105416604051908152f35b5060a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761049d61062b61061c61052f612c2a565b610537612c4d565b60443573ffffffffffffffffffffffffffffffffffffffff610558826132d4565b9281604051957f3dd3c8050000000000000000000000000000000000000000000000000000000060208801521660248601521660448401526064830152606435608483015260843560a483015260c48201527f000000000000000000000000000000000000000000000000000000000000000060e482015260e481526105e061010482612cb9565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166132f4565b60208082518301019101612f29565b604080519384526020840192909252908201529081906060820190565b5060807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f161067e612c2a565b73ffffffffffffffffffffffffffffffffffffffff61069b612c4d565b81604051937fb3f1c93d00000000000000000000000000000000000000000000000000000000602086015216602484015216604482015260443560648201526064356084820152608481526105e060a482612cb9565b602081519181808201938492010103126107115760209051604051908152f35b5f80fd5b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761075a610750612c2a565b6024359033613163565b602060405160018152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761082a73ffffffffffffffffffffffffffffffffffffffff60105416604051907f2a54db010000000000000000000000000000000000000000000000000000000060208301526024820152602481526107ee604482612cb9565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166132f4565b5080f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760405180916020600654928381520191600682527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f915b8181106108b75761049d856108ab81870382612cb9565b60405191829182612ba9565b8254845260209093019260019283019201610894565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576040519080600554908160011c91600181168015610a1d575b6020841081146109f0578386529081156109ab575060011461094e575b61049d8461094281860382612cb9565b60405191829182612be2565b600581527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0939250905b8082106109915750909150810160200161094282610932565b919260018160209254838588010152019101909291610978565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208087019190915292151560051b850190920192506109429150839050610932565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b92607f1692610915565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020610ad66024356004356133ad565b604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600b54604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b5060e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610b9e612c2a565b90610ba7612c4d565b906044356064356084359182600f0b809303610c8b5760c435938415158095036102c95761049d61062b61061c89898989898973ffffffffffffffffffffffffffffffffffffffff610bf98383612f44565b9581604051987f8a3d858d0000000000000000000000000000000000000000000000000000000060208b01521660248901521660448701526064860152608485015260a484015260a43560c484015260e48301526101048201527f000000000000000000000000000000000000000000000000000000000000000061012482015261012481526107ee61014482612cb9565b8380fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610cc6613288565b8073ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604060209173ffffffffffffffffffffffffffffffffffffffff610d7d612c2a565b168152600183522054604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604051806020600b5491828152018091600b85527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db990855b818110610e625750505082610e0b910383612cb9565b604051928392602084019060208552518091526040840192915b818110610e33575050500390f35b825173ffffffffffffffffffffffffffffffffffffffff16845285945060209384019390920191600101610e25565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610df5565b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f1610ec4612c2a565b73ffffffffffffffffffffffffffffffffffffffff604051917fc5eabfb900000000000000000000000000000000000000000000000000000000602084015216602482015260243560448201527f0000000000000000000000000000000000000000000000000000000000000000600f0b6064820152606481526105e0608482612cb9565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f0000000000000000000000000000000000000000000000000000000000000000600f0b8152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610ff2612c2a565b610ffa613288565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000601054161760105580f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c95760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576110b8612c2a565b6110c0612c4d565b90608435801515809103610c8b5773ffffffffffffffffffffffffffffffffffffffff6111429381604051947f6863f5bc0000000000000000000000000000000000000000000000000000000060208701521660248501521660448301526044356064830152606435608483015260a482015260a481526105e060c482612cb9565b805181019060208181840193031261120d5760208101519067ffffffffffffffff8211610c8b57019181603f840112156102c95760208301519267ffffffffffffffff84116111e0578360051b91604051946111a16020850187612cb9565b855260208080870194840101019384116102c95750604001905b8282106111d0576040518061049d8682612ba9565b81518152602091820191016111bb565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8280fd5b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043573ffffffffffffffffffffffffffffffffffffffff81168091036113e95761126a612c4d565b60643567ffffffffffffffff8111610c8b5736602382011215610c8b5780600401359067ffffffffffffffff82116113ed5736602483830101116113ed576113c3937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f846107ee9560246101049673ffffffffffffffffffffffffffffffffffffffff6040519a8b987fe49cd4750000000000000000000000000000000000000000000000000000000060208b0152848a0152166044880152604435606488015260c060848801528260e48801520186860137888582860101527f000000000000000000000000000000000000000000000000000000000000000060a48501527f000000000000000000000000000000000000000000000000000000000000000060c48501520116810103017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612cb9565b6020818051810103126113e957602001518015158091036113e957602090604051908152f35b5080fd5b8480fd5b50346102c95760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957611429612c2a565b611431612c4d565b906064359160a4358015158091036113ed578373ffffffffffffffffffffffffffffffffffffffff6114656114f4966132d4565b9381604051967f8d01fa440000000000000000000000000000000000000000000000000000000060208901521660248701521660448501526044356064850152608484015260843560a484015260c483015260e48201527f000000000000000000000000000000000000000000000000000000000000000061010482015261010481526105e061012482612cb9565b6040818051810103126113e95780604060208193015191015182519182526020820152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576060602060405161155881612c70565b83815201526040519061156a82612c70565b600954600f0b825260405191600a548084528360208101600a8552602085209285905b80600183011061163b576115b6945491818110611627575b10611616575b509493940383612cb9565b6020810191825260405192839260208452606084019251600f0b6020850152519160408085015282518091526020608085019301915b8181106115fa575050500390f35b8251600f0b8452859450602093840193909201916001016115ec565b60801d600f0b81526020015f6115ab565b92602060019184600f0b81520193016115a5565b9160029193506040600191865480600f0b825260801d600f0b602082015201940192018692939161158d565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761169e613288565b60085460ff8116156116ae575080f35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001176008557f0f8eeedbc400fd6686703559f58d1e6143fdaed533f19a86c93d67a2fe4fb3318180a180f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405160128152f35b50346102c95760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576117c8612c2a565b6117d0612c4d565b6044359173ffffffffffffffffffffffffffffffffffffffff811680855260026020526040852073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f2054907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821061184d575b505061075a9350613163565b8482106118f35780156118c757331561189b578560409161075a975260026020522073ffffffffffffffffffffffffffffffffffffffff33165f526020528360405f20910390555f80611841565b6024867f94280d6200000000000000000000000000000000000000000000000000000000815280600452fd5b6024867fe602df0500000000000000000000000000000000000000000000000000000000815280600452fd5b60648686847ffb8f41b200000000000000000000000000000000000000000000000000000000835233600452602452604452fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060ff600854166040519015158152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600354604051908152f35b506101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576119d8612c2a565b602435917fffffffff00000000000000000000000000000000000000000000000000000000831690818403610711576044359173ffffffffffffffffffffffffffffffffffffffff83169485840361071157606435956084359560c4359687600f0b9687890361071157610104359860e4358a15158b036107115760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146127a55760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005560ff6008541661274757801590811561273c575b50156126de57611ad390611ac8848d612f44565b9060a435858e612f95565b9c859e95979392949f915073ffffffffffffffffffffffffffffffffffffffff611afc83612cfa565b90549060031b1c169a73ffffffffffffffffffffffffffffffffffffffff611b2386612cfa565b90549060031b1c169c80155f1461236c57505050878a73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169889821480612362575b1561228b57505050863b15610711575f8e976004604051809a81937fd0e30db00000000000000000000000000000000000000000000000000000000083525af1968715612280578f908f908f99612269575b50611c03611c25915b611bfe611be186612d3f565b90549060031b1c611bf187612d57565b90549060031b1c90612dd9565b612dd9565b91611c20611c1087612d3f565b90549060031b1c611bf188612d57565b612d9f565b908d987f00000000000000000000000000000000000000000000000000000000000000009081151580612260575b6121d7575b5050611cf691611cd8611c99611ced93611c83611c7488612d57565b90549060031b1c821015612e30565b611c8c87612d57565b90549060031b1c90612d9f565b611ca286612d3f565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b611ce4611c7487612d57565b611c8c86612d57565b611ca285612d3f565b8b82600f0b1315612179578b84600f0b131561211b57611d7f93611d6782611d3f611d39611d3f96611d2a611d3997613102565b90549060031b1c600f0b6134d7565b91613102565b9091906fffffffffffffffffffffffffffffffff83549160031b928116831b921b1916179055565b611d7084613102565b90549060031b1c600f0b613514565b806120dc575b156120165773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b156120125787809160248d60405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af18015612007579188918c93611fe9575b5081809381925af13d15611fe4573d67ffffffffffffffff8111611fb75760405190611e6460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160183612cb9565b81528760203d92013e5b15611f59577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a0915b611ea3818a612d9f565b73ffffffffffffffffffffffffffffffffffffffff604051931683528a60208401528b604084015260608301526080820152a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015611f28575b50505061049d90604051938493846040919493926060820195825260208201520152565b8280809381938290611f50575b3390f115611f44578080611f04565b604051903d90823e3d90fd5b506108fc611f35565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b611e6e565b611ff69193508290612cb9565b61200357868a915f611e10565b8680fd5b6040513d8a823e3d90fd5b8780fd5b506040517fa9059cbb0000000000000000000000000000000000000000000000000000000087528360045289602452602087604481808a5af19060018851148216156120bb575b6040521561208f577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a091611e99565b602486867f5274afe7000000000000000000000000000000000000000000000000000000008252600452fd5b9060018115166120d357863b15153d1516169061205d565b503d87823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168614611d85565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a20616d6f756e744f7574203c3d20300000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4d53523a20616d6f756e74496e203c3d2030000000000000000000000000006044820152fd5b611ced929a50611c99620f42406121f5611cf69694611cd894612de6565b049b8c612208575b93505050918f611c58565b61225b8d6122276122188a612d57565b91909283548360031b1c612dd9565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b6121fd565b50801515611c53565b612276919e505f90612cb9565b5f9c611c03611bcc565b6040513d5f823e3d90fd5b60209293949596979899505f80809360649373ffffffffffffffffffffffffffffffffffffffff604051987f23b872dd00000000000000000000000000000000000000000000000000000000855216600452306024526044525af19060015f5114821615612341575b6040525f6060521561231557908b95949392918e611c258f611c0390611bd5565b887f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b906001811516612359578a3b15153d151616906122f4565b503d5f823e3d90fd5b5080341015611b7a565b92985090917c01000000000000000000000000000000000000000000000000000000000361253257506124ae576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526020816024818d5afa8015612280578e915f91612477575b50612404906123fe6123ee8a612d3f565b90549060031b1c611bf18b612d57565b90612d9f565b03612419578b958e611c258f611c0390611bd5565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496e636f72726563742070726566756e64696e6720616d6f756e7400000000006044820152fd5b9150506020813d6020116124a6575b8161249360209383612cb9565b8101031261071157518d906124046123dd565b3d9150612486565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f50726566756e64696e672063616e6e6f7420626520757365642077697468206160448201527f206c696d697420707269636500000000000000000000000000000000000000006064820152fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015291506020826024818e5afa918215612280578f905f936126a6575b50602492916125aa916040519160208301528d858301526044820152604481526125a4606482612cb9565b8a613457565b5060208b604051938480927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa8015612280578f925f9161266d575b50906125fa91612d9f565b0361260f578b958e611c258f611c0390611bd5565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e742066756e647300000000000000000000000000006044820152fd5b919250506020813d60201161269e575b8161268a60209383612cb9565b8101031261071157518e91906125fa6125ef565b3d915061267d565b9250506020823d6020116126d6575b816126c260209383612cb9565b81010312610711579051908e6125aa612579565b3d91506126b5565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f737761703a20646561646c696e652065786365656465640000000000000000006044820152fd5b90504211155f611ab4565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346107115760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157612872612c2a565b6024359033156129145773ffffffffffffffffffffffffffffffffffffffff169081156128e857335f52600260205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576040515f6004548060011c90600181168015612a7f575b602083108114612a5257828552908115612a1057506001146129b2575b61049d8361094281850382612cb9565b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b8082106129f6575090915081016020016109426129a2565b9192600181602092548385880101520191019092916129de565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b8401909101915061094290506129a2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691612985565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157604051806020600d54918281520190600d5f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5905f5b818110612b055761049d856108ab81870382612cb9565b8254845260209093019260019283019201612aee565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157600c548082526020820190600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7905f5b818110612b935761049d856108ab81870382612cb9565b8254845260209093019260019283019201612b7c565b60206040818301928281528451809452019201905f5b818110612bcc5750505090565b8251845260209384019390920191600101612bbf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6040810190811067ffffffffffffffff821117612c8c57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612c8c57604052565b600b54811015612d1257600b5f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600f54811015612d1257600f5f5260205f2001905f90565b600c54811015612d1257600c5f5260205f2001905f90565b600d54811015612d1257600d5f5260205f2001905f90565b600654811015612d125760065f5260205f2001905f90565b91908203918211612dac57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b91908201809211612dac57565b81810292918115918404141715612dac57565b8115612e03570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b15612e3757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f62616c616e6365203c2070726f746f636f6c206f7765640000000000000000006044820152fd5b90604051918281549182825260208201905f5260205f20925f905b806001830110612efd57612ed6945491818110612ee9575b10612ed8575b500383612cb9565b565b60801d600f0b81526020015f612ece565b92602060019184600f0b8152019301612ec8565b9160029193506040600191865480600f0b825260801d600f0b6020820152019401920185929391612eb0565b90816060910312610711578051916040602083015192015190565b9190826103e8026103e881048403612dac5781612f6091612dd9565b90815f52600760205260405f2054938415612f7a57505050565b612f859294506133ad565b915f5260076020528160405f2055565b92949394919091612fc1612fa987846133ca565b9050612fb486612d6f565b90549060031b1c9061356a565b905f82600f0b13156130a457612fd8918486613794565b919092612ff78394612fea8197612d6f565b90549060031b1c906133ec565b925f92849880613083575b5088116130255761301561302292612d6f565b90549060031b1c90613c6b565b94565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f737761703a207472616e736665722065786365656473206d61780000000000006044820152fd5b9098506130929193508461341e565b9161309d8385612dd9565b975f613002565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761703a20696e70757420746f6f20736d616c6c20616674657220666565006044820152fd5b90600a54821015612d1257600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b9190918054831015612d12575f52601060205f208360011c019260041b1690565b73ffffffffffffffffffffffffffffffffffffffff1690811561325c5773ffffffffffffffffffffffffffffffffffffffff1691821561323057815f52600160205260405f20548181106131fe57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f52600184520360405f2055845f526001825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff5f541633036132a857565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b600654156132ef576132e590612d87565b90549060031b1c90565b505f90565b905f8091602081519101845af4808061339a575b1561331a575050613317613551565b90565b156133615773ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b3d15613372576040513d5f823e3d90fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b503d1515806133085750813b1515613308565b90611bf16133bd61331793612d87565b90549060031b1c91612d87565b919080156133e6576133df613317918461341e565b8093612d9f565b505f9190565b6134006133f98383613c6b565b928361356a565b90600f0b90600f0b126134105790565b60018101809111612dac5790565b9080156134515761342e91612de6565b620f4240810190818111612dac57620f423f01908111612dac57620f4240900490565b50505f90565b905f809160208151910182855af1808061339a571561331a575050613317613551565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd575b1561071157600f0b90565b506f7fffffffffffffffffffffffffffffff8113156134b2565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b604051903d82523d5f602084013e60203d830101604052565b81156107115777ffffffffffffffffffffffffffffffffffffffffffffffff81116135e2579061359c9160401b612df9565b6fffffffffffffffffffffffffffffffff8111610711576fffffffffffffffffffffffffffffffff166f7fffffffffffffffffffffffffffffff811161071157600f0b90565b60c09181831c8093640100000000821015613787575b6002826201000061368594101561377b575b61010081101561376f575b6010811015613763575b6004811015613758575b1015613750575b8360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b612df9565b926fffffffffffffffffffffffffffffffff8411610711578160801c8402906fffffffffffffffffffffffffffffffff8316850290809460401b90828210613726575b5003928160801b918285106136fd575b60801c036136f2576136ea9203612df9565b905b0161359c565b5050506001906136ec565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906136d8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f6136c8565b600101613630565b91810191811c613629565b6004928301921c61361f565b6008928301921c613615565b6010928301921c61360a565b505060e082811c906135f8565b9193929093600a5480841080613c62575b15613c0457600203613bec576137c36137be600a612e95565b61415f565b946137d25f87600f0b13613cc6565b6137e2600954600f0b9687613e4d565b5f81600f0b1315613bd9576137f681613d2b565b6138328161382d61380889600a613142565b90549060031b1c600f0b61381d87600a613142565b90549060031b1c600f0b90613514565b613e4d565b9085600f0b5f81136139a3575b505f600f83900b1261399557815b67028f5c28f5c28f5c90600f0b13613980576138699085613e4d565b80600f0b915f83131561396a57678000000000000000831361396a57906138c46138e59493926138be6138b8671999999999999999946138b26138ac8280613e4d565b9461347a565b90613e4d565b91613d7b565b90613514565b916138cf8380613e4d565b91600f0b1261394157906138be6138b292613d7b565b9384600f0b965f881315613921576138fe83600a613142565b90549060031b1c600f0b881215613921575f849698126139215750505050509190565b90919293945061393d959650613937600a612e95565b90613ed3565b9091565b61396461395e836138be6139586138b29686613e4d565b94613d7b565b91613dc1565b906134d7565b5050505090919261393d9495613937600a612e95565b50505090919261393d9495613937600a612e95565b61399e82613e8d565b61384d565b6139b08380979397613e4d565b680600000000000000006139d46139c78684613e4d565b926139646138b88861347a565b9160401b60170b05907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082121580613bbf575b1561071157613a1991600f0b906134d7565b9081600f0b1215613b3a57613a4f7fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009188613e07565b600f0b017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613b20575b1561071157600f0b5f8112613b1257805b671999999999999999600f0b90600f0b13613afb578061396461395e613ab783613ac595613e4d565b926138be6139588286613e4d565b5f81600f0b1315613afb57613ada9084613e4d565b9080600f0b82600f0b125f14613af35750935b5f61383f565b949050613aed565b509495929350505061393d9495613937600a612e95565b613b1b81613e8d565b613a8e565b506f7fffffffffffffffffffffffffffffff811315613a7d565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4c4d53523a206c696d69745072696365203c3d2063757272656e74207072696360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152608490fd5b506f7fffffffffffffffffffffffffffffff821315613a07565b5090919261393d9495613937600a612e95565b90919361393d9394600954600f0b613937600a612e95565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4c4d53523a2069647800000000000000000000000000000000000000000000006044820152fd5b508086106137a5565b811561345157600f0b5f8112610711576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116107115760401b81198111610711570190565b15613ccd57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b600f0b801561071157700100000000000000000000000000000000057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b680200000000000000009060401b60170b057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b680300000000000000009060401b60170b057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b90600f0b9081156107115760401b60170b057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081600f0b14610711575f03600f0b90565b8051821015612d125760209160051b010190565b95949093613f1790939293613f34613f2f613f01839a613ef28a61415f565b9061382d5f83600f0b13613cc6565b9661382d613f0e89613d2b565b9586928b613ebf565b51600f0b613f25898c613ebf565b51600f0b90613514565b614194565b9280600f0b5f81136140a1575b505090613f4d91613e4d565b6820000000000000000081600f0b1361401d57613f2f613f6c91613e8d565b600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580614003575b1561071157613fbf91613fba91600f0b90613e4d565b61347a565b925f84600f0b1315613fef5750506138b2613fd9926141f1565b905f82600f0b1315613fe757565b5f9250829150565b909150613ffc9250613ebf565b51600f0b90565b506f7fffffffffffffffffffffffffffffff811315613fa4565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4c4d53523a20612f6220746f6f206c617267652028776f756c64206f7665726660448201527f6c6f7720657870290000000000000000000000000000000000000000000000006064820152fd5b84600f9a939a0b1215613b3a57836140b891613e07565b5f81600f0b1315614101576140cf6140d5916141f1565b86613e4d565b9780600f0b89600f0b125f146140f5575050613f4d90875b90915f613f41565b613f4d929198506140ed565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4d53523a20726174696f3c3d300000000000000000000000000000000000006044820152fd5b5f90815b815183101561418e5761418660019161417c8585613ebf565b51600f0b906134d7565b920191614163565b91505090565b600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000081126132ef57700171547652b82fe1777d0ffda0d23a7d12613317910260801d600f0b61431e565b600f0b5f811315610711575f908068010000000000000000821215614311575b806401000000006002921215614305575b620100008112156142f9575b6101008112156142ed575b60108112156142e1575b60048112156142d6575b12156142cc575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f83136142b057506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d90565b8002908160ff1c9182607f011c918302019160011d919061428b565b9060010190614254565b92810192811d61424d565b6004938401931d614243565b6008938401931d614239565b6010938401931d61422e565b6020938401931d614222565b506040915080821d614211565b80600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc000000000000000008112613451576f80000000000000000000000000000000915f6780000000000000008216600f0b13614f1a575b5f6740000000000000008216600f0b13614efd575b5f6720000000000000008216600f0b13614ee0575b5f6710000000000000008216600f0b13614ec3575b5f6708000000000000008216600f0b13614ea6575b5f6704000000000000008216600f0b13614e89575b5f6702000000000000008216600f0b13614e6c575b5f6701000000000000008216600f0b13614e4f575b5f66800000000000008216600f0b13614e32575b5f66400000000000008216600f0b13614e15575b5f66200000000000008216600f0b13614df8575b5f66100000000000008216600f0b13614ddb575b5f66080000000000008216600f0b13614dbe575b5f66040000000000008216600f0b13614da1575b5f66020000000000008216600f0b13614d84575b5f66010000000000008216600f0b13614d67575b5f658000000000008216600f0b13614d4a575b5f654000000000008216600f0b13614d2d575b5f652000000000008216600f0b13614d10575b5f651000000000008216600f0b13614cf3575b5f650800000000008216600f0b13614cd6575b5f650400000000008216600f0b13614cb9575b5f650200000000008216600f0b13614c9c575b5f650100000000008216600f0b13614c7f575b5f6480000000008216600f0b13614c62575b5f6440000000008216600f0b13614c45575b5f6420000000008216600f0b13614c28575b5f6410000000008216600f0b13614c0b575b5f6408000000008216600f0b13614bee575b5f6404000000008216600f0b13614bd1575b5f6402000000008216600f0b13614bb4575b5f6401000000008216600f0b13614b97575b5f63800000008216600f0b13614b7a575b5f63400000008216600f0b13614b5d575b5f63200000008216600f0b13614b40575b5f63100000008216600f0b13614b23575b5f63080000008216600f0b13614b06575b5f63040000008216600f0b13614ae9575b5f63020000008216600f0b13614acc575b5f63010000008216600f0b13614aaf575b5f628000008216600f0b13614a92575b5f624000008216600f0b13614a75575b5f622000008216600f0b13614a58575b5f621000008216600f0b13614a3b575b5f620800008216600f0b13614a1e575b5f620400008216600f0b13614a01575b5f620200008216600f0b136149e4575b5f620100008216600f0b136149c7575b5f6180008216600f0b136149aa575b5f6140008216600f0b1361498d575b5f6120008216600f0b13614970575b5f6110008216600f0b13614953575b5f6108008216600f0b13614936575b5f6104008216600f0b13614919575b5f6102008216600f0b136148fc575b5f6101008216600f0b136148df575b5f60808216600f0b136148c2575b5f60408216600f0b136148a5575b5f60208216600f0b13614888575b5f60108216600f0b1361486b575b5f60088216600f0b1361484e575b5f60048216600f0b13614831575b5f60028216600f0b13614813575b60015f9116600f0b136147f6575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161071157600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c906147cc565b7001000000000000000162e42fefa39ef35890920260801c916147be565b9170010000000000000002c5c85fdf473de6b20260801c916147b0565b91700100000000000000058b90bfbe8e7bcd6d0260801c916147a2565b917001000000000000000b17217f7d1cf79afa0260801c91614794565b91700100000000000000162e42fefa39ef366f0260801c91614786565b917001000000000000002c5c85fdf473de6eca0260801c91614778565b9170010000000000000058b90bfbe8e7bce5440260801c9161476a565b91700100000000000000b17217f7d1cf79e9490260801c9161475c565b9170010000000000000162e42fefa39ef44d910260801c9161474d565b91700100000000000002c5c85fdf473dea871f0260801c9161473e565b917001000000000000058b90bfbe8e7bdcbe2e0260801c9161472f565b9170010000000000000b17217f7d1cf7d83c1a0260801c91614720565b917001000000000000162e42fefa39f02b772c0260801c91614711565b9170010000000000002c5c85fdf473e242ea380260801c91614702565b91700100000000000058b90bfbe8e7cc35c3f00260801c916146f3565b917001000000000000b17217f7d1cfb72b45e10260801c916146e4565b91700100000000000162e42fefa39fe95583c20260801c916146d4565b917001000000000002c5c85fdf4741bea6e77e0260801c916146c4565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c916146b4565b91700100000000000b17217f7d1d351a389d400260801c916146a4565b9170010000000000162e42fefa3ae53369388c0260801c91614694565b91700100000000002c5c85fdf477b662b269450260801c91614684565b917001000000000058b90bfbe8f71cb4e4b33d0260801c91614674565b9170010000000000b17217f7d20cf927c8e94c0260801c91614664565b917001000000000162e42fefa494f1478fde050260801c91614653565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c91614642565b91700100000000058b90bfbe9ddbac5e109cce0260801c91614631565b917001000000000b17217f7d5a7716bba4a9ae0260801c91614620565b91700100000000162e42fefb2fed257559bdaa0260801c9161460f565b917001000000002c5c85fdf84bd62ae30a74cc0260801c916145fe565b9170010000000058b90bfbf8479bd5a81b51ad0260801c916145ed565b91700100000000b17217f80f4ef5aadda455540260801c916145dc565b9170010000000162e42ff0999ce3541b9fffcf0260801c916145ca565b91700100000002c5c85fe31f35a6a30da1be500260801c916145b8565b917001000000058b90bfcdee5acd3c1cedc8230260801c916145a6565b9170010000000b17217fba9c739aa5819f44f90260801c91614594565b917001000000162e42fff037df38aa2b219f060260801c91614582565b9170010000002c5c8601cc6b9e94213c72737a0260801c91614570565b91700100000058b90c0b48c6be5df846c5b2ef0260801c9161455e565b917001000000b1721835514b86e6d96efd1bfe0260801c9161454c565b91700100000162e430e5a18f6119e3c02282a50260801c91614539565b917001000002c5c863b73f016468f6bac5ca2b0260801c91614526565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91614513565b91700100000b1721bcfc99d9f890ea069117630260801c91614500565b9170010000162e43f4f831060e02d839a9d16d0260801c916144ed565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c916144da565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c916144c7565b9170010000b17255775c040618bf4a4ade83fc0260801c916144b4565b917001000162e525ee054754457d59952920260260801c916144a0565b9170010002c5cc37da9491d0985c348c68e7b30260801c9161448c565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91614478565b917001000b175effdc76ba38e31671ca9397250260801c91614464565b91700100162f3904051fa128bca9c55c31e5df0260801c91614450565b917001002c605e2e8cec506d21bfc89a23a00f0260801c9161443c565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c91614428565b91700100b1afa5abcbed6129ab13ec11dc95430260801c91614414565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c916143ff565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c916143ea565b917001059b0d31585743ae7c548eb68ca417fd0260801c916143d5565b9170010b5586cf9890f6298b92b71842a983630260801c916143c0565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c916143ab565b917001306fe0a31b7152de8d5a46305c85edec0260801c91614396565b6fb504f333f9de6484597d89b3754abe9f925061438156fea264697066735822122043bf74af2633e25ab2330d593dbfd1d52cff0bf909bfe29106cc479fea7a2a7864736f6c634300081e0033","sourceMap":"493:997:49:-:0;;;;;;;;;;-1:-1:-1;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;505:62:45;;:::i;:::-;493:997:49;1993:22:44;;1989:91;;493:997:49;;;;;;;;;;;1104:49:45;;;;493:997:49;;1989:91:44;493:997:49;2038:31:44;;;;493:997:49;;;2038:31:44;493:997:49;;;;;;;;;;;;;;;;;;;4450:9:48;493:997:49;;;;;;;;;;;;;;;;;;4793:10:48;493:997:49;;4793:10:48;:::i;:::-;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;2797:11:33;493:997:49;;;2797:27:33;493:997:49;-1:-1:-1;493:997:49;;;;;-1:-1:-1;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10764:129:48;10842:50;;;;;;;:::i;:::-;493:997:49;;;10764:129:48;;:::i;:::-;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4074:33:48;493:997:49;;;;;;;;;;;;;;;;;;19154:47:48;19083:54;493:997:49;;:::i;:::-;;;:::i;:::-;;;;18981:29:48;;;:::i;:::-;493:997:49;;;;18779:271:48;18815:35;493:997:49;18779:271:48;;;493:997:49;;18779:271:48;;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;;19024:16:48;493:997:49;;;;;18779:271:48;;;;;;:::i;:::-;493:997:49;19120:9:48;493:997:49;19083:54:48;:::i;:::-;493:997:49;;;;19154:47:48;;;;;;:::i;:::-;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9740:54:48;493:997:49;;:::i;:::-;;;;:::i;:::-;;;;9541:167:48;9577:31;493:997:49;9541:167:48;;;493:997:49;;9541:167:48;;493:997:49;;;;;;;;;;;;;;;;;;;9541:167:48;;;;;;:::i;9740:54::-;577:10:35;493:997:49;;9811:29:48;;;;;;;;;;577:10:35;;;;493:997:49;577:10:35;;493:997:49;;;;;;577:10:35;-1:-1:-1;493:997:49;;;;;;;;;;;;;;2624:5:33;493:997:49;;:::i;:::-;;;735:10:26;;2624:5:33;:::i;:::-;493:997:49;;;;;;;;;;;;;;;;;;;20955:54:48;493:997:49;20917:18:48;493:997:49;;;;20821:124:48;20857:46;20821:124;;;;;;;493:997:49;20821:124:48;;;;;;;:::i;:::-;493:997:49;20992:9:48;493:997:49;20955:54:48;:::i;:::-;;493:997:49;;;;;;;;;;;;;;;;;;;3317:5:48;493:997:49;;;;;;;3317:5:48;493:997:49;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1276:7:33;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;1276:7:33;493:997:49;;;;;-1:-1:-1;493:997:49;;;;;;;-1:-1:-1;493:997:49;;-1:-1:-1;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1276:7:33;493:997:49;;;;;;;-1:-1:-1;493:997:49;;-1:-1:-1;493:997:49;;-1:-1:-1;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4675:9:48;493:997:49;;;;;;;;;;;;;;;;;3483:20:48;493:997:49;;;;3483:20:48;:::i;:::-;493:997:49;;;;;;;;;;;;;;;;;;;4905:7:48;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17845:45:48;17774:54;17656:46;;;;;;493:997:49;17656:46:48;;;;:::i;:::-;493:997:49;;;;17402:340:48;17438:38;493:997:49;17402:340:48;;;493:997:49;;17402:340:48;;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17716:16:48;493:997:49;;;;;17402:340:48;;;;;;:::i;493:997:49:-;;;;;;;;;;;;;;;;505:62:45;;:::i;:::-;493:997:49;;;;;;;;;;1104:49:45;;;;493:997:49;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;2260:9:33;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;;5029:7:48;493:997:49;;;;;;;;5029:7:48;493:997:49;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8839:54:48;493:997:49;;:::i;:::-;;;;8660:147:48;8696:38;493:997:49;8660:147:48;;;493:997:49;;8660:147:48;;493:997:49;;;;;;;8792:5:48;493:997:49;;;;;;;8660:147:48;;;;;;:::i;493:997:49:-;;;;;;;;;;;;;;;3193:5:48;493:997:49;;;;;;;;;;;;;;;;;;;;:::i;:::-;505:62:45;;:::i;:::-;493:997:49;;8004:31:48;493:997:49;;;8004:31:48;493:997:49;;;;;;;;;;;;;;;;;;3951:16:48;493:997:49;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;10280:54:48;493:997:49;;;;10066:182:48;10102:31;493:997:49;10066:182:48;;;493:997:49;;10066:182:48;;493:997:49;;;;;;;;;;;;;;;;;;;;;;;10066:182:48;;;;;;:::i;10280:54::-;493:997:49;;10351:31:48;;;493:997:49;10351:31:48;;;;493:997:49;;;;;;10351:31:48;;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;577:10:35;;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20444:57:48;493:997:49;;;;20190:222:48;493:997:49;;;;;;;20190:222:48;;;20226:36;493:997:49;20190:222:48;;;;;;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20359:13:48;493:997:49;;;;20386:16:48;493:997:49;;;;;;;;20190:222:48;;493:997:49;20190:222:48;;;;;;:::i;20444:57::-;493:997:49;;;;20518:26:48;;493:997:49;;;;;20518:26:48;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;19728:30:48;493:997:49;19728:30:48;19831:54;19728:30;;:::i;:::-;493:997:49;;;;19508:290:48;19544:35;493:997:49;19508:290:48;;;493:997:49;;19508:290:48;;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19772:16:48;493:997:49;;;;;19508:290:48;;;;;;:::i;19831:54::-;493:997:49;;;;19902:37:48;;493:997:49;;;;19902:37:48;493:997:49;;19902:37:48;;;577:10:35;493:997:49;;577:10:35;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;5273:5:48;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;505:62:45;;:::i;:::-;8287:7:48;493:997:49;;;;8286:8:48;8282:81;;493:997:49;;;8282:81:48;493:997:49;;8321:4:48;493:997:49;8287:7:48;493:997:49;8344:8:48;;;;493:997:49;;;;;;;;;;;;;;;;;3712:13:48;493:997:49;;;;;;;;;;;;;;;;;;1997:2:33;493:997:49;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;6276:11:34;493:997:49;;;;;;735:10:26;493:997:49;-1:-1:-1;493:997:49;;;;-1:-1:-1;493:997:49;;6317:36:34;6336:17;6317:36;;6313:309;;493:997:49;4127:5:33;;;;;;:::i;6313:309:34:-;6373:24;;;6369:130;;5541:19;;5537:89;;735:10:26;5639:21:34;5635:90;;493:997:49;;;4127:5:33;493:997:49;;6276:11:34;493:997:49;;;;735:10:26;493:997:49;-1:-1:-1;493:997:49;;;;;-1:-1:-1;493:997:49;;;2407:1:29;;6313:309:34;;;;5635:90;493:997:49;5683:31:34;;;;493:997:49;;;5683:31:34;5537:89;493:997:49;5583:32:34;;;;493:997:49;;;5583:32:34;6369:130;493:997:49;6424:60:34;;;;;;735:10:26;493:997:49;;;;;;6424:60:34;493:997:49;;;;;;;;;;;;;;2679:7:48;493:997:49;;;;;;;;;;;;;;;;;;;;;;;2117:12:33;493:997:49;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2407:1:29;1505:66;493:997:49;4560:63:29;3644:93;;2407:1;1505:66;2407:1;493:997:49;3693:7:50;493:997:49;;;;11377:13:48;;:44;;;;;493:997:49;;;;;11657:125:48;11735:46;;;;;:::i;:::-;493:997:49;;;;;11657:125:48;:::i;:::-;11861:24;;;;;;;;;;;493:997:49;11861:24:48;;;:::i;:::-;493:997:49;;;;;;;11913:25:48;493:997:49;11913:25:48;;;:::i;:::-;493:997:49;;;;;;;11953:40:48;;;11949:1158;11953:40;;;7032:13:50;;;;;493:997:49;7032:13:50;493:997:49;7023:22:50;;;;:45;;;11949:1158:48;7019:180:50;;;7083:37;;;;;;;;493:997:49;;;;;;7083:37:50;;;;493:997:49;7083:37:50;;;;;;;;;;;;;;;;;7019:180;;13217:95:48;13342:91;7019:180:50;;13217:73:48;:36;;;:::i;:::-;577:10:35;;;493:997:49;577:10:35;493:997:49;13256:34:48;;;:::i;:::-;577:10:35;;;493:997:49;577:10:35;493:997:49;13217:73:48;;:::i;:::-;:95;:::i;:::-;13342:37;:75;:37;;;:::i;:::-;577:10:35;;;493:997:49;577:10:35;493:997:49;13382:35:48;;;:::i;13342:75::-;:91;:::i;:::-;13513:22;;13549:16;;:20;;;;:35;;;11949:1158;13545:242;;11949:1158;13914:34;;14176:87;13914:34;13986:85;14025:46;14216:47;13914:34;13893:83;13914:34;;;:::i;:::-;577:10:35;;;493:997:49;577:10:35;493:997:49;13901:47:48;;;13893:83;:::i;:::-;14037:34;;;:::i;:::-;577:10:35;;;493:997:49;577:10:35;493:997:49;14025:46:48;;:::i;:::-;13986:36;;;:::i;:::-;:85;577:10:35;;;;;;;;;;;;;;;;;;;13986:85:48;14082:84;14103:35;;;:::i;14082:84::-;14228:35;;;:::i;14216:47::-;14176:37;;;:::i;:87::-;493:997:49;;;;28654:20:41;493:997:49;;;;;;;28716:21:41;493:997:49;;;28864:46:41;28826:14;28809:45;28826:14;28809;28826:28;28864:14;28826;;28881:29;28826:14;;:::i;:::-;493:997:49;;;;;;;;28826:28:41;:::i;:::-;28809:14;;:::i;:::-;:45;493:997:49;;;;;;;;;;;;;577:10:35;;493:997:49;;;;;;28809:45:41;28881:14;;;:::i;:::-;493:997:49;;;;;;;;28881:29:41;:::i;28864:46::-;7615:32:50;;;11949:1158:48;7611:265:50;;;493:997:49;7664:13:50;493:997:49;7664:30:50;;;;;493:997:49;;;;;;;7664:30:50;;;;;493:997:49;7664:30:50;;493:997:49;7664:30:50;;493:997:49;7664:30:50;;;;;;;;;;;;;7611:265;7722:32;;;;;;;;493:997:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;14575:122:48;7611:265:50;493:997:49;7611:265:50;;14664:20:48;;;;:::i;:::-;493:997:49;;;;;;;577:10:35;493:997:49;577:10:35;;493:997:49;577:10:35;493:997:49;577:10:35;;493:997:49;;577:10:35;;493:997:49;;577:10:35;;493:997:49;14575:122:48;493:997:49;1505:66:29;2407:1;3553:21:50;3587:7;;;;3584:57;;7611:265;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3584:57:50;3608:33;;;;;;;;;;3584:57;3616:10;3608:33;;;;;3584:57;;;;3608:33;493:997:49;;;;;;;;;;3608:33:50;;;;;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7664:30:50;;;;;;;;:::i;:::-;493:997:49;;7664:30:50;;;;;;493:997:49;;;;7664:30:50;493:997:49;;;;;;;;;7664:30:50;493:997:49;;;7611:265:50;1306:37:24;493:997:49;8544:1067:24;8509:24;8544:1067;;;493:997:49;8544:1067:24;;493:997:49;8544:1067:24;493:997:49;8544:1067:24;493:997:49;8544:1067:24;;;;;;493:997:49;8544:1067:24;;;;;;;;7611:265:50;493:997:49;8544:1067:24;1305:38;1301:116;;14575:122:48;7611:265:50;493:997:49;7611:265:50;;;1301:116:24;493:997:49;1366:40:24;;;;;493:997:49;;1366:40:24;8544:1067;;493:997:49;8544:1067:24;;;;;;;;;;;;;;;;;-1:-1:-1;8544:1067:24;;;;;;;7615:32:50;7634:13;493:997:49;7634:13:50;493:997:49;7625:22:50;;7615:32;;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13545:242:48;14216:47;13614:26;;;14025:46;13644:9;13614:26;14176:87;13614:26;;13986:85;13614:26;;:::i;:::-;577:10:35;13680:14:48;;13676:101;;13545:242;;;;;;;;;13676:101;13714:48;:34;:48;:34;;;:::i;:::-;577:10:35;;;;;;493:997:49;577:10:35;493:997:49;13714:48:48;:::i;:::-;577:10:35;;;;;;;;;;;;;;;;;;13714:48:48;13676:101;;13549:35;13573:11;;;;13549:35;;7083:37:50;;;;;493:997:49;7083:37:50;;:::i;:::-;493:997:49;;13217:95:48;7083:37:50;;;493:997:49;;;;;;;;;7019:180:50;493:997:49;1767:47:24;;;;;;;;;493:997:49;1767:47:24;;;493:997:49;1767:47:24;493:997:49;;10404:1148:24;;10365:28;10404:1148;;;493:997:49;10404:1148:24;7185:4:50;493:997:49;10404:1148:24;493:997:49;10404:1148:24;;;;493:997:49;;10404:1148:24;;;;;;;7019:180:50;493:997:49;10404:1148:24;493:997:49;;10404:1148:24;1766:48;1762:126;;7019:180:50;;;;;;;;13342:91:48;7019:180:50;13217:95:48;7019:180:50;;;1762:126:24;1837:40;;493:997:49;1837:40:24;493:997:49;;;;1837:40:24;10404:1148;;493:997:49;10404:1148:24;;;;;;;;;;;;;;;;;;;493:997:49;10404:1148:24;;;;;7023:45:50;7049:9;;;:19;;7023:45;;11949:1158:48;12147:41;;-1:-1:-1;12147:41:48;;493:997:49;12147:41:48;493:997:49;;12212:13:48;577:10:35;;493:997:49;;;12306:32:48;;12332:4;493:997:49;12306:32:48;;493:997:49;;12306:32:48;493:997:49;12306:32:48;;;;;;;;;;493:997:49;12306:32:48;;;12143:964;12374:36;12470:21;12374:36;:73;:36;;;:::i;:::-;577:10:35;;;493:997:49;577:10:35;493:997:49;12413:34:48;;;:::i;12374:73::-;12470:21;;:::i;:::-;:44;577:10:35;;12143:964:48;;;13342:91;12143:964;13217:95;12143:964;11949:1158;;577:10:35;493:997:49;;;577:10:35;;;493:997:49;;577:10:35;;;;493:997:49;577:10:35;;493:997:49;577:10:35;493:997:49;;;577:10:35;;12306:32:48;;;;493:997:49;12306:32:48;;493:997:49;12306:32:48;;;;;;577:10:35;12306:32:48;;;:::i;:::-;;;577:10:35;;;;;;;12470:21:48;12306:32;;;;;-1:-1:-1;12306:32:48;;577:10:35;493:997:49;;;577:10:35;;;493:997:49;;577:10:35;;;;493:997:49;577:10:35;;493:997:49;577:10:35;493:997:49;;;577:10:35;;493:997:49;577:10:35;;;;12143:964:48;493:997:49;;;12659:32:48;;12685:4;493:997:49;12659:32:48;;493:997:49;;-1:-1:-1;493:997:49;;;;;12659:32:48;;;;;;;;;493:997:49;12659:32:48;;;12143:964;493:997:49;;;;2796:38:25;493:997:49;;;12725:69:48;493:997:49;12725:69:48;;;;;;;493:997:49;;577:10:35;;493:997:49;;12725:69:48;;;493:997:49;12725:69:48;;:::i;:::-;2796:38:25;;:::i;:::-;;493:997:49;;;;12967:32:48;;;;493:997:49;12967:32:48;;12685:4;493:997:49;12967:32:48;;493:997:49;12967:32:48;;;;;;;;493:997:49;12967:32:48;;;12143:964;13021:29;;;;;:::i;:::-;:52;577:10:35;;12143:964:48;;;13342:91;12143:964;13217:95;12143:964;11949:1158;;577:10:35;493:997:49;;;577:10:35;;;493:997:49;;577:10:35;;;;493:997:49;577:10:35;;493:997:49;577:10:35;493:997:49;;;577:10:35;;12967:32:48;;;;;493:997:49;12967:32:48;;493:997:49;12967:32:48;;;;;;577:10:35;12967:32:48;;;:::i;:::-;;;577:10:35;;;;;;;;13021:29:48;12967:32;;;;;-1:-1:-1;12967:32:48;;12659;;;;493:997:49;12659:32:48;;493:997:49;12659:32:48;;;;;;577:10:35;12659:32:48;;;:::i;:::-;;;577:10:35;;;;;;;;2796:38:25;12659:32:48;;;;;-1:-1:-1;12659:32:48;;493:997:49;;;;;;;;;;;;;;;;;;;;;;;11377:44:48;11394:15;;;:27;;11377:44;;;493:997:49;;;;;;;;;;;;;;;;;;;;;;;3644:93:29;3696:30;493:997:49;3696:30:29;493:997:49;;3696:30:29;493:997:49;;;;;;;;;;;;;;;2766:13:48;493:997:49;;;;;;;;;;;;;;;;;:::i;:::-;;;735:10:26;;5541:19:34;5537:89;;493:997:49;;5639:21:34;;;5635:90;;735:10:26;493:997:49;;5734:11:34;493:997:49;;;;;;;;;;;;;;2407:1:29;493:997:49;;;;;5813:38:34;493:997:49;735:10:26;5813:38:34;;493:997:49;;;;;;;5635:90:34;5683:31;493:997:49;5683:31:34;493:997:49;;;;;5683:31:34;5537:89;5583:32;493:997:49;5583:32:34;493:997:49;;;;;5583:32:34;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;493:997:49;;-1:-1:-1;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;493:997:49;;-1:-1:-1;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5150:6:48;493:997:49;;;;;;;5150:6:48;493:997:49;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4225:17:48;493:997:49;;;;;;;;4225:17:48;493:997:49;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;493:997:49;;;;;-1:-1:-1;493:997:49;;;;;;;;;;;;;;;;;;;;;:::o;:::-;11861:7:48;493:997:49;;;;;;11861:7:48;-1:-1:-1;493:997:49;;-1:-1:-1;493:997:49;;;-1:-1:-1;493:997:49;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;493:997:49;;-1:-1:-1;493:997:49;;;-1:-1:-1;493:997:49;:::o;:::-;12413:17:48;493:997:49;;;;;;12413:17:48;-1:-1:-1;493:997:49;;-1:-1:-1;493:997:49;;;-1:-1:-1;493:997:49;:::o;:::-;15963:6:48;493:997:49;;;;;;15963:6:48;-1:-1:-1;493:997:49;;-1:-1:-1;493:997:49;;;-1:-1:-1;493:997:49;:::o;:::-;3966:5:50;493:997:49;;;;;;3966:5:50;-1:-1:-1;493:997:49;;-1:-1:-1;493:997:49;;;-1:-1:-1;493:997:49;:::o;577:10:35:-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::o;:::-;;493:997:49;;577:10:35;;;;;;;;;;;;493:997:49;577:10:35;493:997:49;;;577:10:35;;493:997:49;;;;;;;;;;;;;;;;-1:-1:-1;493:997:49;;-1:-1:-1;493:997:49;;-1:-1:-1;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;577:10:35;;493:997:49;;;;;577:10:35;493:997:49;;577:10:35;493:997:49;:::o;4879:289:50:-;;;577:10:35;4977:4:50;577:10:35;4977:4:50;577:10:35;;;;;;4977:12:50;;;;:::i;:::-;493:997:49;;-1:-1:-1;493:997:49;5005:9:50;493:997:49;;;-1:-1:-1;493:997:49;;5033:8:50;;;5029:133;;4879:289;;;:::o;5029:133::-;5097:20;;;;;:::i;:::-;493:997:49;-1:-1:-1;493:997:49;5005:9:50;493:997:49;;;;-1:-1:-1;493:997:49;2407:1:29;4879:289:50:o;15274:1761:48:-;;;;;;;;5432:32:50;15820::48;;;;:::i;:::-;15963:23;;;;;:::i;:::-;577:10:35;;;;;493:997:49;5432:32:50;;:::i;:::-;493:997:49;-1:-1:-1;493:997:49;;;16005:26:48;493:997:49;;;1402:79;;;;;:::i;:::-;16247:132:48;;;16471:66;16247:132;;16513:23;16247:132;16513:23;;:::i;:::-;577:10:35;;;;;493:997:49;16471:66:48;;:::i;:::-;16621:11;-1:-1:-1;16642:27:48;;16683:10;;16679:118;;15274:1761;16849:22;;;493:997:49;;17003:24:48;5747:40:50;17003:24:48;;:::i;:::-;577:10:35;;;;;493:997:49;5747:40:50;;:::i;:::-;15274:1761:48;:::o;493:997:49:-;;;;;;;;;;;;;;;;;;;;;;;16679:118:48;16719:35;;;;;;;;;:::i;:::-;16768:18;;;;;:::i;:::-;16679:118;;;;493:997:49;;;;;;;;;;;;;;;;;;;;;;;;;28826:11:41;493:997:49;;;;;;28826:11:41;-1:-1:-1;493:997:49;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;493:997:49;;;-1:-1:-1;493:997:49;;;;;;;;;;:::o;1110:300:34:-;493:997:49;;1193:18:34;;;1189:86;;493:997:49;;1288:16:34;;;1284:86;;493:997:49;1209:1:34;493:997:49;2025:9:34;493:997:49;;;1209:1:34;493:997:49;;2058:19:34;;;2054:115;;493:997:49;2801:32:34;493:997:49;;;;1209:1:34;493:997:49;2025:9:34;493:997:49;;;;1209:1:34;493:997:49;2407:1:29;493:997:49;1209:1:34;493:997:49;2025:9:34;493:997:49;;;1209:1:34;493:997:49;;;;;2407:1:29;;493:997:49;;;;;2801:32:34;1110:300::o;2054:115::-;2104:50;;1209:1;2104:50;;493:997:49;;;;;;1209:1:34;2104:50;1284:86;1327:32;1209:1;1327:32;1209:1;1327:32;493:997:49;;1209:1:34;1327:32;1189:86;1234:30;1209:1;1234:30;1209:1;1234:30;493:997:49;;1209:1:34;1234:30;640:170:45;493:997:49;699:6:45;493:997:49;;735:10:26;699:22:45;695:109;;640:170::o;695:109::-;744:49;699:6;744:49;735:10:26;744:49:45;493:997:49;;699:6:45;744:49;3887:138:50;3966:5;493:997:49;3966:17:50;3962:31;;4010:8;;;:::i;:::-;577:10:35;;;;;493:997:49;3887:138:50;:::o;3962:31::-;3985:8;493:997:49;3985:8:50;:::o;4691:549:25:-;;-1:-1:-1;4691:549:25;;3417:129:28;;;;;;;;;;4874:72:25;;4691:549;4870:364;;;4969:25;;;;:::i;:::-;4962:32;:::o;4870:364::-;5011:223;;;493:997:49;5045:24:25;;-1:-1:-1;5045:24:25;493:997:49;5045:24:25;493:997:49;;-1:-1:-1;5045:24:25;5011:223;4463:73:28;5090:33:25;4463:73:28;;493:997:49;;;-1:-1:-1;493:997:49;;;;;5086:148:25;5204:19;-1:-1:-1;5204:19:25;;-1:-1:-1;5204:19:25;4874:72;-1:-1:-1;4463:73:28;4886:33:25;;;4874:72;4886:59;4923:18;;;:22;;4874:72;;4453:420:50;;4586:8;4555;4859:7;4453:420;4555:8;:::i;:::-;577:10:35;;;;;493:997:49;4586:8:50;;:::i;903:262:52:-;;;1026:11;;1022:59;;1100:23;1143:15;1100:23;;;:::i;:::-;1143:15;;;:::i;1022:59::-;1053:17;1036:1;1053:17;;:::o;5893:600:50:-;6232:36;6059:40;;;;:::i;:::-;6232:36;;;:::i;:::-;493:997:49;;;;;;6381:30:50;6377:82;;5893:600;:::o;6377:82::-;6447:1;577:10:35;;;;;;;6427:21:50;:::o;403:228:52:-;;494:11;;490:25;;585:10;;;:::i;:::-;598:9;577:10:35;;;;;;;;;;;;;;;598:9:52;577:10:35;;403:228:52;:::o;490:25::-;507:8;;493:997:49;507:8:52;:::o;3165:696:25:-;;-1:-1:-1;3165:696:25;;832:128:28;;;;;;;;;;;3495:72:25;;3491:364;;;3590:25;;;;:::i;3517:219:0:-;493:997:49;;;;805:35:0;3652:19;;;:42;;;3517:219;958:34;;;493:997:49;;3517:219:0;:::o;3652:42::-;3675:19;958:34;3675:19;;;3652:42;;3517:219;;493:997:49;;;;;;805:35:0;3652:19;;;:42;;;958:34;;;493:997:49;;3517:219:0;:::o;3949:::-;;493:997:49;;;;;;805:35:0;4084:19;;;:42;;;958:34;;;493:997:49;;3949:219:0;:::o;4625:334:28:-;4701:252;;;;;;;;;;;;;;;;;;;4625:334::o;8689:233:0:-;8790:6;;958:34;;23319:50;23314:55;;23319:50;;577:10:35;23388:13:0;577:10:35;23394:2:0;577:10:35;23388:13:0;:::i;:::-;24377:34;24367:44;;958:34;;24377;493:997:49;958:34:0;8851:29;;958:34;;493:997:49;;8689:233:0;:::o;23310:1040::-;23438:3;493:997:49;;;;;23486:17:0;23492:11;23486:17;;;23482:48;;23310:1040;23746:3;23543:13;23549:7;23811:45;23543:13;;;23539:44;;23310:1040;23602:5;23596:11;;;23592:40;;23310:1040;23651:4;23645:10;;;23641:39;;23310:1040;23699:3;23693:9;;;23689:38;;23310:1040;23740:9;;23736:23;;23310:1040;493:997:49;23836:1:0;493:997:49;;;;;;;;;;;577:10:35;23811:45:0;:::i;:::-;23875:44;23885:34;23875:44;;958:34;;493:997:49;23959:3:0;493:997:49;;;23996:38:0;23885:34;23996:38;;493:997:49;;24046:21:0;;577:10:35;24095:2:0;577:10:35;24112:7:0;;;;24108:20;;23310:1040;493:997:49;;577:10:35;;23959:3:0;577:10:35;24221:7:0;;;;24217:20;;23310:1040;23959:3;493:997:49;24313:15:0;493:997:49;;24331:6:0;493:997:49;;24331:6:0;:::i;:::-;24313:28;;493:997:49;23310:1040:0;;24313:28;;;;23836:1;24313:28;;;24217:20;493:997:49;;;24217:20:0;;;24108;493:997:49;;;-1:-1:-1;24108:20:0;;;23736:23;23758:1;493:997:49;23736:23:0;;23689:38;493:997:49;;;;;;23689:38:0;;23641:39;23666:1;493:997:49;;;;;23641:39:0;;23592:40;23618:1;493:997:49;;;;;23592:40:0;;23539:44;23567:2;493:997:49;;;;;23539:44:0;;23482:48;-1:-1:-1;;493:997:49;;;;;23482:48:0;;1807:7043:42;;;;;;2085:11;493:997:49;2121:11:42;;;:26;;;1807:7043;493:997:49;;;2265:1:42;2254:12;2250:113;;41962:31:41;493:997:49;2085:11:42;493:997:49;:::i;:::-;41962:31:41;:::i;:::-;493:997:49;42003:57:41;-1:-1:-1;493:997:49;;;42011:22:41;42003:57;:::i;:::-;42077:23;1454:5:49;493:997;;;42077:23:41;;;:::i;:::-;-1:-1:-1;493:997:49;;;2612:13:42;2610:16;2606:117;;2746:25;;;:::i;:::-;2883:44;:14;:34;:14;;2085:11;2883:14;:::i;:::-;493:997:49;;;;;;;;2902:14:42;;2085:11;2902:14;:::i;:::-;493:997:49;;;;;;;;2883:34:42;;:::i;:::-;:44;:::i;:::-;493:997:49;;;;-1:-1:-1;3038:22:42;;3034:2299;;1807:7043;-1:-1:-1;;493:997:49;;;;5424:18:42;-1:-1:-1;;5424:40:42;;577:10:35;23379:22:0;493:997:49;;5656:20:42;5652:180;;5949:11;;;;:::i;:::-;493:997:49;;;5974:14:42;-1:-1:-1;5974:14:42;;;5970:210;;577:10:35;6441:9:42;;6437:110;;6872:25;7154:60;7886:15;6872:25;;;7180:33;7154:21;577:10:35;23379:22:0;7160:14:42;7125:8;;;;:::i;:::-;7160:14;;:::i;:::-;7154:21;;:::i;:::-;7180:33;;:::i;:::-;7154:60;;:::i;:::-;7265:8;;;;;:::i;:::-;7284:15;493:997:49;;-1:-1:-1;577:10:35;;7411:33:42;;7405:40;7411:33;;:::i;7886:15::-;493:997:49;;;;7968:22:42;-1:-1:-1;7968:22:42;;;7964:123;;8290:14;;2085:11;8290:14;:::i;:::-;493:997:49;;;;;;;;8318:17:42;;;8314:118;;-1:-1:-1;8528:12:42;8550:21;8687;;8683:122;;8815:28;;;;;;1807:7043;:::o;8683:122::-;493:997:49;;;;;;3892:67:41;493:997:49;;;;2085:11:42;493:997:49;:::i;:::-;3892:67:41;;:::i;:::-;8724:70:42;;:::o;7309:548::-;7662:33;7617:40;7583:9;7623:33;7583:9;7617:79;7583:9;;;:::i;:::-;7623:33;;:::i;7617:40::-;7662:33;;:::i;:::-;7617:79;;:::i;6437:110::-;493:997:49;;;;;;;3892:67:41;493:997:49;;;2085:11:42;493:997:49;:::i;5652:180:42:-;493:997:49;;;;;;3892:67:41;493:997:49;;;2085:11:42;493:997:49;:::i;5424:40:42:-;5453:11;;;:::i;:::-;5424:40;;3034:2299;3176:16;;;;;;;:::i;:::-;493:997:49;3276:93:42;3224:19;;;;:::i;:::-;3276:31;3329:39;3276:31;;;:::i;:93::-;3391:39;2112:2:0;577:10:35;;;493:997:49;7206:19:0;805:35;7206:19;;;:42;;;3034:2299:42;958:34:0;;;3276:155:42;493:997:49;;;3276:155:42;;:::i;:::-;493:997:49;;;;-1:-1:-1;3544:23:42;3540:105;;3720:25;493:997:49;3720:25:42;;;:::i;:::-;493:997:49;;;805:35:0;4084:19;;;:42;;;3034:2299:42;958:34:0;;;493:997:49;;-1:-1:-1;3884:14:42;;-1:-1:-1;;3884:28:42;;577:10:35;493:997:49;;;;;4072:12:42;4068:204;;4345:8;4510:35;4429:59;4345:8;;4429:117;4345:8;;:::i;:::-;4381:11;4452:35;4381:11;;;;:::i;4429:117::-;-1:-1:-1;493:997:49;;;4726:23:42;4724:26;4720:135;;4939:18;;;;:::i;:::-;493:997:49;;;;;;;5061:12:42;5057:165;5061:12;;;5093;5057:165;;3034:2299;;;5057:165;;;;;;4720:135;493:997:49;;;;;;;;3892:67:41;493:997:49;;;2085:11:42;493:997:49;:::i;3884:28:42:-;3905:7;;;:::i;:::-;3884:28;;4084:42:0;4107:19;958:34;4107:19;;;4084:42;;3540:105:42;2112:2:0;493:997:49;3587:43:42;;;432:19;3587:43;;;432:19;;;;;493:997:49;432:19:42;493:997:49;;;432:19:42;;;;;;;;3587:43;7206:42:0;7229:19;958:34;7229:19;;;7206:42;;2606:117:42;493:997:49;;;;3892:67:41;493:997:49;;;2085:11:42;493:997:49;:::i;2250:113:42:-;493:997:49;;;3892:67:41;493:997:49;;1454:5;493:997;;;;2085:11:42;493:997:49;:::i;:::-;;;;;;;;;;;;1454:5;493:997;;;;;;;;;;2121:26:42;2136:11;;;;2121:26;;6267:513:0;6363:6;;6359:20;;493:997:49;;;6397:6:0;;958:34;;6455;6451:38;;493:997:49;;6495:2:0;493:997:49;;6547:3:0;493:997:49;;6575:50:0;6569:56;;958:34;;6495:2;577:10:35;493:997:49;;6661:85:0;;958:34;;493:997:49;6267:513:0;:::o;493:997:49:-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;7038:252:0;493:997:49;;7136:6:0;;958:34;;577:10:35;493:997:49;805:35:0;7206:19;;;:42;;;958:34;;;493:997:49;;7038:252:0;:::o;:::-;493:997:49;7038:252:0;7182:2;577:10:35;;;493:997:49;805:35:0;7206:19;;;:42;;;958:34;;;493:997:49;;7038:252:0;:::o;:::-;493:997:49;7038:252:0;7182:2;577:10:35;;;493:997:49;805:35:0;7206:19;;;:42;;;958:34;;;493:997:49;;7038:252:0;:::o;:::-;;493:997:49;;7136:6:0;;;958:34;;7182:2;577:10:35;;;493:997:49;805:35:0;7206:19;;;:42;;;958:34;;;493:997:49;;7038:252:0;:::o;4395:225::-;;493:997:49;;;;;;4517:2:0;493:997:49;805:35:0;4536:19;;;:42;;;958:34;;;493:997:49;;4395:225:0;:::o;9082:131::-;805:35;493:997:49;;;9170:14:0;958:34;;493:997:49;;;;9082:131:0;:::o;41100:19:41:-;493:997:49;;41100:19:41;;;;;;;;;;;;:::o;5271:3068::-;;;;;6060:12;5271:3068;;;;41316:20;6060:40;5830:21;5606:12;5713:29;;;;:::i;:::-;493:997:49;5752:57:41;493:997:49;;;;5760:22:41;5752:57;:::i;5830:21::-;5942:25;6060:30;5942:25;;;:::i;:::-;6060:12;;;;;:::i;:::-;41100:19;493:997:49;;6077:12:41;;;;:::i;:::-;41100:19;493:997:49;;6060:30:41;;:::i;:40::-;41316:20;:::i;:::-;493:997:49;;;;;6380:22:41;;6376:991;;5271:3068;7471:11;;;;;;:::i;:::-;41225:20;493:997:49;;;7582:19:41;41225:20;;7775:12;41316:20;7775:12;;:::i;41316:20::-;493:997:49;;;;805:35:0;4084:19;;;:42;;;5271:3068:41;958:34:0;;;7875:31:41;493:997:49;7883:22:41;493:997:49;;;7883:22:41;;:::i;:::-;7875:31;:::i;:::-;493:997:49;;;;;8021:18:41;;8017:112;;41408:19;;;8195:14;41408:19;;:::i;8195:14::-;493:997:49;;;;;8279:14:41;;8275:58;;5271:3068::o;8275:58::-;493:997:49;;-1:-1:-1;493:997:49;;-1:-1:-1;8309:13:41:o;8017:112::-;8069:12;;;;;;;:::i;:::-;41100:19;493:997:49;;8095:23:41;:::o;4084:42:0:-;4107:19;958:34;4107:19;;;4084:42;;41225:20:41;;493:997:49;;41225:20:41;;;;;;;;;;;;493:997:49;41225:20:41;493:997:49;;;41225:20:41;;;;;;;6376:991;493:997:49;;;;;;-1:-1:-1;6542:16:41;6538:98;;6766:18;;;;:::i;:::-;493:997:49;;;;6806:28:41;41100:19;;;41408;6990:18;41408:19;;:::i;:::-;6990:18;;:::i;:::-;493:997:49;;;;;;;7116:12:41;7112:245;7116:12;;;7148:19;;7471:11;7148:19;;7112:245;6376:991;;;;;7112:245;7471:11;7112:245;;;;;;41100:19;;493:997:49;;41100:19:41;;;;;;;;;;;;493:997:49;41100:19:41;493:997:49;;;41100:19:41;;41507:286;41625:1;;;41642:10;493:997:49;;41654:20:41;;;;;41700:23;493:997:49;41710:12:41;;;;;:::i;:::-;41100:19;493:997:49;;41700:23:41;;:::i;:::-;493:997:49;;41642:10:41;;;41654:20;;;;41507:286;:::o;22569:296:0:-;493:997:49;;22661:20:0;22657:24;;958:34;;;22711:21;22707:25;;22703:39;;22810:35;22771:83;493:997:49;;22849:3:0;493:997:49;;;22771:83:0;:::i;15150:221::-;493:997:49;;15241:1:0;15237:5;;958:34;;;15241:1;14261:13;;14292:19;14286:25;;;14282:56;;15150:221;14349:17;14355:11;14599:3;14349:17;;;14345:48;;15150:221;14410:7;14404:13;;;14400:44;;15150:221;14461:5;14455:11;;;14451:40;;15150:221;14508:4;14502:10;;;14498:39;;15150:221;14554:3;14548:9;;;14544:38;;15150:221;14593:9;;14589:23;;15150:221;493:997:49;;;14675:2:0;577:10:35;493:997:49;14737:3:0;493:997:49;577:10:35;14760:31:0;14773:18;14755:176;14793:7;15241:1;14793:7;;;;493:997:49;15317:34:0;493:997:49;;;;;15355:3:0;493:997:49;15150:221:0;:::o;14802:9::-;493:997:49;;;;;;;;14737:3:0;493:997:49;;;;;;14802:9:0;14810:1;493:997:49;14760:31:0;;;;14589:23;493:997:49;14611:1:0;493:997:49;14589:23:0;;;14544:38;493:997:49;;;;;;14544:38:0;;14498:39;14523:1;493:997:49;;;;;14498:39:0;;14451:40;14477:1;493:997:49;;;;;14451:40:0;;14400:44;14428:2;493:997:49;;;;;14400:44:0;;14345:48;14377:2;493:997:49;;;;;14345:48:0;;14282:56;-1:-1:-1;14322:2:0;;-1:-1:-1;493:997:49;;;14282:56:0;;15549:6841;493:997:49;;;15643:20:0;15639:24;;958:34;;;15693:21;15689:25;;15685:39;;15763:34;15810:22;493:997:49;15814:18:0;15810:22;;493:997:49;;15810:26:0;15806:100;;15549:6841;493:997:49;15922:18:0;15918:22;;493:997:49;;15918:26:0;15914:100;;15549:6841;493:997:49;16030:18:0;16026:22;;493:997:49;;16026:26:0;16022:100;;15549:6841;493:997:49;16138:18:0;16134:22;;493:997:49;;16134:26:0;16130:100;;15549:6841;493:997:49;16246:17:0;16242:21;;493:997:49;;16242:25:0;16238:99;;15549:6841;493:997:49;16353:17:0;16349:21;;493:997:49;;16349:25:0;16345:99;;15549:6841;493:997:49;16460:17:0;16456:21;;493:997:49;;16456:25:0;16452:99;;15549:6841;493:997:49;16567:17:0;16563:21;;493:997:49;;16563:25:0;16559:99;;15549:6841;493:997:49;16674:16:0;16670:20;;493:997:49;;16670:24:0;16666:98;;15549:6841;493:997:49;16780:16:0;16776:20;;493:997:49;;16776:24:0;16772:98;;15549:6841;493:997:49;16886:16:0;16882:20;;493:997:49;;16882:24:0;16878:98;;15549:6841;493:997:49;16992:16:0;16988:20;;493:997:49;;16988:24:0;16984:98;;15549:6841;493:997:49;17098:15:0;17094:19;;493:997:49;;17094:23:0;17090:97;;15549:6841;493:997:49;17203:15:0;17199:19;;493:997:49;;17199:23:0;17195:97;;15549:6841;493:997:49;17308:15:0;17304:19;;493:997:49;;17304:23:0;17300:97;;15549:6841;493:997:49;17413:15:0;17409:19;;493:997:49;;17409:23:0;17405:97;;15549:6841;493:997:49;17518:14:0;17514:18;;493:997:49;;17514:22:0;17510:96;;15549:6841;493:997:49;17622:14:0;17618:18;;493:997:49;;17618:22:0;17614:96;;15549:6841;493:997:49;17726:14:0;17722:18;;493:997:49;;17722:22:0;17718:96;;15549:6841;493:997:49;17830:14:0;17826:18;;493:997:49;;17826:22:0;17822:96;;15549:6841;493:997:49;17934:13:0;17930:17;;493:997:49;;17930:21:0;17926:95;;15549:6841;493:997:49;18037:13:0;18033:17;;493:997:49;;18033:21:0;18029:95;;15549:6841;493:997:49;18140:13:0;18136:17;;493:997:49;;18136:21:0;18132:95;;15549:6841;493:997:49;18243:13:0;18239:17;;493:997:49;;18239:21:0;18235:95;;15549:6841;493:997:49;18346:12:0;18342:16;;493:997:49;;18342:20:0;18338:94;;15549:6841;493:997:49;18448:12:0;18444:16;;493:997:49;;18444:20:0;18440:94;;15549:6841;493:997:49;18550:12:0;18546:16;;493:997:49;;18546:20:0;18542:94;;15549:6841;493:997:49;18652:12:0;18648:16;;493:997:49;;18648:20:0;18644:94;;15549:6841;493:997:49;18754:11:0;18750:15;;493:997:49;;18750:19:0;18746:93;;15549:6841;493:997:49;18855:11:0;18851:15;;493:997:49;;18851:19:0;18847:93;;15549:6841;493:997:49;18956:11:0;18952:15;;493:997:49;;18952:19:0;18948:93;;15549:6841;493:997:49;19057:11:0;19053:15;;493:997:49;;19053:19:0;19049:93;;15549:6841;493:997:49;19158:10:0;19154:14;;493:997:49;;19154:18:0;19150:92;;15549:6841;493:997:49;19258:10:0;19254:14;;493:997:49;;19254:18:0;19250:92;;15549:6841;493:997:49;19358:10:0;19354:14;;493:997:49;;19354:18:0;19350:92;;15549:6841;493:997:49;19458:10:0;19454:14;;493:997:49;;19454:18:0;19450:92;;15549:6841;493:997:49;19558:9:0;19554:13;;493:997:49;;19554:17:0;19550:91;;15549:6841;493:997:49;19657:9:0;19653:13;;493:997:49;;19653:17:0;19649:91;;15549:6841;493:997:49;19756:9:0;19752:13;;493:997:49;;19752:17:0;19748:91;;15549:6841;493:997:49;19855:9:0;19851:13;;493:997:49;;19851:17:0;19847:91;;15549:6841;493:997:49;19954:8:0;19950:12;;493:997:49;;19950:16:0;19946:90;;15549:6841;493:997:49;20052:8:0;20048:12;;493:997:49;;20048:16:0;20044:90;;15549:6841;493:997:49;20150:8:0;20146:12;;493:997:49;;20146:16:0;20142:90;;15549:6841;493:997:49;20248:8:0;20244:12;;493:997:49;;20244:16:0;20240:90;;15549:6841;493:997:49;20346:7:0;20342:11;;493:997:49;;20342:15:0;20338:89;;15549:6841;493:997:49;20443:7:0;20439:11;;493:997:49;;20439:15:0;20435:89;;15549:6841;493:997:49;20540:7:0;20536:11;;493:997:49;;20536:15:0;20532:89;;15549:6841;493:997:49;20637:7:0;20633:11;;493:997:49;;20633:15:0;20629:89;;15549:6841;493:997:49;20734:6:0;20730:10;;493:997:49;;20730:14:0;20726:88;;15549:6841;493:997:49;20830:6:0;20826:10;;493:997:49;;20826:14:0;20822:88;;15549:6841;493:997:49;20926:6:0;20922:10;;493:997:49;;20922:14:0;20918:88;;15549:6841;493:997:49;21022:6:0;21018:10;;493:997:49;;21018:14:0;21014:88;;15549:6841;493:997:49;21118:5:0;21114:9;;493:997:49;;21114:13:0;21110:87;;15549:6841;493:997:49;21213:5:0;21209:9;;493:997:49;;21209:13:0;21205:87;;15549:6841;493:997:49;21308:5:0;21304:9;;493:997:49;;21304:13:0;21300:87;;15549:6841;493:997:49;21403:5:0;21399:9;;493:997:49;;21399:13:0;21395:87;;15549:6841;493:997:49;21498:4:0;21494:8;;493:997:49;;21494:12:0;21490:86;;15549:6841;493:997:49;21592:4:0;21588:8;;493:997:49;;21588:12:0;21584:86;;15549:6841;493:997:49;21686:4:0;21682:8;;493:997:49;;21682:12:0;21678:86;;15549:6841;493:997:49;21780:4:0;21776:8;;493:997:49;;21776:12:0;21772:86;;15549:6841;493:997:49;21874:3:0;21870:7;;493:997:49;;21870:11:0;21866:85;;15549:6841;493:997:49;21967:3:0;21963:7;;493:997:49;;21963:11:0;21959:85;;15549:6841;493:997:49;22060:3:0;22056:7;;493:997:49;;22056:11:0;22052:85;;15549:6841;22153:3;493:997:49;22149:7:0;;493:997:49;;22149:11:0;22145:85;;15549:6841;21592:4;493:997:49;;;22267:2:0;493:997:49;;;;958:34:0;22300:38;;958:34;;493:997:49;;15549:6841:0;:::o;22145:85::-;493:997:49;22188:35:0;493:997:49;21498:4:0;493:997:49;22145:85:0;;;22052;22095:35;493:997:49;;;21498:4:0;493:997:49;;22052:85:0;;21959;493:997:49;22002:35:0;493:997:49;21498:4:0;493:997:49;21959:85:0;;;21866;493:997:49;21909:35:0;493:997:49;21498:4:0;493:997:49;21866:85:0;;;21772:86;493:997:49;21816:35:0;493:997:49;21498:4:0;493:997:49;21772:86:0;;;21678;493:997:49;21722:35:0;493:997:49;21498:4:0;493:997:49;21678:86:0;;;21584;493:997:49;21628:35:0;493:997:49;21498:4:0;493:997:49;21584:86:0;;;21490;493:997:49;21534:35:0;493:997:49;21498:4:0;493:997:49;21490:86:0;;;21395:87;493:997:49;21440:35:0;493:997:49;21479:3:0;493:997:49;21395:87:0;;;21300;493:997:49;21345:35:0;493:997:49;21384:3:0;493:997:49;21300:87:0;;;21205;493:997:49;21250:35:0;493:997:49;21289:3:0;493:997:49;21205:87:0;;;21110;493:997:49;21155:35:0;493:997:49;21194:3:0;493:997:49;21110:87:0;;;21014:88;493:997:49;21060:35:0;493:997:49;21099:3:0;493:997:49;21014:88:0;;;20918;493:997:49;20964:35:0;493:997:49;21003:3:0;493:997:49;20918:88:0;;;20822;493:997:49;20868:35:0;493:997:49;20907:3:0;493:997:49;20822:88:0;;;20726;493:997:49;20772:35:0;493:997:49;20811:3:0;493:997:49;20726:88:0;;;20629:89;493:997:49;20676:35:0;493:997:49;20715:3:0;493:997:49;20629:89:0;;;20532;493:997:49;20579:35:0;493:997:49;20618:3:0;493:997:49;20532:89:0;;;20435;493:997:49;20482:35:0;493:997:49;20521:3:0;493:997:49;20435:89:0;;;20338;493:997:49;20385:35:0;493:997:49;20424:3:0;493:997:49;20338:89:0;;;20240:90;493:997:49;20288:35:0;493:997:49;20327:3:0;493:997:49;20240:90:0;;;20142;493:997:49;20190:35:0;493:997:49;20229:3:0;493:997:49;20142:90:0;;;20044;493:997:49;20092:35:0;493:997:49;20131:3:0;493:997:49;20044:90:0;;;19946;493:997:49;19994:35:0;493:997:49;20033:3:0;493:997:49;19946:90:0;;;19847:91;493:997:49;19896:35:0;493:997:49;19935:3:0;493:997:49;19847:91:0;;;19748;493:997:49;19797:35:0;493:997:49;19836:3:0;493:997:49;19748:91:0;;;19649;493:997:49;19698:35:0;493:997:49;19737:3:0;493:997:49;19649:91:0;;;19550;493:997:49;19599:35:0;493:997:49;19638:3:0;493:997:49;19550:91:0;;;19450:92;493:997:49;19500:35:0;493:997:49;19539:3:0;493:997:49;19450:92:0;;;19350;493:997:49;19400:35:0;493:997:49;19439:3:0;493:997:49;19350:92:0;;;19250;493:997:49;19300:35:0;493:997:49;19339:3:0;493:997:49;19250:92:0;;;19150;493:997:49;19200:35:0;493:997:49;19239:3:0;493:997:49;19150:92:0;;;19049:93;493:997:49;19100:35:0;493:997:49;19139:3:0;493:997:49;19049:93:0;;;18948;493:997:49;18999:35:0;493:997:49;19038:3:0;493:997:49;18948:93:0;;;18847;493:997:49;18898:35:0;493:997:49;18937:3:0;493:997:49;18847:93:0;;;18746;493:997:49;18797:35:0;493:997:49;18836:3:0;493:997:49;18746:93:0;;;18644:94;493:997:49;18696:35:0;493:997:49;18735:3:0;493:997:49;18644:94:0;;;18542;493:997:49;18594:35:0;493:997:49;18633:3:0;493:997:49;18542:94:0;;;18440;493:997:49;18492:35:0;493:997:49;18531:3:0;493:997:49;18440:94:0;;;18338;493:997:49;18390:35:0;493:997:49;18429:3:0;493:997:49;18338:94:0;;;18235:95;493:997:49;18288:35:0;493:997:49;18327:3:0;493:997:49;18235:95:0;;;18132;493:997:49;18185:35:0;493:997:49;18224:3:0;493:997:49;18132:95:0;;;18029;493:997:49;18082:35:0;493:997:49;18121:3:0;493:997:49;18029:95:0;;;17926;493:997:49;17979:35:0;493:997:49;18018:3:0;493:997:49;17926:95:0;;;17822:96;493:997:49;17876:35:0;493:997:49;17915:3:0;493:997:49;17822:96:0;;;17718;493:997:49;17772:35:0;493:997:49;17811:3:0;493:997:49;17718:96:0;;;17614;493:997:49;17668:35:0;493:997:49;17707:3:0;493:997:49;17614:96:0;;;17510;493:997:49;17564:35:0;493:997:49;17603:3:0;493:997:49;17510:96:0;;;17405:97;493:997:49;17460:35:0;493:997:49;17499:3:0;493:997:49;17405:97:0;;;17300;493:997:49;17355:35:0;493:997:49;17394:3:0;493:997:49;17300:97:0;;;17195;493:997:49;17250:35:0;493:997:49;17289:3:0;493:997:49;17195:97:0;;;17090;493:997:49;17145:35:0;493:997:49;17184:3:0;493:997:49;17090:97:0;;;16984:98;493:997:49;17040:35:0;493:997:49;17079:3:0;493:997:49;16984:98:0;;;16878;493:997:49;16934:35:0;493:997:49;16973:3:0;493:997:49;16878:98:0;;;16772;493:997:49;16828:35:0;493:997:49;16867:3:0;493:997:49;16772:98:0;;;16666;493:997:49;16722:35:0;493:997:49;16761:3:0;493:997:49;16666:98:0;;;16559:99;493:997:49;16616:35:0;493:997:49;16655:3:0;493:997:49;16559:99:0;;;16452;493:997:49;16509:35:0;493:997:49;16548:3:0;493:997:49;16452:99:0;;;16345;493:997:49;16402:35:0;493:997:49;16441:3:0;493:997:49;16345:99:0;;;16238;493:997:49;16295:35:0;493:997:49;16334:3:0;493:997:49;16238:99:0;;;16130:100;493:997:49;16188:35:0;493:997:49;16227:3:0;493:997:49;16130:100:0;;;16022;493:997:49;16080:35:0;493:997:49;16119:3:0;493:997:49;16022:100:0;;;15914;493:997:49;15972:35:0;493:997:49;16011:3:0;493:997:49;15914:100:0;;;15806;493:997:49;;-1:-1:-1;15806:100:0;","linkReferences":{},"immutableReferences":{"48696":[{"start":3859,"length":32},{"start":3967,"length":32}],"48733":[{"start":4936,"length":32},{"start":5939,"length":32}],"48744":[{"start":1452,"length":32},{"start":3157,"length":32},{"start":4189,"length":32},{"start":4974,"length":32},{"start":5310,"length":32},{"start":7210,"length":32}],"48768":[{"start":791,"length":32},{"start":1527,"length":32}],"48781":[{"start":2053,"length":32},{"start":2674,"length":32}],"50124":[{"start":6992,"length":32},{"start":7585,"length":32},{"start":8436,"length":32},{"start":10263,"length":32}]}},"methodIdentifiers":{"LMSR()":"476e44b6","allProtocolFeesOwed()":"017504b6","allTokens()":"6ff97f1d","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(address,address,uint256,uint256,bool)":"6863f5bc","burnSwap(address,address,uint256,uint256,uint256,bool)":"491e7998","collectProtocolFees()":"a1af5b9a","decimals()":"313ce567","denominators()":"017cf661","fee(uint256,uint256)":"939f5ea4","fees()":"9af1d35a","flashFeePpm()":"31596a6a","flashLoan(address,address,uint256,bytes)":"5cffe9de","getToken(uint256)":"e4b50cb8","initialMint(address,uint256)":"6d8d0ff3","kappa()":"6bba3f2f","kill()":"41c0e1b5","killed()":"1f3a0e41","mint(address,address,uint256,uint256)":"b3f1c93d","mintImpl()":"f0d1ae4f","name()":"06fdde03","numTokens()":"8e499bcf","owner()":"8da5cb5b","protocolFeeAddress()":"cce516b7","protocolFeePpm()":"6b4082d1","renounceOwnership()":"715018a6","setProtocolFeeAddress(address)":"6b7b9112","swap(address,bytes4,address,uint256,uint256,uint256,int128,uint256,bool)":"0eeee627","swapAmounts(uint256,uint256,uint256,int128)":"d516b8c6","swapMint(address,address,uint256,uint256,uint256)":"cb717f3a","swapMintImpl()":"95176066","swapToLimit(address,address,uint256,uint256,int128,uint256,bool)":"79a68d53","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b","wrapperToken()":"0d246214"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens_\",\"type\":\"address[]\"},{\"internalType\":\"int128\",\"name\":\"kappa_\",\"type\":\"int128\"},{\"internalType\":\"uint256[]\",\"name\":\"fees_\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"flashFeePpm_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolFeePpm_\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"protocolFeeAddress_\",\"type\":\"address\"},{\"internalType\":\"contract NativeWrapper\",\"name\":\"wrapperToken_\",\"type\":\"address\"},{\"internalType\":\"contract PartyPoolSwapImpl\",\"name\":\"swapMintImpl_\",\"type\":\"address\"},{\"internalType\":\"contract PartyPoolMintImpl\",\"name\":\"mintImpl_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpBurned\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFee\",\"type\":\"uint256\"}],\"name\":\"BurnSwap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC3156FlashBorrower\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFee\",\"type\":\"uint256\"}],\"name\":\"Flash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Killed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpMinted\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"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\":[],\"name\":\"ProtocolFeesCollected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFee\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFee\",\"type\":\"uint256\"}],\"name\":\"SwapMint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"LMSR\",\"outputs\":[{\"components\":[{\"internalType\":\"int128\",\"name\":\"kappa\",\"type\":\"int128\"},{\"internalType\":\"int128[]\",\"name\":\"qInternal\",\"type\":\"int128[]\"}],\"internalType\":\"struct LMSRStabilized.State\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allProtocolFeesOwed\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allTokens\",\"outputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"withdrawAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"name\":\"burnSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outFee\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectProtocolFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"denominators\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"j\",\"type\":\"uint256\"}],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fees\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"flashFeePpm\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC3156FlashBorrower\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenAddr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flashLoan\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"}],\"name\":\"getToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpTokens\",\"type\":\"uint256\"}],\"name\":\"initialMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lpMinted\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kappa\",\"outputs\":[{\"internalType\":\"int128\",\"name\":\"\",\"type\":\"int128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kill\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpTokenAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lpMinted\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintImpl\",\"outputs\":[{\"internalType\":\"contract PartyPoolMintImpl\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"numTokens\",\"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\":\"protocolFeeAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolFeePpm\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeAddress\",\"type\":\"address\"}],\"name\":\"setProtocolFeeAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"fundingSelector\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"int128\",\"name\":\"limitPrice\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inFee\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"inputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"int128\",\"name\":\"limitPrice\",\"type\":\"int128\"}],\"name\":\"swapAmounts\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountInUsed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lpMinted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inFee\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"swapMintImpl\",\"outputs\":[{\"internalType\":\"contract PartyPoolSwapImpl\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"int128\",\"name\":\"limitPrice\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"name\":\"swapToLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountInUsed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inFee\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wrapperToken\",\"outputs\":[{\"internalType\":\"contract NativeWrapper\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"ProtocolFeesCollected()\":{\"details\":\"After collection, the protocolFee accounting array will be zeroed out.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"burn(address,address,uint256,uint256,bool)\":{\"details\":\"This function forwards the call to the burn implementation via delegatecall\",\"params\":{\"deadline\":\"timestamp after which the transaction will revert. Pass 0 to ignore.\",\"lpAmount\":\"amount of LP tokens to burn (proportional withdrawal)\",\"payer\":\"address that provides the LP tokens to burn\",\"receiver\":\"address that receives the withdrawn tokens\",\"unwrap\":\"if true and the native token is being withdrawn, it is unwraped and sent as native currency\"}},\"burnSwap(address,address,uint256,uint256,uint256,bool)\":{\"details\":\"The function burns LP tokens (authorization via allowance if needed), sends the single-asset payout and updates LMSR state.\",\"params\":{\"deadline\":\"optional deadline\",\"lpAmount\":\"amount of LP tokens to burn\",\"outputTokenIndex\":\"index of target asset to receive\",\"payer\":\"who burns LP tokens\",\"receiver\":\"who receives the single asset\"},\"returns\":{\"amountOut\":\"uint amount of asset outputTokenIndex sent to receiver\",\"outFee\":\"uint amount of output asset kept by the LP's and protocol as a fee\"}},\"collectProtocolFees()\":{\"details\":\"Anyone can call; must have protocolFeeAddress != address(0) to be operational.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` _tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"denominators()\":{\"details\":\"denominators()[i] is the base for tokens[i]. These bases are chosen by deployer and must match token decimals.\"},\"flashLoan(address,address,uint256,bytes)\":{\"details\":\"Initiate a flash loan.\",\"params\":{\"amount\":\"The amount of tokens lent.\",\"data\":\"Arbitrary data structure, intended to contain user-defined parameters.\",\"receiver\":\"The receiver of the tokens in the loan, and the receiver of the callback.\",\"token\":\"The loan currency.\"}},\"getToken(uint256)\":{\"details\":\"tokens[i] corresponds to the i-th asset and maps to index i in the internal LMSR arrays.\"},\"initialMint(address,uint256)\":{\"details\":\"Assumes tokens have already been transferred to the pool prior to calling. Can only be called when the pool is uninitialized (totalSupply() == 0 or _lmsr.nAssets == 0).\",\"params\":{\"lpTokens\":\"The number of LP tokens to issue for this mint. If 0, then the number of tokens returned will equal the LMSR internal q total\",\"receiver\":\"address that receives the LP tokens\"}},\"kappa()\":{\"details\":\"Pools are constructed with a \\u03ba value; this getter exposes the \\u03ba used by the pool.\"},\"mint(address,address,uint256,uint256)\":{\"details\":\"This function forwards the call to the mint implementation via delegatecall\",\"params\":{\"deadline\":\"timestamp after which the transaction will revert. Pass 0 to ignore.\",\"lpTokenAmount\":\"desired amount of LP _tokens to mint\",\"payer\":\"address that provides the input _tokens\",\"receiver\":\"address that receives the LP _tokens\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"protocolFeePpm()\":{\"details\":\"This is the fraction (in ppm) of the pool-collected fees that are owed to the protocol.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"swap(address,bytes4,address,uint256,uint256,uint256,int128,uint256,bool)\":{\"details\":\"This function transfers the exact gross input (including fee) from payer and sends the computed output to receiver. Non-standard tokens (fee-on-transfer, rebasers) are rejected via balance checks.\",\"params\":{\"deadline\":\"timestamp after which the transaction will revert. Pass 0 to ignore.\",\"fundingSelector\":\"If set to USE_APPROVALS, then the payer must use regular ERC20 approvals to authorize the pool to move the required input amount. If this fundingSelector is USE_PREFUNDING, then all of the input amount is expected to have already been sent to the pool and no additional transfers are needed. Refunds of excess input amount are NOT provided and it is illegal to use this funding method with a limit price. Otherwise, for any other fundingSelector value, a callback style funding mechanism is used where the given selector is invoked on the payer, passing the arguments of (address inputToken, uint256 inputAmount). The callback function must send the given amount of input coin to the pool in order to continue the swap transaction, otherwise \\\"Insufficient funds\\\" is thrown.\",\"inputTokenIndex\":\"index of input asset\",\"limitPrice\":\"maximum acceptable marginal price (64.64 fixed point). Pass 0 to ignore.\",\"maxAmountIn\":\"maximum amount of token inputTokenIndex (uint256) to transfer in (inclusive of fees)\",\"outputTokenIndex\":\"index of output asset\",\"payer\":\"address of the account that pays for the swap\",\"receiver\":\"address that will receive the output tokens\"},\"returns\":{\"amountIn\":\"actual input used (uint256), amountOut actual output sent (uint256), inFee fee taken from the input (uint256)\"}},\"swapAmounts(uint256,uint256,uint256,int128)\":{\"params\":{\"inputTokenIndex\":\"index of input token\",\"limitPrice\":\"maximum acceptable marginal price (pass 0 to ignore)\",\"maxAmountIn\":\"maximum gross input allowed (inclusive of fee)\",\"outputTokenIndex\":\"index of output token\"},\"returns\":{\"amountIn\":\"gross input amount to transfer (includes fee), amountOut output amount user would receive, inFee fee taken from input amount\"}},\"swapMint(address,address,uint256,uint256,uint256)\":{\"details\":\"This function forwards the call to the swapMint implementation via delegatecall\",\"params\":{\"deadline\":\"optional deadline\",\"inputTokenIndex\":\"index of the input token\",\"maxAmountIn\":\"maximum uint token input (inclusive of fee)\",\"payer\":\"who transfers the input token\",\"receiver\":\"who receives the minted LP _tokens\"},\"returns\":{\"amountInUsed\":\"actual input used (uint256), lpMinted actual LP minted (uint256), inFee fee taken from the input (uint256)\"}},\"swapToLimit(address,address,uint256,uint256,int128,uint256,bool)\":{\"details\":\"If balances prevent fully reaching the limit, the function caps and returns actuals. The payer must transfer the exact gross input computed by the view.\",\"params\":{\"deadline\":\"timestamp after which the transaction will revert. Pass 0 to ignore.\",\"inputTokenIndex\":\"index of input asset\",\"limitPrice\":\"target marginal price to reach (must be > 0)\",\"outputTokenIndex\":\"index of output asset\",\"payer\":\"address of the account that pays for the swap\",\"receiver\":\"address that will receive the output tokens\"},\"returns\":{\"amountInUsed\":\"actual input used excluding fee (uint256), amountOut actual output sent (uint256), inFee fee taken from the input (uint256)\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s _tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"events\":{\"BurnSwap(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted instead of Burn when a burnSwap is executed.\"},\"ProtocolFeesCollected()\":{\"notice\":\"Emitted when protocol fees are collected from this pool.\"},\"SwapMint(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted instead of Swap when a single-token swapMint is executed.\"}},\"kind\":\"user\",\"methods\":{\"allProtocolFeesOwed()\":{\"notice\":\"Protocol fee ledger accessor. Returns tokens owed (raw uint token units) from this pool as protocol fees that have not yet been transferred out.\"},\"allTokens()\":{\"notice\":\"Returns the list of all token addresses in the pool (copy).\"},\"burn(address,address,uint256,uint256,bool)\":{\"notice\":\"Burn LP tokens and withdraw the proportional basket to receiver.\"},\"burnSwap(address,address,uint256,uint256,uint256,bool)\":{\"notice\":\"Burn LP tokens then swap the redeemed proportional basket into a single asset `outputTokenIndex` and send to receiver.\"},\"collectProtocolFees()\":{\"notice\":\"Transfer all protocol fees to the configured protocolFeeAddress and zero the ledger.\"},\"denominators()\":{\"notice\":\"Per-token uint base denominators used to convert uint token amounts <-> internal Q64.64 representation.\"},\"fee(uint256,uint256)\":{\"notice\":\"Effective combined fee in ppm for (i as input, j as output)\"},\"fees()\":{\"notice\":\"Per-asset swap fees in ppm.\"},\"flashFeePpm()\":{\"notice\":\"Flash-loan fee in parts-per-million (ppm) applied to flash borrow amounts.\"},\"getToken(uint256)\":{\"notice\":\"Token addresses comprising the pool. Effectively immutable after construction.\"},\"initialMint(address,uint256)\":{\"notice\":\"Initial mint to set up pool for the first time.\"},\"kappa()\":{\"notice\":\"Liquidity parameter \\u03ba (Q64.64) used by the LMSR kernel: b = \\u03ba * S(q)\"},\"kill()\":{\"notice\":\"If a security problem is found, the vault owner may call this function to permanently disable swap and mint functionality, leaving only burns (withdrawals) working.\"},\"killed()\":{\"notice\":\"If true, the vault has been disabled by the owner and only burns (withdrawals) are allowed.\"},\"mint(address,address,uint256,uint256)\":{\"notice\":\"Proportional mint for existing pool.\"},\"numTokens()\":{\"notice\":\"Returns the number of tokens (n) in the pool.\"},\"protocolFeeAddress()\":{\"notice\":\"Address to which collected protocol _tokens will be sent on collectProtocolFees()\"},\"protocolFeePpm()\":{\"notice\":\"Protocol fee share (ppm) applied to fees collected by the pool (floored when accrued)\"},\"swap(address,bytes4,address,uint256,uint256,uint256,int128,uint256,bool)\":{\"notice\":\"Swap input token inputTokenIndex -> token outputTokenIndex. Payer must approve token inputTokenIndex.\"},\"swapAmounts(uint256,uint256,uint256,int128)\":{\"notice\":\"External view to quote exact-in swap amounts (gross input incl. fee and output), matching swap() computations\"},\"swapMint(address,address,uint256,uint256,uint256)\":{\"notice\":\"Single-token mint: deposit a single token, charge swap-LMSR cost, and mint LP.\"},\"swapToLimit(address,address,uint256,uint256,int128,uint256,bool)\":{\"notice\":\"Swap up to the price limit; computes max input to reach limit then performs swap.\"},\"wrapperToken()\":{\"notice\":\"Token contract used for wrapping native currency\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/PartyPoolBalancedPair.sol\":\"PartyPoolBalancedPair\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/abdk-libraries-solidity/ABDKMath64x64.sol\":{\"keccak256\":\"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97\",\"license\":\"BSD-4-Clause\",\"urls\":[\"bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7\",\"dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol\":{\"keccak256\":\"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd\",\"dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd\",\"dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168\",\"dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd274645d15bb7e4fcb9c833e401b2c5837404f90057f11a49118f25e0af7c76f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d38e0b997bb7aebae26d190b03d0991feb0d204c45f945e60014e1ca9175de69\",\"dweb:/ipfs/QmWzsUHHAZcjMyF8uMDEtNpMTkYZdQrfvdKPobXvwVHKo6\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x50e81a8b089e3f382b6c915aa0166773de64ea4756e8f9479d9943a5f956ddf5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bfeb96a150537222e2191c03887127499a4f21dfb5f9a7211da4d81749b52848\",\"dweb:/ipfs/QmYR75ECbsBuxSiXmGvGfNKJRLoK5MdLUZL1bd8SixzxL4\"]},\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161\",\"dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"src/ERC20External.sol\":{\"keccak256\":\"0x421f511bb3aa7258fb7121aa66b9a2e8e0b7a07b7e51c800c714f7acbfd599d3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b3fde56a83eae12a31eb4875d8952a99d18591fe0f18b6a12392c8f48f76af46\",\"dweb:/ipfs/QmeApbmGv6Z2b1JynvBxaAK1j1eWhGYpeNEP56V8XXvpcz\"]},\"src/ERC20Internal.sol\":{\"keccak256\":\"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f\",\"dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk\"]},\"src/Funding.sol\":{\"keccak256\":\"0x1d505b256d221cec151157083f8441193bbf7859d13873353429a7ca5342381d\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6871ab97d81ddffc56845142601408e974b7b0c619a2107aacd6b17eafb3330c\",\"dweb:/ipfs/QmU5EKjGN2vDPgXhSsr4qvesq2T5eR5Ybeg25bHrcJyP2y\"]},\"src/IOwnable.sol\":{\"keccak256\":\"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1\",\"dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9\"]},\"src/IPartyPool.sol\":{\"keccak256\":\"0x74b9531bdf2200f256cac6c2cd54c0efad7c1bdfbe694ee910df75448ffe93f4\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://aadd161d7e197b48e6be4198b0f4f81a10016b9904d024e0a361bf2d7f941475\",\"dweb:/ipfs/QmYuGyPZCigmt8va11oAHXPTpHFyF3d7ARDNacyr2jsDfa\"]},\"src/LMSRStabilized.sol\":{\"keccak256\":\"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3\",\"dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB\"]},\"src/LMSRStabilizedBalancedPair.sol\":{\"keccak256\":\"0x782f3baf92f74152c0b93b95199abbb3a36c75c921454260c8b0237f91d7c59d\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://04d463c4fdcb6c8e2ebf9aed649ff21cca759ba73a4c93659e30c7df25e26c81\",\"dweb:/ipfs/QmUxmWytiw5VYJRUrFbSGm1oWmDPQ4q23pnkmK1q9P4apN\"]},\"src/NativeWrapper.sol\":{\"keccak256\":\"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238\",\"dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB\"]},\"src/OwnableExternal.sol\":{\"keccak256\":\"0x0a0199368ad20a31e7169b3e56449bf022c9d680e0d487c118608a7f14cb7efb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3348a063649e01acf9c6aa6b7ce2ecf62ace8c6f1467477de7d605996f08ec64\",\"dweb:/ipfs/QmSoxb35FFsNCgXgWn91CupvjpGmyM31wcfxAVpVFFPecX\"]},\"src/OwnableInternal.sol\":{\"keccak256\":\"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca\",\"dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE\"]},\"src/PartyPool.sol\":{\"keccak256\":\"0xaf921e5a5c32ee53fc1991d20fe030ec0a9572d0a8d112e717476ee4af0b8ab4\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b4bc13e889ec6fb214ac3538203328abede9e316bf617a7f7593b3b0c9ea40f0\",\"dweb:/ipfs/QmWx12PuyFqpy9MyxqJkRvTGkzYAYHajCYps3htgwe3YrX\"]},\"src/PartyPoolBalancedPair.sol\":{\"keccak256\":\"0x7d36ae211709da83ecafcc70f31e5fcdc1bc299243eedceebf17f26339757d7b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://91762575c367c9b1d50a633fb46ccf429a28bbaf70f76b524749ad32dc716d7a\",\"dweb:/ipfs/QmVLxjR3h2XJukjXFx56b4m8SPg6oupxqkzY5EKCK7GFHn\"]},\"src/PartyPoolBase.sol\":{\"keccak256\":\"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5\",\"dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5\"]},\"src/PartyPoolHelpers.sol\":{\"keccak256\":\"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5\",\"dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP\"]},\"src/PartyPoolMintImpl.sol\":{\"keccak256\":\"0xe9d9927cecd46a1f836b2c43e9d6184642b9e695c7462e5fb7c671a38aab7398\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8d821911d7982fc302929198539b27f72be100b91450c98d2e0081519f776499\",\"dweb:/ipfs/QmRChx1DPD1gKXwfD1m6aQ7pgh1aX6CvYLNX41ufdJteaJ\"]},\"src/PartyPoolSwapImpl.sol\":{\"keccak256\":\"0x71ecbd6d0fb106031baed7e4c21694ef24f0112af7d975325b98b1b0463ba5b2\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://64f8f8bae2f89ca495b9edacd012363b55e78a198f100650beb2b1238e8ef11f\",\"dweb:/ipfs/QmVfihiw9TqncuEfZKx7c6WEHiGFfRQyhtfdTGzfN7emNY\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"contract IERC20[]","name":"tokens_","type":"address[]"},{"internalType":"int128","name":"kappa_","type":"int128"},{"internalType":"uint256[]","name":"fees_","type":"uint256[]"},{"internalType":"uint256","name":"flashFeePpm_","type":"uint256"},{"internalType":"uint256","name":"protocolFeePpm_","type":"uint256"},{"internalType":"address","name":"protocolFeeAddress_","type":"address"},{"internalType":"contract NativeWrapper","name":"wrapperToken_","type":"address"},{"internalType":"contract PartyPoolSwapImpl","name":"swapMintImpl_","type":"address"},{"internalType":"contract PartyPoolMintImpl","name":"mintImpl_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":false},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"uint256[]","name":"amounts","type":"uint256[]","indexed":false},{"internalType":"uint256","name":"lpBurned","type":"uint256","indexed":false}],"type":"event","name":"Burn","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":true},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"contract IERC20","name":"tokenOut","type":"address","indexed":true},{"internalType":"uint256","name":"amountIn","type":"uint256","indexed":false},{"internalType":"uint256","name":"amountOut","type":"uint256","indexed":false},{"internalType":"uint256","name":"lpFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolFee","type":"uint256","indexed":false}],"type":"event","name":"BurnSwap","anonymous":false},{"inputs":[{"internalType":"address","name":"initiator","type":"address","indexed":true},{"internalType":"contract IERC3156FlashBorrower","name":"receiver","type":"address","indexed":true},{"internalType":"contract IERC20","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"lpFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolFee","type":"uint256","indexed":false}],"type":"event","name":"Flash","anonymous":false},{"inputs":[],"type":"event","name":"Killed","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":false},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"uint256[]","name":"amounts","type":"uint256[]","indexed":false},{"internalType":"uint256","name":"lpMinted","type":"uint256","indexed":false}],"type":"event","name":"Mint","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":[],"type":"event","name":"ProtocolFeesCollected","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":false},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"contract IERC20","name":"tokenIn","type":"address","indexed":true},{"internalType":"contract IERC20","name":"tokenOut","type":"address","indexed":true},{"internalType":"uint256","name":"amountIn","type":"uint256","indexed":false},{"internalType":"uint256","name":"amountOut","type":"uint256","indexed":false},{"internalType":"uint256","name":"lpFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolFee","type":"uint256","indexed":false}],"type":"event","name":"Swap","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":true},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"contract IERC20","name":"tokenIn","type":"address","indexed":true},{"internalType":"uint256","name":"amountIn","type":"uint256","indexed":false},{"internalType":"uint256","name":"amountOut","type":"uint256","indexed":false},{"internalType":"uint256","name":"lpFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolFee","type":"uint256","indexed":false}],"type":"event","name":"SwapMint","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"LMSR","outputs":[{"internalType":"struct LMSRStabilized.State","name":"","type":"tuple","components":[{"internalType":"int128","name":"kappa","type":"int128"},{"internalType":"int128[]","name":"qInternal","type":"int128[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"allProtocolFeesOwed","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"allTokens","outputs":[{"internalType":"contract IERC20[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"lpAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"unwrap","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"burn","outputs":[{"internalType":"uint256[]","name":"withdrawAmounts","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"lpAmount","type":"uint256"},{"internalType":"uint256","name":"outputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"unwrap","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"burnSwap","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"outFee","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"collectProtocolFees"},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"denominators","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"i","type":"uint256"},{"internalType":"uint256","name":"j","type":"uint256"}],"stateMutability":"view","type":"function","name":"fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"fees","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"flashFeePpm","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"contract IERC3156FlashBorrower","name":"receiver","type":"address"},{"internalType":"address","name":"tokenAddr","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"flashLoan","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"i","type":"uint256"}],"stateMutability":"view","type":"function","name":"getToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"lpTokens","type":"uint256"}],"stateMutability":"payable","type":"function","name":"initialMint","outputs":[{"internalType":"uint256","name":"lpMinted","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"kappa","outputs":[{"internalType":"int128","name":"","type":"int128"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"kill"},{"inputs":[],"stateMutability":"view","type":"function","name":"killed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"lpTokenAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"payable","type":"function","name":"mint","outputs":[{"internalType":"uint256","name":"lpMinted","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mintImpl","outputs":[{"internalType":"contract PartyPoolMintImpl","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"numTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"protocolFeeAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"protocolFeePpm","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"feeAddress","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setProtocolFeeAddress"},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"bytes4","name":"fundingSelector","type":"bytes4"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"inputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"outputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"int128","name":"limitPrice","type":"int128"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"unwrap","type":"bool"}],"stateMutability":"payable","type":"function","name":"swap","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"inFee","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"inputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"outputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"int128","name":"limitPrice","type":"int128"}],"stateMutability":"view","type":"function","name":"swapAmounts","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"inFee","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"inputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"payable","type":"function","name":"swapMint","outputs":[{"internalType":"uint256","name":"amountInUsed","type":"uint256"},{"internalType":"uint256","name":"lpMinted","type":"uint256"},{"internalType":"uint256","name":"inFee","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"swapMintImpl","outputs":[{"internalType":"contract PartyPoolSwapImpl","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"inputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"outputTokenIndex","type":"uint256"},{"internalType":"int128","name":"limitPrice","type":"int128"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"unwrap","type":"bool"}],"stateMutability":"payable","type":"function","name":"swapToLimit","outputs":[{"internalType":"uint256","name":"amountInUsed","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"inFee","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"wrapperToken","outputs":[{"internalType":"contract NativeWrapper","name":"","type":"address"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"burn(address,address,uint256,uint256,bool)":{"details":"This function forwards the call to the burn implementation via delegatecall","params":{"deadline":"timestamp after which the transaction will revert. Pass 0 to ignore.","lpAmount":"amount of LP tokens to burn (proportional withdrawal)","payer":"address that provides the LP tokens to burn","receiver":"address that receives the withdrawn tokens","unwrap":"if true and the native token is being withdrawn, it is unwraped and sent as native currency"}},"burnSwap(address,address,uint256,uint256,uint256,bool)":{"details":"The function burns LP tokens (authorization via allowance if needed), sends the single-asset payout and updates LMSR state.","params":{"deadline":"optional deadline","lpAmount":"amount of LP tokens to burn","outputTokenIndex":"index of target asset to receive","payer":"who burns LP tokens","receiver":"who receives the single asset"},"returns":{"amountOut":"uint amount of asset outputTokenIndex sent to receiver","outFee":"uint amount of output asset kept by the LP's and protocol as a fee"}},"collectProtocolFees()":{"details":"Anyone can call; must have protocolFeeAddress != address(0) to be operational."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` _tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"denominators()":{"details":"denominators()[i] is the base for tokens[i]. These bases are chosen by deployer and must match token decimals."},"flashLoan(address,address,uint256,bytes)":{"details":"Initiate a flash loan.","params":{"amount":"The amount of tokens lent.","data":"Arbitrary data structure, intended to contain user-defined parameters.","receiver":"The receiver of the tokens in the loan, and the receiver of the callback.","token":"The loan currency."}},"getToken(uint256)":{"details":"tokens[i] corresponds to the i-th asset and maps to index i in the internal LMSR arrays."},"initialMint(address,uint256)":{"details":"Assumes tokens have already been transferred to the pool prior to calling. Can only be called when the pool is uninitialized (totalSupply() == 0 or _lmsr.nAssets == 0).","params":{"lpTokens":"The number of LP tokens to issue for this mint. If 0, then the number of tokens returned will equal the LMSR internal q total","receiver":"address that receives the LP tokens"}},"kappa()":{"details":"Pools are constructed with a κ value; this getter exposes the κ used by the pool."},"mint(address,address,uint256,uint256)":{"details":"This function forwards the call to the mint implementation via delegatecall","params":{"deadline":"timestamp after which the transaction will revert. Pass 0 to ignore.","lpTokenAmount":"desired amount of LP _tokens to mint","payer":"address that provides the input _tokens","receiver":"address that receives the LP _tokens"}},"name()":{"details":"Returns the name of the token."},"owner()":{"details":"Returns the address of the current owner."},"protocolFeePpm()":{"details":"This is the fraction (in ppm) of the pool-collected fees that are owed to the protocol."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"swap(address,bytes4,address,uint256,uint256,uint256,int128,uint256,bool)":{"details":"This function transfers the exact gross input (including fee) from payer and sends the computed output to receiver. Non-standard tokens (fee-on-transfer, rebasers) are rejected via balance checks.","params":{"deadline":"timestamp after which the transaction will revert. Pass 0 to ignore.","fundingSelector":"If set to USE_APPROVALS, then the payer must use regular ERC20 approvals to authorize the pool to move the required input amount. If this fundingSelector is USE_PREFUNDING, then all of the input amount is expected to have already been sent to the pool and no additional transfers are needed. Refunds of excess input amount are NOT provided and it is illegal to use this funding method with a limit price. Otherwise, for any other fundingSelector value, a callback style funding mechanism is used where the given selector is invoked on the payer, passing the arguments of (address inputToken, uint256 inputAmount). The callback function must send the given amount of input coin to the pool in order to continue the swap transaction, otherwise \"Insufficient funds\" is thrown.","inputTokenIndex":"index of input asset","limitPrice":"maximum acceptable marginal price (64.64 fixed point). Pass 0 to ignore.","maxAmountIn":"maximum amount of token inputTokenIndex (uint256) to transfer in (inclusive of fees)","outputTokenIndex":"index of output asset","payer":"address of the account that pays for the swap","receiver":"address that will receive the output tokens"},"returns":{"amountIn":"actual input used (uint256), amountOut actual output sent (uint256), inFee fee taken from the input (uint256)"}},"swapAmounts(uint256,uint256,uint256,int128)":{"params":{"inputTokenIndex":"index of input token","limitPrice":"maximum acceptable marginal price (pass 0 to ignore)","maxAmountIn":"maximum gross input allowed (inclusive of fee)","outputTokenIndex":"index of output token"},"returns":{"amountIn":"gross input amount to transfer (includes fee), amountOut output amount user would receive, inFee fee taken from input amount"}},"swapMint(address,address,uint256,uint256,uint256)":{"details":"This function forwards the call to the swapMint implementation via delegatecall","params":{"deadline":"optional deadline","inputTokenIndex":"index of the input token","maxAmountIn":"maximum uint token input (inclusive of fee)","payer":"who transfers the input token","receiver":"who receives the minted LP _tokens"},"returns":{"amountInUsed":"actual input used (uint256), lpMinted actual LP minted (uint256), inFee fee taken from the input (uint256)"}},"swapToLimit(address,address,uint256,uint256,int128,uint256,bool)":{"details":"If balances prevent fully reaching the limit, the function caps and returns actuals. The payer must transfer the exact gross input computed by the view.","params":{"deadline":"timestamp after which the transaction will revert. Pass 0 to ignore.","inputTokenIndex":"index of input asset","limitPrice":"target marginal price to reach (must be > 0)","outputTokenIndex":"index of output asset","payer":"address of the account that pays for the swap","receiver":"address that will receive the output tokens"},"returns":{"amountInUsed":"actual input used excluding fee (uint256), amountOut actual output sent (uint256), inFee fee taken from the input (uint256)"}},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s _tokens of at least `value`."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{"allProtocolFeesOwed()":{"notice":"Protocol fee ledger accessor. Returns tokens owed (raw uint token units) from this pool as protocol fees that have not yet been transferred out."},"allTokens()":{"notice":"Returns the list of all token addresses in the pool (copy)."},"burn(address,address,uint256,uint256,bool)":{"notice":"Burn LP tokens and withdraw the proportional basket to receiver."},"burnSwap(address,address,uint256,uint256,uint256,bool)":{"notice":"Burn LP tokens then swap the redeemed proportional basket into a single asset `outputTokenIndex` and send to receiver."},"collectProtocolFees()":{"notice":"Transfer all protocol fees to the configured protocolFeeAddress and zero the ledger."},"denominators()":{"notice":"Per-token uint base denominators used to convert uint token amounts <-> internal Q64.64 representation."},"fee(uint256,uint256)":{"notice":"Effective combined fee in ppm for (i as input, j as output)"},"fees()":{"notice":"Per-asset swap fees in ppm."},"flashFeePpm()":{"notice":"Flash-loan fee in parts-per-million (ppm) applied to flash borrow amounts."},"getToken(uint256)":{"notice":"Token addresses comprising the pool. Effectively immutable after construction."},"initialMint(address,uint256)":{"notice":"Initial mint to set up pool for the first time."},"kappa()":{"notice":"Liquidity parameter κ (Q64.64) used by the LMSR kernel: b = κ * S(q)"},"kill()":{"notice":"If a security problem is found, the vault owner may call this function to permanently disable swap and mint functionality, leaving only burns (withdrawals) working."},"killed()":{"notice":"If true, the vault has been disabled by the owner and only burns (withdrawals) are allowed."},"mint(address,address,uint256,uint256)":{"notice":"Proportional mint for existing pool."},"numTokens()":{"notice":"Returns the number of tokens (n) in the pool."},"protocolFeeAddress()":{"notice":"Address to which collected protocol _tokens will be sent on collectProtocolFees()"},"protocolFeePpm()":{"notice":"Protocol fee share (ppm) applied to fees collected by the pool (floored when accrued)"},"swap(address,bytes4,address,uint256,uint256,uint256,int128,uint256,bool)":{"notice":"Swap input token inputTokenIndex -> token outputTokenIndex. Payer must approve token inputTokenIndex."},"swapAmounts(uint256,uint256,uint256,int128)":{"notice":"External view to quote exact-in swap amounts (gross input incl. fee and output), matching swap() computations"},"swapMint(address,address,uint256,uint256,uint256)":{"notice":"Single-token mint: deposit a single token, charge swap-LMSR cost, and mint LP."},"swapToLimit(address,address,uint256,uint256,int128,uint256,bool)":{"notice":"Swap up to the price limit; computes max input to reach limit then performs swap."},"wrapperToken()":{"notice":"Token contract used for wrapping native currency"}},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/PartyPoolBalancedPair.sol":"PartyPoolBalancedPair"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/abdk-libraries-solidity/ABDKMath64x64.sol":{"keccak256":"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97","urls":["bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7","dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN"],"license":"BSD-4-Clause"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d","urls":["bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100","dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc","urls":["bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037","dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44","urls":["bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d","dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol":{"keccak256":"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e","urls":["bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd","dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86","urls":["bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd","dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9","urls":["bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168","dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd274645d15bb7e4fcb9c833e401b2c5837404f90057f11a49118f25e0af7c76f","urls":["bzz-raw://d38e0b997bb7aebae26d190b03d0991feb0d204c45f945e60014e1ca9175de69","dweb:/ipfs/QmWzsUHHAZcjMyF8uMDEtNpMTkYZdQrfvdKPobXvwVHKo6"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol":{"keccak256":"0x50e81a8b089e3f382b6c915aa0166773de64ea4756e8f9479d9943a5f956ddf5","urls":["bzz-raw://bfeb96a150537222e2191c03887127499a4f21dfb5f9a7211da4d81749b52848","dweb:/ipfs/QmYR75ECbsBuxSiXmGvGfNKJRLoK5MdLUZL1bd8SixzxL4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol":{"keccak256":"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0","urls":["bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161","dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"},"src/ERC20External.sol":{"keccak256":"0x421f511bb3aa7258fb7121aa66b9a2e8e0b7a07b7e51c800c714f7acbfd599d3","urls":["bzz-raw://b3fde56a83eae12a31eb4875d8952a99d18591fe0f18b6a12392c8f48f76af46","dweb:/ipfs/QmeApbmGv6Z2b1JynvBxaAK1j1eWhGYpeNEP56V8XXvpcz"],"license":"UNLICENSED"},"src/ERC20Internal.sol":{"keccak256":"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36","urls":["bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f","dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk"],"license":"UNLICENSED"},"src/Funding.sol":{"keccak256":"0x1d505b256d221cec151157083f8441193bbf7859d13873353429a7ca5342381d","urls":["bzz-raw://6871ab97d81ddffc56845142601408e974b7b0c619a2107aacd6b17eafb3330c","dweb:/ipfs/QmU5EKjGN2vDPgXhSsr4qvesq2T5eR5Ybeg25bHrcJyP2y"],"license":"UNLICENSED"},"src/IOwnable.sol":{"keccak256":"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990","urls":["bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1","dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9"],"license":"MIT"},"src/IPartyPool.sol":{"keccak256":"0x74b9531bdf2200f256cac6c2cd54c0efad7c1bdfbe694ee910df75448ffe93f4","urls":["bzz-raw://aadd161d7e197b48e6be4198b0f4f81a10016b9904d024e0a361bf2d7f941475","dweb:/ipfs/QmYuGyPZCigmt8va11oAHXPTpHFyF3d7ARDNacyr2jsDfa"],"license":"UNLICENSED"},"src/LMSRStabilized.sol":{"keccak256":"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b","urls":["bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3","dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB"],"license":"UNLICENSED"},"src/LMSRStabilizedBalancedPair.sol":{"keccak256":"0x782f3baf92f74152c0b93b95199abbb3a36c75c921454260c8b0237f91d7c59d","urls":["bzz-raw://04d463c4fdcb6c8e2ebf9aed649ff21cca759ba73a4c93659e30c7df25e26c81","dweb:/ipfs/QmUxmWytiw5VYJRUrFbSGm1oWmDPQ4q23pnkmK1q9P4apN"],"license":"UNLICENSED"},"src/NativeWrapper.sol":{"keccak256":"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579","urls":["bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238","dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB"],"license":"UNLICENSED"},"src/OwnableExternal.sol":{"keccak256":"0x0a0199368ad20a31e7169b3e56449bf022c9d680e0d487c118608a7f14cb7efb","urls":["bzz-raw://3348a063649e01acf9c6aa6b7ce2ecf62ace8c6f1467477de7d605996f08ec64","dweb:/ipfs/QmSoxb35FFsNCgXgWn91CupvjpGmyM31wcfxAVpVFFPecX"],"license":"MIT"},"src/OwnableInternal.sol":{"keccak256":"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581","urls":["bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca","dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE"],"license":"MIT"},"src/PartyPool.sol":{"keccak256":"0xaf921e5a5c32ee53fc1991d20fe030ec0a9572d0a8d112e717476ee4af0b8ab4","urls":["bzz-raw://b4bc13e889ec6fb214ac3538203328abede9e316bf617a7f7593b3b0c9ea40f0","dweb:/ipfs/QmWx12PuyFqpy9MyxqJkRvTGkzYAYHajCYps3htgwe3YrX"],"license":"UNLICENSED"},"src/PartyPoolBalancedPair.sol":{"keccak256":"0x7d36ae211709da83ecafcc70f31e5fcdc1bc299243eedceebf17f26339757d7b","urls":["bzz-raw://91762575c367c9b1d50a633fb46ccf429a28bbaf70f76b524749ad32dc716d7a","dweb:/ipfs/QmVLxjR3h2XJukjXFx56b4m8SPg6oupxqkzY5EKCK7GFHn"],"license":"UNLICENSED"},"src/PartyPoolBase.sol":{"keccak256":"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999","urls":["bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5","dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5"],"license":"UNLICENSED"},"src/PartyPoolHelpers.sol":{"keccak256":"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c","urls":["bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5","dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP"],"license":"UNLICENSED"},"src/PartyPoolMintImpl.sol":{"keccak256":"0xe9d9927cecd46a1f836b2c43e9d6184642b9e695c7462e5fb7c671a38aab7398","urls":["bzz-raw://8d821911d7982fc302929198539b27f72be100b91450c98d2e0081519f776499","dweb:/ipfs/QmRChx1DPD1gKXwfD1m6aQ7pgh1aX6CvYLNX41ufdJteaJ"],"license":"UNLICENSED"},"src/PartyPoolSwapImpl.sol":{"keccak256":"0x71ecbd6d0fb106031baed7e4c21694ef24f0112af7d975325b98b1b0463ba5b2","urls":["bzz-raw://64f8f8bae2f89ca495b9edacd012363b55e78a198f100650beb2b1238e8ef11f","dweb:/ipfs/QmVfihiw9TqncuEfZKx7c6WEHiGFfRQyhtfdTGzfN7emNY"],"license":"UNLICENSED"}},"version":1},"id":49} \ No newline at end of file diff --git a/deployment/11155111/v1/out/PartyPoolBase.sol/PartyPoolBase.json b/deployment/11155111/v1/out/PartyPoolBase.sol/PartyPoolBase.json index 4bd37da..e64d0a6 100644 --- a/deployment/11155111/v1/out/PartyPoolBase.sol/PartyPoolBase.json +++ b/deployment/11155111/v1/out/PartyPoolBase.sol/PartyPoolBase.json @@ -1 +1 @@ -{"abi":[{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"}],\"devdoc\":{\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"LP_SCALE\":{\"details\":\"LP _tokens are minted in units equal to ABDK.mulu(lastTotalQ64x64, LP_SCALE).\"},\"_bases\":{\"details\":\"denominators()[i] is the base for _tokens[i]. These _bases are chosen by deployer and must match token decimals.\"},\"_tokenAddressToIndexPlusOne\":{\"details\":\"Use index = _tokenAddressToIndexPlusOne[token] - 1 when non-zero.\"},\"_tokens\":{\"details\":\"_tokens[i] corresponds to the i-th asset and maps to index i in the internal LMSR arrays.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Abstract base contract that contains storage and internal helpers only. No external/public functions here.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/PartyPoolBase.sol\":\"PartyPoolBase\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/abdk-libraries-solidity/ABDKMath64x64.sol\":{\"keccak256\":\"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97\",\"license\":\"BSD-4-Clause\",\"urls\":[\"bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7\",\"dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd\",\"dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168\",\"dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161\",\"dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"src/ERC20Internal.sol\":{\"keccak256\":\"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f\",\"dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk\"]},\"src/IOwnable.sol\":{\"keccak256\":\"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1\",\"dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9\"]},\"src/LMSRStabilized.sol\":{\"keccak256\":\"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3\",\"dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB\"]},\"src/NativeWrapper.sol\":{\"keccak256\":\"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238\",\"dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB\"]},\"src/OwnableInternal.sol\":{\"keccak256\":\"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca\",\"dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE\"]},\"src/PartyPoolBase.sol\":{\"keccak256\":\"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5\",\"dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5\"]},\"src/PartyPoolHelpers.sol\":{\"keccak256\":\"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5\",\"dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/PartyPoolBase.sol":"PartyPoolBase"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/abdk-libraries-solidity/ABDKMath64x64.sol":{"keccak256":"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97","urls":["bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7","dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN"],"license":"BSD-4-Clause"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d","urls":["bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100","dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc","urls":["bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037","dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44","urls":["bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d","dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86","urls":["bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd","dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9","urls":["bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168","dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol":{"keccak256":"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0","urls":["bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161","dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"},"src/ERC20Internal.sol":{"keccak256":"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36","urls":["bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f","dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk"],"license":"UNLICENSED"},"src/IOwnable.sol":{"keccak256":"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990","urls":["bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1","dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9"],"license":"MIT"},"src/LMSRStabilized.sol":{"keccak256":"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b","urls":["bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3","dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB"],"license":"UNLICENSED"},"src/NativeWrapper.sol":{"keccak256":"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579","urls":["bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238","dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB"],"license":"UNLICENSED"},"src/OwnableInternal.sol":{"keccak256":"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581","urls":["bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca","dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE"],"license":"MIT"},"src/PartyPoolBase.sol":{"keccak256":"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999","urls":["bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5","dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5"],"license":"UNLICENSED"},"src/PartyPoolHelpers.sol":{"keccak256":"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c","urls":["bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5","dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP"],"license":"UNLICENSED"}},"version":1},"id":51} \ No newline at end of file +{"abi":[{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"}],\"devdoc\":{\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"LP_SCALE\":{\"details\":\"LP _tokens are minted in units equal to ABDK.mulu(lastTotalQ64x64, LP_SCALE).\"},\"_bases\":{\"details\":\"denominators()[i] is the base for _tokens[i]. These _bases are chosen by deployer and must match token decimals.\"},\"_tokenAddressToIndexPlusOne\":{\"details\":\"Use index = _tokenAddressToIndexPlusOne[token] - 1 when non-zero.\"},\"_tokens\":{\"details\":\"_tokens[i] corresponds to the i-th asset and maps to index i in the internal LMSR arrays.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Abstract base contract that contains storage and internal helpers only. No external/public functions here.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/PartyPoolBase.sol\":\"PartyPoolBase\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/abdk-libraries-solidity/ABDKMath64x64.sol\":{\"keccak256\":\"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97\",\"license\":\"BSD-4-Clause\",\"urls\":[\"bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7\",\"dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd\",\"dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168\",\"dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161\",\"dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"src/ERC20Internal.sol\":{\"keccak256\":\"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f\",\"dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk\"]},\"src/IOwnable.sol\":{\"keccak256\":\"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1\",\"dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9\"]},\"src/LMSRStabilized.sol\":{\"keccak256\":\"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3\",\"dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB\"]},\"src/NativeWrapper.sol\":{\"keccak256\":\"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238\",\"dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB\"]},\"src/OwnableInternal.sol\":{\"keccak256\":\"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca\",\"dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE\"]},\"src/PartyPoolBase.sol\":{\"keccak256\":\"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5\",\"dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5\"]},\"src/PartyPoolHelpers.sol\":{\"keccak256\":\"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5\",\"dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/PartyPoolBase.sol":"PartyPoolBase"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/abdk-libraries-solidity/ABDKMath64x64.sol":{"keccak256":"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97","urls":["bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7","dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN"],"license":"BSD-4-Clause"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d","urls":["bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100","dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc","urls":["bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037","dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44","urls":["bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d","dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86","urls":["bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd","dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9","urls":["bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168","dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol":{"keccak256":"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0","urls":["bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161","dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"},"src/ERC20Internal.sol":{"keccak256":"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36","urls":["bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f","dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk"],"license":"UNLICENSED"},"src/IOwnable.sol":{"keccak256":"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990","urls":["bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1","dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9"],"license":"MIT"},"src/LMSRStabilized.sol":{"keccak256":"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b","urls":["bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3","dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB"],"license":"UNLICENSED"},"src/NativeWrapper.sol":{"keccak256":"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579","urls":["bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238","dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB"],"license":"UNLICENSED"},"src/OwnableInternal.sol":{"keccak256":"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581","urls":["bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca","dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE"],"license":"MIT"},"src/PartyPoolBase.sol":{"keccak256":"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999","urls":["bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5","dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5"],"license":"UNLICENSED"},"src/PartyPoolHelpers.sol":{"keccak256":"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c","urls":["bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5","dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP"],"license":"UNLICENSED"}},"version":1},"id":50} \ No newline at end of file diff --git a/deployment/11155111/v1/out/PartyPoolDeployer.sol/IPartyPoolDeployer.json b/deployment/11155111/v1/out/PartyPoolDeployer.sol/IPartyPoolDeployer.json index 3f37181..986c876 100644 --- a/deployment/11155111/v1/out/PartyPoolDeployer.sol/IPartyPoolDeployer.json +++ b/deployment/11155111/v1/out/PartyPoolDeployer.sol/IPartyPoolDeployer.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"deploy","inputs":[{"name":"owner_","type":"address","internalType":"address"},{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"},{"name":"tokens_","type":"address[]","internalType":"contract IERC20[]"},{"name":"kappa_","type":"int128","internalType":"int128"},{"name":"fees_","type":"uint256[]","internalType":"uint256[]"},{"name":"flashFeePpm_","type":"uint256","internalType":"uint256"},{"name":"protocolFeePpm_","type":"uint256","internalType":"uint256"},{"name":"protocolFeeAddress_","type":"address","internalType":"address"},{"name":"wrapper_","type":"address","internalType":"contract NativeWrapper"},{"name":"swapImpl_","type":"address","internalType":"contract PartyPoolSwapImpl"},{"name":"mintImpl_","type":"address","internalType":"contract PartyPoolMintImpl"}],"outputs":[{"name":"pool","type":"address","internalType":"contract IPartyPool"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"deploy(address,string,string,address[],int128,uint256[],uint256,uint256,address,address,address,address)":"6ae73ce3"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens_\",\"type\":\"address[]\"},{\"internalType\":\"int128\",\"name\":\"kappa_\",\"type\":\"int128\"},{\"internalType\":\"uint256[]\",\"name\":\"fees_\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"flashFeePpm_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolFeePpm_\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"protocolFeeAddress_\",\"type\":\"address\"},{\"internalType\":\"contract NativeWrapper\",\"name\":\"wrapper_\",\"type\":\"address\"},{\"internalType\":\"contract PartyPoolSwapImpl\",\"name\":\"swapImpl_\",\"type\":\"address\"},{\"internalType\":\"contract PartyPoolMintImpl\",\"name\":\"mintImpl_\",\"type\":\"address\"}],\"name\":\"deploy\",\"outputs\":[{\"internalType\":\"contract IPartyPool\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/PartyPoolDeployer.sol\":\"IPartyPoolDeployer\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/abdk-libraries-solidity/ABDKMath64x64.sol\":{\"keccak256\":\"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97\",\"license\":\"BSD-4-Clause\",\"urls\":[\"bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7\",\"dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol\":{\"keccak256\":\"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd\",\"dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashLender.sol\":{\"keccak256\":\"0x3a3549277762438ad9a38fce50493ed8995b806f78aabff02d51b4e1671ce6f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f105ec892766b8a41ece6d3b10a4e434166cc8db4ddb8451493a2de93cf7d893\",\"dweb:/ipfs/QmP5wxpX9cDzKtToA2cM5jbb928UN8DtGyV1cG4w7jPJCt\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd\",\"dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0x25f9b099413f805b4c4bbad8cc179326c10be237aec00349caf91524f8db0bbc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dcfb75af07ad33b1f8e966f793db3df8fbcfb14103ed3644c0c634658a8fd099\",\"dweb:/ipfs/QmPWamdkbcKwG3ah2G9TZtKHzQmjnunsWoPWr5KKfbrKNb\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168\",\"dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd274645d15bb7e4fcb9c833e401b2c5837404f90057f11a49118f25e0af7c76f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d38e0b997bb7aebae26d190b03d0991feb0d204c45f945e60014e1ca9175de69\",\"dweb:/ipfs/QmWzsUHHAZcjMyF8uMDEtNpMTkYZdQrfvdKPobXvwVHKo6\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x50e81a8b089e3f382b6c915aa0166773de64ea4756e8f9479d9943a5f956ddf5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bfeb96a150537222e2191c03887127499a4f21dfb5f9a7211da4d81749b52848\",\"dweb:/ipfs/QmYR75ECbsBuxSiXmGvGfNKJRLoK5MdLUZL1bd8SixzxL4\"]},\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161\",\"dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"src/ERC20External.sol\":{\"keccak256\":\"0x421f511bb3aa7258fb7121aa66b9a2e8e0b7a07b7e51c800c714f7acbfd599d3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b3fde56a83eae12a31eb4875d8952a99d18591fe0f18b6a12392c8f48f76af46\",\"dweb:/ipfs/QmeApbmGv6Z2b1JynvBxaAK1j1eWhGYpeNEP56V8XXvpcz\"]},\"src/ERC20Internal.sol\":{\"keccak256\":\"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f\",\"dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk\"]},\"src/IOwnable.sol\":{\"keccak256\":\"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1\",\"dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9\"]},\"src/IPartyFlashCallback.sol\":{\"keccak256\":\"0xff1d473d27c4dc75441a5f0db2d761916cce4a702f660e998467791efd1d9b2e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3220d69c62ed8c8106762c92857f24011284e8ddcfa5db4210e506b112fa1870\",\"dweb:/ipfs/QmYoZiGsVwoJvyPMcsSste4tq93wVBgDqCZkwPY7dvyLBJ\"]},\"src/IPartyInfo.sol\":{\"keccak256\":\"0x80e88e8c29cdf12426f16b4bf2a088397fcc31c2664564f7f26117dc85009af7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b91392cbda8adfccf9bea2e584616c4b3359d7381a18f5f3e5c9c71618786051\",\"dweb:/ipfs/QmWtWb1gVs2pzFkjwDj4mcdoCnQLPbwq4Qxbh38VEdWwAW\"]},\"src/IPartyPool.sol\":{\"keccak256\":\"0x55d3656b1a4c75801852066b7ba871212e5e807917b3b9029349349fae39375c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://009b67ccf1d28a04a2407a05ddda8f954033b7ac70f7fd5cbedbf779e867df9f\",\"dweb:/ipfs/QmS5vQcfma6PN28Q6qQwqa7KmUKu2KST72jwF8ffsj6Bw2\"]},\"src/LMSRStabilized.sol\":{\"keccak256\":\"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3\",\"dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB\"]},\"src/LMSRStabilizedBalancedPair.sol\":{\"keccak256\":\"0x782f3baf92f74152c0b93b95199abbb3a36c75c921454260c8b0237f91d7c59d\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://04d463c4fdcb6c8e2ebf9aed649ff21cca759ba73a4c93659e30c7df25e26c81\",\"dweb:/ipfs/QmUxmWytiw5VYJRUrFbSGm1oWmDPQ4q23pnkmK1q9P4apN\"]},\"src/NativeWrapper.sol\":{\"keccak256\":\"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238\",\"dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB\"]},\"src/OwnableExternal.sol\":{\"keccak256\":\"0x0a0199368ad20a31e7169b3e56449bf022c9d680e0d487c118608a7f14cb7efb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3348a063649e01acf9c6aa6b7ce2ecf62ace8c6f1467477de7d605996f08ec64\",\"dweb:/ipfs/QmSoxb35FFsNCgXgWn91CupvjpGmyM31wcfxAVpVFFPecX\"]},\"src/OwnableInternal.sol\":{\"keccak256\":\"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca\",\"dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE\"]},\"src/PartyPool.sol\":{\"keccak256\":\"0xf4af110b4cd06a00ee1ec2bd61e887662dcb26aaf6903b9910902614b50e4955\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://691fabaffecdf698601cc0696099e3bfa44ed60097b8f9b9f01cd4bf703bbb77\",\"dweb:/ipfs/QmXuPX2zu8sN9VyePDvVra4QP8LN2knNxbiGsMGzYAyS8S\"]},\"src/PartyPoolBalancedPair.sol\":{\"keccak256\":\"0x7d36ae211709da83ecafcc70f31e5fcdc1bc299243eedceebf17f26339757d7b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://91762575c367c9b1d50a633fb46ccf429a28bbaf70f76b524749ad32dc716d7a\",\"dweb:/ipfs/QmVLxjR3h2XJukjXFx56b4m8SPg6oupxqkzY5EKCK7GFHn\"]},\"src/PartyPoolBase.sol\":{\"keccak256\":\"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5\",\"dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5\"]},\"src/PartyPoolDeployer.sol\":{\"keccak256\":\"0xdf2a6a8602eba3aef625c798a0ec6525feb7520c2fd6933c30dd76fe3c4e2618\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9aa94963e0d34feddf63b3ae034874557229740be1ef80f49e87bd05694c9b50\",\"dweb:/ipfs/QmYQ6mH1mEJCJ9XNGdT3saRU3q36GZ94WuyRsn9LRWXtbM\"]},\"src/PartyPoolHelpers.sol\":{\"keccak256\":\"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5\",\"dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP\"]},\"src/PartyPoolMintImpl.sol\":{\"keccak256\":\"0xe9d9927cecd46a1f836b2c43e9d6184642b9e695c7462e5fb7c671a38aab7398\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8d821911d7982fc302929198539b27f72be100b91450c98d2e0081519f776499\",\"dweb:/ipfs/QmRChx1DPD1gKXwfD1m6aQ7pgh1aX6CvYLNX41ufdJteaJ\"]},\"src/PartyPoolSwapImpl.sol\":{\"keccak256\":\"0x71ecbd6d0fb106031baed7e4c21694ef24f0112af7d975325b98b1b0463ba5b2\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://64f8f8bae2f89ca495b9edacd012363b55e78a198f100650beb2b1238e8ef11f\",\"dweb:/ipfs/QmVfihiw9TqncuEfZKx7c6WEHiGFfRQyhtfdTGzfN7emNY\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"contract IERC20[]","name":"tokens_","type":"address[]"},{"internalType":"int128","name":"kappa_","type":"int128"},{"internalType":"uint256[]","name":"fees_","type":"uint256[]"},{"internalType":"uint256","name":"flashFeePpm_","type":"uint256"},{"internalType":"uint256","name":"protocolFeePpm_","type":"uint256"},{"internalType":"address","name":"protocolFeeAddress_","type":"address"},{"internalType":"contract NativeWrapper","name":"wrapper_","type":"address"},{"internalType":"contract PartyPoolSwapImpl","name":"swapImpl_","type":"address"},{"internalType":"contract PartyPoolMintImpl","name":"mintImpl_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deploy","outputs":[{"internalType":"contract IPartyPool","name":"pool","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/PartyPoolDeployer.sol":"IPartyPoolDeployer"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/abdk-libraries-solidity/ABDKMath64x64.sol":{"keccak256":"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97","urls":["bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7","dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN"],"license":"BSD-4-Clause"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d","urls":["bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100","dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc","urls":["bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037","dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44","urls":["bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d","dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol":{"keccak256":"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e","urls":["bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd","dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashLender.sol":{"keccak256":"0x3a3549277762438ad9a38fce50493ed8995b806f78aabff02d51b4e1671ce6f5","urls":["bzz-raw://f105ec892766b8a41ece6d3b10a4e434166cc8db4ddb8451493a2de93cf7d893","dweb:/ipfs/QmP5wxpX9cDzKtToA2cM5jbb928UN8DtGyV1cG4w7jPJCt"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86","urls":["bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd","dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0x25f9b099413f805b4c4bbad8cc179326c10be237aec00349caf91524f8db0bbc","urls":["bzz-raw://dcfb75af07ad33b1f8e966f793db3df8fbcfb14103ed3644c0c634658a8fd099","dweb:/ipfs/QmPWamdkbcKwG3ah2G9TZtKHzQmjnunsWoPWr5KKfbrKNb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9","urls":["bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168","dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd274645d15bb7e4fcb9c833e401b2c5837404f90057f11a49118f25e0af7c76f","urls":["bzz-raw://d38e0b997bb7aebae26d190b03d0991feb0d204c45f945e60014e1ca9175de69","dweb:/ipfs/QmWzsUHHAZcjMyF8uMDEtNpMTkYZdQrfvdKPobXvwVHKo6"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol":{"keccak256":"0x50e81a8b089e3f382b6c915aa0166773de64ea4756e8f9479d9943a5f956ddf5","urls":["bzz-raw://bfeb96a150537222e2191c03887127499a4f21dfb5f9a7211da4d81749b52848","dweb:/ipfs/QmYR75ECbsBuxSiXmGvGfNKJRLoK5MdLUZL1bd8SixzxL4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol":{"keccak256":"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0","urls":["bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161","dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"},"src/ERC20External.sol":{"keccak256":"0x421f511bb3aa7258fb7121aa66b9a2e8e0b7a07b7e51c800c714f7acbfd599d3","urls":["bzz-raw://b3fde56a83eae12a31eb4875d8952a99d18591fe0f18b6a12392c8f48f76af46","dweb:/ipfs/QmeApbmGv6Z2b1JynvBxaAK1j1eWhGYpeNEP56V8XXvpcz"],"license":"UNLICENSED"},"src/ERC20Internal.sol":{"keccak256":"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36","urls":["bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f","dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk"],"license":"UNLICENSED"},"src/IOwnable.sol":{"keccak256":"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990","urls":["bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1","dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9"],"license":"MIT"},"src/IPartyFlashCallback.sol":{"keccak256":"0xff1d473d27c4dc75441a5f0db2d761916cce4a702f660e998467791efd1d9b2e","urls":["bzz-raw://3220d69c62ed8c8106762c92857f24011284e8ddcfa5db4210e506b112fa1870","dweb:/ipfs/QmYoZiGsVwoJvyPMcsSste4tq93wVBgDqCZkwPY7dvyLBJ"],"license":"UNLICENSED"},"src/IPartyInfo.sol":{"keccak256":"0x80e88e8c29cdf12426f16b4bf2a088397fcc31c2664564f7f26117dc85009af7","urls":["bzz-raw://b91392cbda8adfccf9bea2e584616c4b3359d7381a18f5f3e5c9c71618786051","dweb:/ipfs/QmWtWb1gVs2pzFkjwDj4mcdoCnQLPbwq4Qxbh38VEdWwAW"],"license":"UNLICENSED"},"src/IPartyPool.sol":{"keccak256":"0x55d3656b1a4c75801852066b7ba871212e5e807917b3b9029349349fae39375c","urls":["bzz-raw://009b67ccf1d28a04a2407a05ddda8f954033b7ac70f7fd5cbedbf779e867df9f","dweb:/ipfs/QmS5vQcfma6PN28Q6qQwqa7KmUKu2KST72jwF8ffsj6Bw2"],"license":"UNLICENSED"},"src/LMSRStabilized.sol":{"keccak256":"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b","urls":["bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3","dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB"],"license":"UNLICENSED"},"src/LMSRStabilizedBalancedPair.sol":{"keccak256":"0x782f3baf92f74152c0b93b95199abbb3a36c75c921454260c8b0237f91d7c59d","urls":["bzz-raw://04d463c4fdcb6c8e2ebf9aed649ff21cca759ba73a4c93659e30c7df25e26c81","dweb:/ipfs/QmUxmWytiw5VYJRUrFbSGm1oWmDPQ4q23pnkmK1q9P4apN"],"license":"UNLICENSED"},"src/NativeWrapper.sol":{"keccak256":"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579","urls":["bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238","dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB"],"license":"UNLICENSED"},"src/OwnableExternal.sol":{"keccak256":"0x0a0199368ad20a31e7169b3e56449bf022c9d680e0d487c118608a7f14cb7efb","urls":["bzz-raw://3348a063649e01acf9c6aa6b7ce2ecf62ace8c6f1467477de7d605996f08ec64","dweb:/ipfs/QmSoxb35FFsNCgXgWn91CupvjpGmyM31wcfxAVpVFFPecX"],"license":"MIT"},"src/OwnableInternal.sol":{"keccak256":"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581","urls":["bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca","dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE"],"license":"MIT"},"src/PartyPool.sol":{"keccak256":"0xf4af110b4cd06a00ee1ec2bd61e887662dcb26aaf6903b9910902614b50e4955","urls":["bzz-raw://691fabaffecdf698601cc0696099e3bfa44ed60097b8f9b9f01cd4bf703bbb77","dweb:/ipfs/QmXuPX2zu8sN9VyePDvVra4QP8LN2knNxbiGsMGzYAyS8S"],"license":"UNLICENSED"},"src/PartyPoolBalancedPair.sol":{"keccak256":"0x7d36ae211709da83ecafcc70f31e5fcdc1bc299243eedceebf17f26339757d7b","urls":["bzz-raw://91762575c367c9b1d50a633fb46ccf429a28bbaf70f76b524749ad32dc716d7a","dweb:/ipfs/QmVLxjR3h2XJukjXFx56b4m8SPg6oupxqkzY5EKCK7GFHn"],"license":"UNLICENSED"},"src/PartyPoolBase.sol":{"keccak256":"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999","urls":["bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5","dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5"],"license":"UNLICENSED"},"src/PartyPoolDeployer.sol":{"keccak256":"0xdf2a6a8602eba3aef625c798a0ec6525feb7520c2fd6933c30dd76fe3c4e2618","urls":["bzz-raw://9aa94963e0d34feddf63b3ae034874557229740be1ef80f49e87bd05694c9b50","dweb:/ipfs/QmYQ6mH1mEJCJ9XNGdT3saRU3q36GZ94WuyRsn9LRWXtbM"],"license":"UNLICENSED"},"src/PartyPoolHelpers.sol":{"keccak256":"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c","urls":["bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5","dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP"],"license":"UNLICENSED"},"src/PartyPoolMintImpl.sol":{"keccak256":"0xe9d9927cecd46a1f836b2c43e9d6184642b9e695c7462e5fb7c671a38aab7398","urls":["bzz-raw://8d821911d7982fc302929198539b27f72be100b91450c98d2e0081519f776499","dweb:/ipfs/QmRChx1DPD1gKXwfD1m6aQ7pgh1aX6CvYLNX41ufdJteaJ"],"license":"UNLICENSED"},"src/PartyPoolSwapImpl.sol":{"keccak256":"0x71ecbd6d0fb106031baed7e4c21694ef24f0112af7d975325b98b1b0463ba5b2","urls":["bzz-raw://64f8f8bae2f89ca495b9edacd012363b55e78a198f100650beb2b1238e8ef11f","dweb:/ipfs/QmVfihiw9TqncuEfZKx7c6WEHiGFfRQyhtfdTGzfN7emNY"],"license":"UNLICENSED"}},"version":1},"id":52} \ No newline at end of file +{"abi":[{"type":"function","name":"deploy","inputs":[{"name":"owner_","type":"address","internalType":"address"},{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"},{"name":"tokens_","type":"address[]","internalType":"contract IERC20[]"},{"name":"kappa_","type":"int128","internalType":"int128"},{"name":"fees_","type":"uint256[]","internalType":"uint256[]"},{"name":"flashFeePpm_","type":"uint256","internalType":"uint256"},{"name":"protocolFeePpm_","type":"uint256","internalType":"uint256"},{"name":"protocolFeeAddress_","type":"address","internalType":"address"},{"name":"wrapper_","type":"address","internalType":"contract NativeWrapper"},{"name":"swapImpl_","type":"address","internalType":"contract PartyPoolSwapImpl"},{"name":"mintImpl_","type":"address","internalType":"contract PartyPoolMintImpl"}],"outputs":[{"name":"pool","type":"address","internalType":"contract IPartyPool"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"deploy(address,string,string,address[],int128,uint256[],uint256,uint256,address,address,address,address)":"6ae73ce3"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens_\",\"type\":\"address[]\"},{\"internalType\":\"int128\",\"name\":\"kappa_\",\"type\":\"int128\"},{\"internalType\":\"uint256[]\",\"name\":\"fees_\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"flashFeePpm_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolFeePpm_\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"protocolFeeAddress_\",\"type\":\"address\"},{\"internalType\":\"contract NativeWrapper\",\"name\":\"wrapper_\",\"type\":\"address\"},{\"internalType\":\"contract PartyPoolSwapImpl\",\"name\":\"swapImpl_\",\"type\":\"address\"},{\"internalType\":\"contract PartyPoolMintImpl\",\"name\":\"mintImpl_\",\"type\":\"address\"}],\"name\":\"deploy\",\"outputs\":[{\"internalType\":\"contract IPartyPool\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/PartyPoolDeployer.sol\":\"IPartyPoolDeployer\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/abdk-libraries-solidity/ABDKMath64x64.sol\":{\"keccak256\":\"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97\",\"license\":\"BSD-4-Clause\",\"urls\":[\"bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7\",\"dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol\":{\"keccak256\":\"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd\",\"dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd\",\"dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168\",\"dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd274645d15bb7e4fcb9c833e401b2c5837404f90057f11a49118f25e0af7c76f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d38e0b997bb7aebae26d190b03d0991feb0d204c45f945e60014e1ca9175de69\",\"dweb:/ipfs/QmWzsUHHAZcjMyF8uMDEtNpMTkYZdQrfvdKPobXvwVHKo6\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x50e81a8b089e3f382b6c915aa0166773de64ea4756e8f9479d9943a5f956ddf5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bfeb96a150537222e2191c03887127499a4f21dfb5f9a7211da4d81749b52848\",\"dweb:/ipfs/QmYR75ECbsBuxSiXmGvGfNKJRLoK5MdLUZL1bd8SixzxL4\"]},\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161\",\"dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"src/ERC20External.sol\":{\"keccak256\":\"0x421f511bb3aa7258fb7121aa66b9a2e8e0b7a07b7e51c800c714f7acbfd599d3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b3fde56a83eae12a31eb4875d8952a99d18591fe0f18b6a12392c8f48f76af46\",\"dweb:/ipfs/QmeApbmGv6Z2b1JynvBxaAK1j1eWhGYpeNEP56V8XXvpcz\"]},\"src/ERC20Internal.sol\":{\"keccak256\":\"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f\",\"dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk\"]},\"src/Funding.sol\":{\"keccak256\":\"0x1d505b256d221cec151157083f8441193bbf7859d13873353429a7ca5342381d\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6871ab97d81ddffc56845142601408e974b7b0c619a2107aacd6b17eafb3330c\",\"dweb:/ipfs/QmU5EKjGN2vDPgXhSsr4qvesq2T5eR5Ybeg25bHrcJyP2y\"]},\"src/IOwnable.sol\":{\"keccak256\":\"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1\",\"dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9\"]},\"src/IPartyPool.sol\":{\"keccak256\":\"0x74b9531bdf2200f256cac6c2cd54c0efad7c1bdfbe694ee910df75448ffe93f4\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://aadd161d7e197b48e6be4198b0f4f81a10016b9904d024e0a361bf2d7f941475\",\"dweb:/ipfs/QmYuGyPZCigmt8va11oAHXPTpHFyF3d7ARDNacyr2jsDfa\"]},\"src/LMSRStabilized.sol\":{\"keccak256\":\"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3\",\"dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB\"]},\"src/LMSRStabilizedBalancedPair.sol\":{\"keccak256\":\"0x782f3baf92f74152c0b93b95199abbb3a36c75c921454260c8b0237f91d7c59d\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://04d463c4fdcb6c8e2ebf9aed649ff21cca759ba73a4c93659e30c7df25e26c81\",\"dweb:/ipfs/QmUxmWytiw5VYJRUrFbSGm1oWmDPQ4q23pnkmK1q9P4apN\"]},\"src/NativeWrapper.sol\":{\"keccak256\":\"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238\",\"dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB\"]},\"src/OwnableExternal.sol\":{\"keccak256\":\"0x0a0199368ad20a31e7169b3e56449bf022c9d680e0d487c118608a7f14cb7efb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3348a063649e01acf9c6aa6b7ce2ecf62ace8c6f1467477de7d605996f08ec64\",\"dweb:/ipfs/QmSoxb35FFsNCgXgWn91CupvjpGmyM31wcfxAVpVFFPecX\"]},\"src/OwnableInternal.sol\":{\"keccak256\":\"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca\",\"dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE\"]},\"src/PartyPool.sol\":{\"keccak256\":\"0xaf921e5a5c32ee53fc1991d20fe030ec0a9572d0a8d112e717476ee4af0b8ab4\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b4bc13e889ec6fb214ac3538203328abede9e316bf617a7f7593b3b0c9ea40f0\",\"dweb:/ipfs/QmWx12PuyFqpy9MyxqJkRvTGkzYAYHajCYps3htgwe3YrX\"]},\"src/PartyPoolBalancedPair.sol\":{\"keccak256\":\"0x7d36ae211709da83ecafcc70f31e5fcdc1bc299243eedceebf17f26339757d7b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://91762575c367c9b1d50a633fb46ccf429a28bbaf70f76b524749ad32dc716d7a\",\"dweb:/ipfs/QmVLxjR3h2XJukjXFx56b4m8SPg6oupxqkzY5EKCK7GFHn\"]},\"src/PartyPoolBase.sol\":{\"keccak256\":\"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5\",\"dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5\"]},\"src/PartyPoolDeployer.sol\":{\"keccak256\":\"0xdf2a6a8602eba3aef625c798a0ec6525feb7520c2fd6933c30dd76fe3c4e2618\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9aa94963e0d34feddf63b3ae034874557229740be1ef80f49e87bd05694c9b50\",\"dweb:/ipfs/QmYQ6mH1mEJCJ9XNGdT3saRU3q36GZ94WuyRsn9LRWXtbM\"]},\"src/PartyPoolHelpers.sol\":{\"keccak256\":\"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5\",\"dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP\"]},\"src/PartyPoolMintImpl.sol\":{\"keccak256\":\"0xe9d9927cecd46a1f836b2c43e9d6184642b9e695c7462e5fb7c671a38aab7398\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8d821911d7982fc302929198539b27f72be100b91450c98d2e0081519f776499\",\"dweb:/ipfs/QmRChx1DPD1gKXwfD1m6aQ7pgh1aX6CvYLNX41ufdJteaJ\"]},\"src/PartyPoolSwapImpl.sol\":{\"keccak256\":\"0x71ecbd6d0fb106031baed7e4c21694ef24f0112af7d975325b98b1b0463ba5b2\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://64f8f8bae2f89ca495b9edacd012363b55e78a198f100650beb2b1238e8ef11f\",\"dweb:/ipfs/QmVfihiw9TqncuEfZKx7c6WEHiGFfRQyhtfdTGzfN7emNY\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"contract IERC20[]","name":"tokens_","type":"address[]"},{"internalType":"int128","name":"kappa_","type":"int128"},{"internalType":"uint256[]","name":"fees_","type":"uint256[]"},{"internalType":"uint256","name":"flashFeePpm_","type":"uint256"},{"internalType":"uint256","name":"protocolFeePpm_","type":"uint256"},{"internalType":"address","name":"protocolFeeAddress_","type":"address"},{"internalType":"contract NativeWrapper","name":"wrapper_","type":"address"},{"internalType":"contract PartyPoolSwapImpl","name":"swapImpl_","type":"address"},{"internalType":"contract PartyPoolMintImpl","name":"mintImpl_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deploy","outputs":[{"internalType":"contract IPartyPool","name":"pool","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/PartyPoolDeployer.sol":"IPartyPoolDeployer"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/abdk-libraries-solidity/ABDKMath64x64.sol":{"keccak256":"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97","urls":["bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7","dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN"],"license":"BSD-4-Clause"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d","urls":["bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100","dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc","urls":["bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037","dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44","urls":["bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d","dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol":{"keccak256":"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e","urls":["bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd","dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86","urls":["bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd","dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9","urls":["bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168","dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd274645d15bb7e4fcb9c833e401b2c5837404f90057f11a49118f25e0af7c76f","urls":["bzz-raw://d38e0b997bb7aebae26d190b03d0991feb0d204c45f945e60014e1ca9175de69","dweb:/ipfs/QmWzsUHHAZcjMyF8uMDEtNpMTkYZdQrfvdKPobXvwVHKo6"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol":{"keccak256":"0x50e81a8b089e3f382b6c915aa0166773de64ea4756e8f9479d9943a5f956ddf5","urls":["bzz-raw://bfeb96a150537222e2191c03887127499a4f21dfb5f9a7211da4d81749b52848","dweb:/ipfs/QmYR75ECbsBuxSiXmGvGfNKJRLoK5MdLUZL1bd8SixzxL4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol":{"keccak256":"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0","urls":["bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161","dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"},"src/ERC20External.sol":{"keccak256":"0x421f511bb3aa7258fb7121aa66b9a2e8e0b7a07b7e51c800c714f7acbfd599d3","urls":["bzz-raw://b3fde56a83eae12a31eb4875d8952a99d18591fe0f18b6a12392c8f48f76af46","dweb:/ipfs/QmeApbmGv6Z2b1JynvBxaAK1j1eWhGYpeNEP56V8XXvpcz"],"license":"UNLICENSED"},"src/ERC20Internal.sol":{"keccak256":"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36","urls":["bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f","dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk"],"license":"UNLICENSED"},"src/Funding.sol":{"keccak256":"0x1d505b256d221cec151157083f8441193bbf7859d13873353429a7ca5342381d","urls":["bzz-raw://6871ab97d81ddffc56845142601408e974b7b0c619a2107aacd6b17eafb3330c","dweb:/ipfs/QmU5EKjGN2vDPgXhSsr4qvesq2T5eR5Ybeg25bHrcJyP2y"],"license":"UNLICENSED"},"src/IOwnable.sol":{"keccak256":"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990","urls":["bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1","dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9"],"license":"MIT"},"src/IPartyPool.sol":{"keccak256":"0x74b9531bdf2200f256cac6c2cd54c0efad7c1bdfbe694ee910df75448ffe93f4","urls":["bzz-raw://aadd161d7e197b48e6be4198b0f4f81a10016b9904d024e0a361bf2d7f941475","dweb:/ipfs/QmYuGyPZCigmt8va11oAHXPTpHFyF3d7ARDNacyr2jsDfa"],"license":"UNLICENSED"},"src/LMSRStabilized.sol":{"keccak256":"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b","urls":["bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3","dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB"],"license":"UNLICENSED"},"src/LMSRStabilizedBalancedPair.sol":{"keccak256":"0x782f3baf92f74152c0b93b95199abbb3a36c75c921454260c8b0237f91d7c59d","urls":["bzz-raw://04d463c4fdcb6c8e2ebf9aed649ff21cca759ba73a4c93659e30c7df25e26c81","dweb:/ipfs/QmUxmWytiw5VYJRUrFbSGm1oWmDPQ4q23pnkmK1q9P4apN"],"license":"UNLICENSED"},"src/NativeWrapper.sol":{"keccak256":"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579","urls":["bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238","dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB"],"license":"UNLICENSED"},"src/OwnableExternal.sol":{"keccak256":"0x0a0199368ad20a31e7169b3e56449bf022c9d680e0d487c118608a7f14cb7efb","urls":["bzz-raw://3348a063649e01acf9c6aa6b7ce2ecf62ace8c6f1467477de7d605996f08ec64","dweb:/ipfs/QmSoxb35FFsNCgXgWn91CupvjpGmyM31wcfxAVpVFFPecX"],"license":"MIT"},"src/OwnableInternal.sol":{"keccak256":"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581","urls":["bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca","dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE"],"license":"MIT"},"src/PartyPool.sol":{"keccak256":"0xaf921e5a5c32ee53fc1991d20fe030ec0a9572d0a8d112e717476ee4af0b8ab4","urls":["bzz-raw://b4bc13e889ec6fb214ac3538203328abede9e316bf617a7f7593b3b0c9ea40f0","dweb:/ipfs/QmWx12PuyFqpy9MyxqJkRvTGkzYAYHajCYps3htgwe3YrX"],"license":"UNLICENSED"},"src/PartyPoolBalancedPair.sol":{"keccak256":"0x7d36ae211709da83ecafcc70f31e5fcdc1bc299243eedceebf17f26339757d7b","urls":["bzz-raw://91762575c367c9b1d50a633fb46ccf429a28bbaf70f76b524749ad32dc716d7a","dweb:/ipfs/QmVLxjR3h2XJukjXFx56b4m8SPg6oupxqkzY5EKCK7GFHn"],"license":"UNLICENSED"},"src/PartyPoolBase.sol":{"keccak256":"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999","urls":["bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5","dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5"],"license":"UNLICENSED"},"src/PartyPoolDeployer.sol":{"keccak256":"0xdf2a6a8602eba3aef625c798a0ec6525feb7520c2fd6933c30dd76fe3c4e2618","urls":["bzz-raw://9aa94963e0d34feddf63b3ae034874557229740be1ef80f49e87bd05694c9b50","dweb:/ipfs/QmYQ6mH1mEJCJ9XNGdT3saRU3q36GZ94WuyRsn9LRWXtbM"],"license":"UNLICENSED"},"src/PartyPoolHelpers.sol":{"keccak256":"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c","urls":["bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5","dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP"],"license":"UNLICENSED"},"src/PartyPoolMintImpl.sol":{"keccak256":"0xe9d9927cecd46a1f836b2c43e9d6184642b9e695c7462e5fb7c671a38aab7398","urls":["bzz-raw://8d821911d7982fc302929198539b27f72be100b91450c98d2e0081519f776499","dweb:/ipfs/QmRChx1DPD1gKXwfD1m6aQ7pgh1aX6CvYLNX41ufdJteaJ"],"license":"UNLICENSED"},"src/PartyPoolSwapImpl.sol":{"keccak256":"0x71ecbd6d0fb106031baed7e4c21694ef24f0112af7d975325b98b1b0463ba5b2","urls":["bzz-raw://64f8f8bae2f89ca495b9edacd012363b55e78a198f100650beb2b1238e8ef11f","dweb:/ipfs/QmVfihiw9TqncuEfZKx7c6WEHiGFfRQyhtfdTGzfN7emNY"],"license":"UNLICENSED"}},"version":1},"id":51} \ No newline at end of file diff --git a/deployment/11155111/v1/out/PartyPoolDeployer.sol/PartyPoolBalancedPairDeployer.json b/deployment/11155111/v1/out/PartyPoolDeployer.sol/PartyPoolBalancedPairDeployer.json index 518e904..5993ad8 100644 --- a/deployment/11155111/v1/out/PartyPoolDeployer.sol/PartyPoolBalancedPairDeployer.json +++ b/deployment/11155111/v1/out/PartyPoolDeployer.sol/PartyPoolBalancedPairDeployer.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"deploy","inputs":[{"name":"owner_","type":"address","internalType":"address"},{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"},{"name":"tokens_","type":"address[]","internalType":"contract IERC20[]"},{"name":"kappa_","type":"int128","internalType":"int128"},{"name":"fees_","type":"uint256[]","internalType":"uint256[]"},{"name":"flashFeePpm_","type":"uint256","internalType":"uint256"},{"name":"protocolFeePpm_","type":"uint256","internalType":"uint256"},{"name":"protocolFeeAddress_","type":"address","internalType":"address"},{"name":"wrapper_","type":"address","internalType":"contract NativeWrapper"},{"name":"swapImpl_","type":"address","internalType":"contract PartyPoolSwapImpl"},{"name":"mintImpl_","type":"address","internalType":"contract PartyPoolMintImpl"}],"outputs":[{"name":"","type":"address","internalType":"contract IPartyPool"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x60808060405234601557615df4908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c636ae73ce314610024575f80fd5b34610373576101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103735760043573ffffffffffffffffffffffffffffffffffffffff81168091036103735760243567ffffffffffffffff8111610373576100959036906004016103f8565b9060443567ffffffffffffffff8111610373576100b69036906004016103f8565b6064359067ffffffffffffffff82116103735736602383011215610373578160040135916100eb6100e684610468565b6103b4565b9060208285815201906024829560051b8201019036821161037357602401915b8183106103875750505060843580600f0b8091036103735760a43567ffffffffffffffff81116103735736602382011215610373578060040135946101526100e687610468565b91602083888152016024819860051b8301019136831161037357602401905b82821061037757505050610104359173ffffffffffffffffffffffffffffffffffffffff831680930361037357610124359373ffffffffffffffffffffffffffffffffffffffff851680950361037357610144359573ffffffffffffffffffffffffffffffffffffffff871680970361037357610164359773ffffffffffffffffffffffffffffffffffffffff8916809903610373576040519b8c9b8c926158fb8094019e8f9081109067ffffffffffffffff1017610346576102528f92938f94602096610260966104c49039845261018086850152610180840190610480565b916040818403910152610480565b8c810360608e01529151808352910193905f5b81811061031a575050509060209160808b015289830360a08b015251918281520195905f5b81811061030457505050918596916101609360c43560c085015260e43560e0850152610100840152610120830152610140820152015203905ff080156102f95760209073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b6040513d5f823e3d90fd5b8251885260209788019790920191600101610298565b825173ffffffffffffffffffffffffffffffffffffffff16865260209586019590920191600101610273565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f80fd5b8135815260209182019101610171565b823573ffffffffffffffffffffffffffffffffffffffff811681036103735781526020928301920161010b565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff82111761034657604052565b81601f820112156103735780359067ffffffffffffffff82116103465761044660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116016103b4565b928284526020838301011161037357815f926020809301838601378301015290565b67ffffffffffffffff81116103465760051b60200190565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f858286010152011601019056fe610140604052346106ee576158fb8038038061001a81610a6a565b9283398101610180828203126106ee5761003382610a8f565b60208301516001600160401b0381116106ee5782610052918501610aa3565b60408401519091906001600160401b0381116106ee5783610074918601610aa3565b60608501519094906001600160401b0381116106ee5781019284601f850112156106ee578351956100ac6100a788610af4565b610a6a565b9460208689815201906020829960051b820101908882116106ee57602001915b818310610a4a57505050608083015180600f0b81036106ee5760a08401516001600160401b0381116106ee5784019680601f890112156106ee5787516101146100a782610af4565b986020808b848152019260051b8201019283116106ee57602001905b828210610a3a5750505060c08401519760e0850151926101536101008701610a8f565b610120870151979095906001600160a01b03891689036106ee57610140880151976001600160a01b03891689036106ee576101600151986001600160a01b038a168a036106ee5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00556080526001600160a01b03168015610a27575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a38051906001600160401b0382116106335760045490600182811c92168015610a1d575b60208310146109405781601f8493116109cf575b50602090601f8311600114610969575f9261095e575b50508160011b915f199060031b1c1916176004555b8051906001600160401b0382116106335760055490600182811c92168015610954575b60208310146109405781601f849311610904575b50602090601f831160011461089e575f92610893575b50508160011b915f199060031b1c1916176005555b60018751111561084e578651906001600160401b0382116106335768010000000000000000821161063357600b5482600b55808310610814575b50600b5f5260205f205f5b8381106107f7575050505060a05285518551036107be5761033a8651610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600654836006558084106107a2575b500160065f5260205f205f5b83811061078e57505050505f5b86518110156104185761271061039c8289610b49565b5110156103e1576103ad8188610b49565b51906006548110156103cd5760019160065f528160205f20015501610386565b634e487b7160e01b5f52603260045260245ffd5b60405162461bcd60e51b815260206004820152600f60248201526e506f6f6c3a20666565203e3d20312560881b6044820152606490fd5b50866127108110156107495760c05262061a8081101561070457801580156106f2575b156106ee5760e052601080546001600160a01b0319166001600160a01b039290921691909117905561012052610100528051905f5b8281106106a7578261048181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600d5483600d5580841061068b575b5001600d5f5260205f205f5b83811061067757846104d181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600f5483600f5580841061065b575b5001600f5f5260205f205f5b8381106106475761052085610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600c5483600c55808410610617575b500190600c5f5260205f20915f5b82811061060357604051614d9d9081610b5e8239608051818181611b4a01528181611d9b015281816120ee015261264c015260a051818181610f130152610f7f015260c0518181816113480152611733015260e0518181816105ac01528181610c550152818161105d0152818161136e015281816114be0152611c2401526101005181818161031701526105f70152610120518181816108050152610a720152f35b600190602083519301928186015501610561565b61062d90600c5f5284845f209182019101610b0b565b83610553565b634e487b7160e01b5f52604160045260245ffd5b600190602084519401938184015501610510565b61067190600f5f5284845f209182019101610b0b565b84610504565b6001906020845194019381840155016104c0565b6106a190600d5f5284845f209182019101610b0b565b846104b4565b60018101908181116106da576001600160a01b03906106c69084610b49565b51165f52600e6020528060405f2055610470565b634e487b7160e01b5f52601160045260245ffd5b5f80fd5b506001600160a01b038216151561043b565b60405162461bcd60e51b815260206004820152601960248201527f506f6f6c3a2070726f746f636f6c20666565203e3d20343025000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601560248201527f506f6f6c3a20666c61736820666565203e3d20312500000000000000000000006044820152606490fd5b600190602084519401938184015501610379565b6107b89060065f5284845f209182019101610b0b565b5f61036d565b60405162461bcd60e51b81526020600482015260116024820152700a0deded87440cccacae640d8cadccee8d607b1b6044820152606490fd5b82516001600160a01b031681830155602090920191600101610319565b600b5f52610848907f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9908101908401610b0b565b5f61030e565b60405162461bcd60e51b815260206004820152601360248201527f506f6f6c3a206e656564203e31206173736574000000000000000000000000006044820152606490fd5b015190505f806102bf565b60055f9081528281209350601f198516905b8181106108ec57509084600195949392106108d4575b505050811b016005556102d4565b01515f1960f88460031b161c191690555f80806108c6565b929360206001819287860151815501950193016108b0565b6109309060055f5260205f20601f850160051c81019160208610610936575b601f0160051c0190610b0b565b5f6102a9565b9091508190610923565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610295565b015190505f8061025d565b60045f9081528281209350601f198516905b8181106109b7575090846001959493921061099f575b505050811b01600455610272565b01515f1960f88460031b161c191690555f8080610991565b9293602060018192878601518155019501930161097b565b60045f52610a17907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f850160051c8101916020861061093657601f0160051c0190610b0b565b5f610247565b91607f1691610233565b631e4fbdf760e01b5f525f60045260245ffd5b8151815260209182019101610130565b82516001600160a01b03811681036106ee578152602092830192016100cc565b6040519190601f01601f191682016001600160401b0381118382101761063357604052565b51906001600160a01b03821682036106ee57565b81601f820112156106ee578051906001600160401b03821161063357610ad2601f8301601f1916602001610a6a565b92828452602083830101116106ee57815f9260208093018386015e8301015290565b6001600160401b0381116106335760051b60200190565b818110610b16575050565b5f8155600101610b0b565b90610b2e6100a783610af4565b8281528092610b3f601f1991610af4565b0190602036910137565b80518210156103cd5760209160051b01019056fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c908163017504b61461295057508063017cf661146128be57806306fdde0314612775578063095ea7b3146126705780630d246214146126025780630eeee627146119a457806318160ddd146119685780631f3a0e411461192757806323b872dd14611790578063313ce5671461175657806331596a6a146116fd57806341c0e1b514611667578063476e44b614611519578063491e7998146113f15780635cffe9de146112115780636863f5bc146110805780636b4082d1146110275780636b7b911214610fa55780636bba3f2f14610f495780636d8d0ff314610e8e5780636ff97f1d14610d8e57806370a0823114610d2b578063715018a614610c8f57806379a68d5314610b6b5780638da5cb5b14610b1a5780638e499bcf14610ade578063939f5ea414610a965780639517606614610a2757806395d89b41146108cd5780639af1d35a1461082e578063a1af5b9a14610765578063a9059cbb14610715578063b3f1c93d14610648578063cb717f3a146104f3578063cce516b7146104a1578063d516b8c614610416578063dd62ed3e1461039d578063e4b50cb81461033b578063f0d1ae4f146102cc5763f2fde38b0361000f57346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610228612a5f565b6102306130bd565b16801561029d5773ffffffffffffffffffffffffffffffffffffffff8254827fffffffffffffffffffffffff00000000000000000000000000000000000000008216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b6024827f1e4fbdf700000000000000000000000000000000000000000000000000000000815280600452fd5b80fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff61038d600435612b2f565b90549060031b1c16604051908152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff60406103ec612a5f565b92826103f6612a82565b9416815260026020522091165f52602052602060405f2054604051908152f35b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043590602435916064359182600f0b83036102c95761049d61047985858561046f83826131e2565b9260443591612dca565b92505050604093919351938493846040919493926060820195825260208201520152565b0390f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff60105416604051908152f35b5060a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761049d61062b61061c61052f612a5f565b610537612a82565b60443573ffffffffffffffffffffffffffffffffffffffff61055882613109565b9281604051957f3dd3c8050000000000000000000000000000000000000000000000000000000060208801521660248601521660448401526064830152606435608483015260843560a483015260c48201527f000000000000000000000000000000000000000000000000000000000000000060e482015260e481526105e061010482612aee565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016613129565b60208082518301019101612d5e565b604080519384526020840192909252908201529081906060820190565b5060807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f161067e612a5f565b73ffffffffffffffffffffffffffffffffffffffff61069b612a82565b81604051937fb3f1c93d00000000000000000000000000000000000000000000000000000000602086015216602484015216604482015260443560648201526064356084820152608481526105e060a482612aee565b602081519181808201938492010103126107115760209051604051908152f35b5f80fd5b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761075a610750612a5f565b6024359033612f98565b602060405160018152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761082a73ffffffffffffffffffffffffffffffffffffffff60105416604051907f2a54db010000000000000000000000000000000000000000000000000000000060208301526024820152602481526107ee604482612aee565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016613129565b5080f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760405180916020600654928381520191600682527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f915b8181106108b75761049d856108ab81870382612aee565b604051918291826129de565b8254845260209093019260019283019201610894565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576040519080600554908160011c91600181168015610a1d575b6020841081146109f0578386529081156109ab575060011461094e575b61049d8461094281860382612aee565b60405191829182612a17565b600581527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0939250905b8082106109915750909150810160200161094282610932565b919260018160209254838588010152019101909291610978565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208087019190915292151560051b850190920192506109429150839050610932565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b92607f1692610915565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020610ad66024356004356131e2565b604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600b54604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b5060e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610b9e612a5f565b90610ba7612a82565b906044356064356084359182600f0b809303610c8b5760c435938415158095036102c95761049d61062b61061c89898989898973ffffffffffffffffffffffffffffffffffffffff610bf98383612d79565b9581604051987f8a3d858d0000000000000000000000000000000000000000000000000000000060208b01521660248901521660448701526064860152608485015260a484015260a43560c484015260e48301526101048201527f000000000000000000000000000000000000000000000000000000000000000061012482015261012481526107ee61014482612aee565b8380fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610cc66130bd565b8073ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604060209173ffffffffffffffffffffffffffffffffffffffff610d7d612a5f565b168152600183522054604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604051806020600b5491828152018091600b85527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db990855b818110610e625750505082610e0b910383612aee565b604051928392602084019060208552518091526040840192915b818110610e33575050500390f35b825173ffffffffffffffffffffffffffffffffffffffff16845285945060209384019390920191600101610e25565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610df5565b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f1610ec4612a5f565b73ffffffffffffffffffffffffffffffffffffffff604051917fc5eabfb900000000000000000000000000000000000000000000000000000000602084015216602482015260243560448201527f0000000000000000000000000000000000000000000000000000000000000000600f0b6064820152606481526105e0608482612aee565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f0000000000000000000000000000000000000000000000000000000000000000600f0b8152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610ff2612a5f565b610ffa6130bd565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000601054161760105580f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c95760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576110b8612a5f565b6110c0612a82565b90608435801515809103610c8b5773ffffffffffffffffffffffffffffffffffffffff6111429381604051947f6863f5bc0000000000000000000000000000000000000000000000000000000060208701521660248501521660448301526044356064830152606435608483015260a482015260a481526105e060c482612aee565b805181019060208181840193031261120d5760208101519067ffffffffffffffff8211610c8b57019181603f840112156102c95760208301519267ffffffffffffffff84116111e0578360051b91604051946111a16020850187612aee565b855260208080870194840101019384116102c95750604001905b8282106111d0576040518061049d86826129de565b81518152602091820191016111bb565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8280fd5b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043573ffffffffffffffffffffffffffffffffffffffff81168091036113e95761126a612a82565b60643567ffffffffffffffff8111610c8b5736602382011215610c8b5780600401359067ffffffffffffffff82116113ed5736602483830101116113ed576113c3937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f846107ee9560246101049673ffffffffffffffffffffffffffffffffffffffff6040519a8b987fe49cd4750000000000000000000000000000000000000000000000000000000060208b0152848a0152166044880152604435606488015260c060848801528260e48801520186860137888582860101527f000000000000000000000000000000000000000000000000000000000000000060a48501527f000000000000000000000000000000000000000000000000000000000000000060c48501520116810103017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612aee565b6020818051810103126113e957602001518015158091036113e957602090604051908152f35b5080fd5b8480fd5b50346102c95760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957611429612a5f565b611431612a82565b906064359160a4358015158091036113ed578373ffffffffffffffffffffffffffffffffffffffff6114656114f496613109565b9381604051967f8d01fa440000000000000000000000000000000000000000000000000000000060208901521660248701521660448501526044356064850152608484015260843560a484015260c483015260e48201527f000000000000000000000000000000000000000000000000000000000000000061010482015261010481526105e061012482612aee565b6040818051810103126113e95780604060208193015191015182519182526020820152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576060602060405161155881612aa5565b83815201526040519061156a82612aa5565b600954600f0b825260405191600a548084528360208101600a8552602085209285905b80600183011061163b576115b6945491818110611627575b10611616575b509493940383612aee565b6020810191825260405192839260208452606084019251600f0b6020850152519160408085015282518091526020608085019301915b8181106115fa575050500390f35b8251600f0b8452859450602093840193909201916001016115ec565b60801d600f0b81526020015f6115ab565b92602060019184600f0b81520193016115a5565b9160029193506040600191865480600f0b825260801d600f0b602082015201940192018692939161158d565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761169e6130bd565b60085460ff8116156116ae575080f35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001176008557f0f8eeedbc400fd6686703559f58d1e6143fdaed533f19a86c93d67a2fe4fb3318180a180f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405160128152f35b50346102c95760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576117c8612a5f565b6117d0612a82565b6044359173ffffffffffffffffffffffffffffffffffffffff811680855260026020526040852073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f2054907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821061184d575b505061075a9350612f98565b8482106118f35780156118c757331561189b578560409161075a975260026020522073ffffffffffffffffffffffffffffffffffffffff33165f526020528360405f20910390555f80611841565b6024867f94280d6200000000000000000000000000000000000000000000000000000000815280600452fd5b6024867fe602df0500000000000000000000000000000000000000000000000000000000815280600452fd5b60648686847ffb8f41b200000000000000000000000000000000000000000000000000000000835233600452602452604452fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060ff600854166040519015158152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600354604051908152f35b506101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576119d8612a5f565b906024357fffffffff00000000000000000000000000000000000000000000000000000000811691828203610711576044359273ffffffffffffffffffffffffffffffffffffffff84169283850361071157606435936084359660c43580600f0b810361071157610104359060e43582151583036107115760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146125da5760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005560ff6008541661257c578015908115612571575b501561251357611ad090611ac58b8a612d79565b9060a4358c8b612dca565b9b859d9596949e9293915073ffffffffffffffffffffffffffffffffffffffff611af982612b2f565b90549060031b1c169973ffffffffffffffffffffffffffffffffffffffff611b2085612b2f565b90549060031b1c169b155f146123665750878a73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016988982148061235c575b1561228557505050863b15610711575f8e976004604051809a81937fd0e30db00000000000000000000000000000000000000000000000000000000083525af196871561227a578f908f908f99612263575b50611bfd611c1f915b611bf8611bdb86612b74565b90549060031b1c611beb87612b8c565b90549060031b1c90612c0e565b612c0e565b91611c1a611c0a87612b74565b90549060031b1c611beb88612b8c565b612bd4565b908d987f0000000000000000000000000000000000000000000000000000000000000000908115158061225a575b6121d1575b5050611cf091611cd2611c93611ce793611c7d611c6e88612b8c565b90549060031b1c821015612c65565b611c8687612b8c565b90549060031b1c90612bd4565b611c9c86612b74565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b611cde611c6e87612b8c565b611c8686612b8c565b611c9c85612b74565b8b82600f0b1315612173578b84600f0b131561211557611d7993611d6182611d39611d33611d3996611d24611d3397612f37565b90549060031b1c600f0b61330c565b91612f37565b9091906fffffffffffffffffffffffffffffffff83549160031b928116831b921b1916179055565b611d6a84612f37565b90549060031b1c600f0b613349565b806120d6575b156120105773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b1561200c5787809160248d60405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af18015612001579188918c93611fe3575b5081809381925af13d15611fde573d67ffffffffffffffff8111611fb15760405190611e5e60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160183612aee565b81528760203d92013e5b15611f53577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a0915b611e9d818a612bd4565b73ffffffffffffffffffffffffffffffffffffffff604051931683528a60208401528b604084015260608301526080820152a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015611f22575b50505061049d90604051938493846040919493926060820195825260208201520152565b8280809381938290611f4a575b3390f115611f3e578080611efe565b604051903d90823e3d90fd5b506108fc611f2f565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b611e68565b611ff09193508290612aee565b611ffd57868a915f611e0a565b8680fd5b6040513d8a823e3d90fd5b8780fd5b506040517fa9059cbb0000000000000000000000000000000000000000000000000000000087528360045289602452602087604481808a5af19060018851148216156120b5575b60405215612089577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a091611e93565b602486867f5274afe7000000000000000000000000000000000000000000000000000000008252600452fd5b9060018115166120cd57863b15153d15161690612057565b503d87823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168614611d7f565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a20616d6f756e744f7574203c3d20300000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4d53523a20616d6f756e74496e203c3d2030000000000000000000000000006044820152fd5b611ce7929a50611c93620f42406121ef611cf09694611cd294612c1b565b049b8c612202575b93505050918f611c52565b6122558d6122216122128a612b8c565b91909283548360031b1c612c0e565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b6121f7565b50801515611c4d565b612270919e505f90612aee565b5f9c611bfd611bc6565b6040513d5f823e3d90fd5b60209293949596979899505f80809360649373ffffffffffffffffffffffffffffffffffffffff604051987f23b872dd00000000000000000000000000000000000000000000000000000000855216600452306024526044525af19060015f511482161561233b575b6040525f6060521561230f57908b95949392918e611c1f8f611bfd90611bcf565b887f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b906001811516612353578a3b15153d151616906122ee565b503d5f823e3d90fd5b5080341015611b74565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529197506020826024818e5afa91821561227a578f905f936124db575b50602492916123df916040519160208301528d858301526044820152604481526123d9606482612aee565b8a61328c565b5060208b604051938480927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa801561227a578f925f916124a2575b509061242f91612bd4565b03612444578b958e611c1f8f611bfd90611bcf565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e742066756e647300000000000000000000000000006044820152fd5b919250506020813d6020116124d3575b816124bf60209383612aee565b8101031261071157518e919061242f612424565b3d91506124b2565b9250506020823d60201161250b575b816124f760209383612aee565b81010312610711579051908e6123df6123ae565b3d91506124ea565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f737761703a20646561646c696e652065786365656465640000000000000000006044820152fd5b90504211155f611ab1565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346107115760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576126a7612a5f565b6024359033156127495773ffffffffffffffffffffffffffffffffffffffff1690811561271d57335f52600260205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576040515f6004548060011c906001811680156128b4575b6020831081146128875782855290811561284557506001146127e7575b61049d8361094281850382612aee565b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b80821061282b575090915081016020016109426127d7565b919260018160209254838588010152019101909291612813565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b8401909101915061094290506127d7565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916127ba565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157604051806020600d54918281520190600d5f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5905f5b81811061293a5761049d856108ab81870382612aee565b8254845260209093019260019283019201612923565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157600c548082526020820190600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7905f5b8181106129c85761049d856108ab81870382612aee565b82548452602090930192600192830192016129b1565b60206040818301928281528451809452019201905f5b818110612a015750505090565b82518452602093840193909201916001016129f4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6040810190811067ffffffffffffffff821117612ac157604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612ac157604052565b600b54811015612b4757600b5f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600f54811015612b4757600f5f5260205f2001905f90565b600c54811015612b4757600c5f5260205f2001905f90565b600d54811015612b4757600d5f5260205f2001905f90565b600654811015612b475760065f5260205f2001905f90565b91908203918211612be157565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b91908201809211612be157565b81810292918115918404141715612be157565b8115612c38570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b15612c6c57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f62616c616e6365203c2070726f746f636f6c206f7765640000000000000000006044820152fd5b90604051918281549182825260208201905f5260205f20925f905b806001830110612d3257612d0b945491818110612d1e575b10612d0d575b500383612aee565b565b60801d600f0b81526020015f612d03565b92602060019184600f0b8152019301612cfd565b9160029193506040600191865480600f0b825260801d600f0b6020820152019401920185929391612ce5565b90816060910312610711578051916040602083015192015190565b9190826103e8026103e881048403612be15781612d9591612c0e565b90815f52600760205260405f2054938415612daf57505050565b612dba9294506131e2565b915f5260076020528160405f2055565b92949394919091612df6612dde87846131ff565b9050612de986612ba4565b90549060031b1c9061339f565b905f82600f0b1315612ed957612e0d9184866135c9565b919092612e2c8394612e1f8197612ba4565b90549060031b1c90613221565b925f92849880612eb8575b508811612e5a57612e4a612e5792612ba4565b90549060031b1c90613aa0565b94565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f737761703a207472616e736665722065786365656473206d61780000000000006044820152fd5b909850612ec791935084613253565b91612ed28385612c0e565b975f612e37565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761703a20696e70757420746f6f20736d616c6c20616674657220666565006044820152fd5b90600a54821015612b4757600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b9190918054831015612b47575f52601060205f208360011c019260041b1690565b73ffffffffffffffffffffffffffffffffffffffff169081156130915773ffffffffffffffffffffffffffffffffffffffff1691821561306557815f52600160205260405f205481811061303357817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f52600184520360405f2055845f526001825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff5f541633036130dd57565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b600654156131245761311a90612bbc565b90549060031b1c90565b505f90565b905f8091602081519101845af480806131cf575b1561314f57505061314c613386565b90565b156131965773ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b3d156131a7576040513d5f823e3d90fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b503d15158061313d5750813b151561313d565b90611beb6131f261314c93612bbc565b90549060031b1c91612bbc565b9190801561321b5761321461314c9184613253565b8093612bd4565b505f9190565b61323561322e8383613aa0565b928361339f565b90600f0b90600f0b126132455790565b60018101809111612be15790565b9080156132865761326391612c1b565b620f4240810190818111612be157620f423f01908111612be157620f4240900490565b50505f90565b905f809160208151910182855af180806131cf571561314f57505061314c613386565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2575b1561071157600f0b90565b506f7fffffffffffffffffffffffffffffff8113156132e7565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b604051903d82523d5f602084013e60203d830101604052565b81156107115777ffffffffffffffffffffffffffffffffffffffffffffffff811161341757906133d19160401b612c2e565b6fffffffffffffffffffffffffffffffff8111610711576fffffffffffffffffffffffffffffffff166f7fffffffffffffffffffffffffffffff811161071157600f0b90565b60c09181831c80936401000000008210156135bc575b600282620100006134ba9410156135b0575b6101008110156135a4575b6010811015613598575b600481101561358d575b1015613585575b8360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b612c2e565b926fffffffffffffffffffffffffffffffff8411610711578160801c8402906fffffffffffffffffffffffffffffffff8316850290809460401b9082821061355b575b5003928160801b91828510613532575b60801c036135275761351f9203612c2e565b905b016133d1565b505050600190613521565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019061350d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f6134fd565b600101613465565b91810191811c61345e565b6004928301921c613454565b6008928301921c61344a565b6010928301921c61343f565b505060e082811c9061342d565b9193929093600a5480841080613a97575b15613a3957600203613a21576135f86135f3600a612cca565b613f94565b946136075f87600f0b13613afb565b613617600954600f0b9687613c82565b5f81600f0b1315613a0e5761362b81613b60565b6136678161366261363d89600a612f77565b90549060031b1c600f0b61365287600a612f77565b90549060031b1c600f0b90613349565b613c82565b9085600f0b5f81136137d8575b505f600f83900b126137ca57815b67028f5c28f5c28f5c90600f0b136137b55761369e9085613c82565b80600f0b915f83131561379f57678000000000000000831361379f57906136f961371a9493926136f36136ed671999999999999999946136e76136e18280613c82565b946132af565b90613c82565b91613bb0565b90613349565b916137048380613c82565b91600f0b1261377657906136f36136e792613bb0565b9384600f0b965f8813156137565761373383600a612f77565b90549060031b1c600f0b881215613756575f849698126137565750505050509190565b90919293945061377295965061376c600a612cca565b90613d08565b9091565b613799613793836136f361378d6136e79686613c82565b94613bb0565b91613bf6565b9061330c565b50505050909192613772949561376c600a612cca565b505050909192613772949561376c600a612cca565b6137d382613cc2565b613682565b6137e58380979397613c82565b680600000000000000006138096137fc8684613c82565b926137996136ed886132af565b9160401b60170b05907fffffffffffffffffffffffffffffffff80000000000000000000000000000000821215806139f4575b156107115761384e91600f0b9061330c565b9081600f0b121561396f576138847fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009188613c3c565b600f0b017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613955575b1561071157600f0b5f811261394757805b671999999999999999600f0b90600f0b1361393057806137996137936138ec836138fa95613c82565b926136f361378d8286613c82565b5f81600f0b13156139305761390f9084613c82565b9080600f0b82600f0b125f146139285750935b5f613674565b949050613922565b5094959293505050613772949561376c600a612cca565b61395081613cc2565b6138c3565b506f7fffffffffffffffffffffffffffffff8113156138b2565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4c4d53523a206c696d69745072696365203c3d2063757272656e74207072696360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152608490fd5b506f7fffffffffffffffffffffffffffffff82131561383c565b50909192613772949561376c600a612cca565b9091936137729394600954600f0b61376c600a612cca565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4c4d53523a2069647800000000000000000000000000000000000000000000006044820152fd5b508086106135da565b811561328657600f0b5f8112610711576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116107115760401b81198111610711570190565b15613b0257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b600f0b801561071157700100000000000000000000000000000000057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b680200000000000000009060401b60170b057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b680300000000000000009060401b60170b057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b90600f0b9081156107115760401b60170b057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081600f0b14610711575f03600f0b90565b8051821015612b475760209160051b010190565b95949093613d4c90939293613d69613d64613d36839a613d278a613f94565b906136625f83600f0b13613afb565b96613662613d4389613b60565b9586928b613cf4565b51600f0b613d5a898c613cf4565b51600f0b90613349565b613fc9565b9280600f0b5f8113613ed6575b505090613d8291613c82565b6820000000000000000081600f0b13613e5257613d64613da191613cc2565b600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613e38575b1561071157613df491613def91600f0b90613c82565b6132af565b925f84600f0b1315613e245750506136e7613e0e92614026565b905f82600f0b1315613e1c57565b5f9250829150565b909150613e319250613cf4565b51600f0b90565b506f7fffffffffffffffffffffffffffffff811315613dd9565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4c4d53523a20612f6220746f6f206c617267652028776f756c64206f7665726660448201527f6c6f7720657870290000000000000000000000000000000000000000000000006064820152fd5b84600f9a939a0b121561396f5783613eed91613c3c565b5f81600f0b1315613f3657613f04613f0a91614026565b86613c82565b9780600f0b89600f0b125f14613f2a575050613d8290875b90915f613d76565b613d8292919850613f22565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4d53523a20726174696f3c3d300000000000000000000000000000000000006044820152fd5b5f90815b8151831015613fc357613fbb600191613fb18585613cf4565b51600f0b9061330c565b920191613f98565b91505090565b600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000811261312457700171547652b82fe1777d0ffda0d23a7d1261314c910260801d600f0b614153565b600f0b5f811315610711575f908068010000000000000000821215614146575b80640100000000600292121561413a575b6201000081121561412e575b610100811215614122575b6010811215614116575b600481121561410b575b1215614101575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f83136140e557506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d90565b8002908160ff1c9182607f011c918302019160011d91906140c0565b9060010190614089565b92810192811d614082565b6004938401931d614078565b6008938401931d61406e565b6010938401931d614063565b6020938401931d614057565b506040915080821d614046565b80600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc000000000000000008112613286576f80000000000000000000000000000000915f6780000000000000008216600f0b13614d4f575b5f6740000000000000008216600f0b13614d32575b5f6720000000000000008216600f0b13614d15575b5f6710000000000000008216600f0b13614cf8575b5f6708000000000000008216600f0b13614cdb575b5f6704000000000000008216600f0b13614cbe575b5f6702000000000000008216600f0b13614ca1575b5f6701000000000000008216600f0b13614c84575b5f66800000000000008216600f0b13614c67575b5f66400000000000008216600f0b13614c4a575b5f66200000000000008216600f0b13614c2d575b5f66100000000000008216600f0b13614c10575b5f66080000000000008216600f0b13614bf3575b5f66040000000000008216600f0b13614bd6575b5f66020000000000008216600f0b13614bb9575b5f66010000000000008216600f0b13614b9c575b5f658000000000008216600f0b13614b7f575b5f654000000000008216600f0b13614b62575b5f652000000000008216600f0b13614b45575b5f651000000000008216600f0b13614b28575b5f650800000000008216600f0b13614b0b575b5f650400000000008216600f0b13614aee575b5f650200000000008216600f0b13614ad1575b5f650100000000008216600f0b13614ab4575b5f6480000000008216600f0b13614a97575b5f6440000000008216600f0b13614a7a575b5f6420000000008216600f0b13614a5d575b5f6410000000008216600f0b13614a40575b5f6408000000008216600f0b13614a23575b5f6404000000008216600f0b13614a06575b5f6402000000008216600f0b136149e9575b5f6401000000008216600f0b136149cc575b5f63800000008216600f0b136149af575b5f63400000008216600f0b13614992575b5f63200000008216600f0b13614975575b5f63100000008216600f0b13614958575b5f63080000008216600f0b1361493b575b5f63040000008216600f0b1361491e575b5f63020000008216600f0b13614901575b5f63010000008216600f0b136148e4575b5f628000008216600f0b136148c7575b5f624000008216600f0b136148aa575b5f622000008216600f0b1361488d575b5f621000008216600f0b13614870575b5f620800008216600f0b13614853575b5f620400008216600f0b13614836575b5f620200008216600f0b13614819575b5f620100008216600f0b136147fc575b5f6180008216600f0b136147df575b5f6140008216600f0b136147c2575b5f6120008216600f0b136147a5575b5f6110008216600f0b13614788575b5f6108008216600f0b1361476b575b5f6104008216600f0b1361474e575b5f6102008216600f0b13614731575b5f6101008216600f0b13614714575b5f60808216600f0b136146f7575b5f60408216600f0b136146da575b5f60208216600f0b136146bd575b5f60108216600f0b136146a0575b5f60088216600f0b13614683575b5f60048216600f0b13614666575b5f60028216600f0b13614648575b60015f9116600f0b1361462b575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161071157600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c90614601565b7001000000000000000162e42fefa39ef35890920260801c916145f3565b9170010000000000000002c5c85fdf473de6b20260801c916145e5565b91700100000000000000058b90bfbe8e7bcd6d0260801c916145d7565b917001000000000000000b17217f7d1cf79afa0260801c916145c9565b91700100000000000000162e42fefa39ef366f0260801c916145bb565b917001000000000000002c5c85fdf473de6eca0260801c916145ad565b9170010000000000000058b90bfbe8e7bce5440260801c9161459f565b91700100000000000000b17217f7d1cf79e9490260801c91614591565b9170010000000000000162e42fefa39ef44d910260801c91614582565b91700100000000000002c5c85fdf473dea871f0260801c91614573565b917001000000000000058b90bfbe8e7bdcbe2e0260801c91614564565b9170010000000000000b17217f7d1cf7d83c1a0260801c91614555565b917001000000000000162e42fefa39f02b772c0260801c91614546565b9170010000000000002c5c85fdf473e242ea380260801c91614537565b91700100000000000058b90bfbe8e7cc35c3f00260801c91614528565b917001000000000000b17217f7d1cfb72b45e10260801c91614519565b91700100000000000162e42fefa39fe95583c20260801c91614509565b917001000000000002c5c85fdf4741bea6e77e0260801c916144f9565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c916144e9565b91700100000000000b17217f7d1d351a389d400260801c916144d9565b9170010000000000162e42fefa3ae53369388c0260801c916144c9565b91700100000000002c5c85fdf477b662b269450260801c916144b9565b917001000000000058b90bfbe8f71cb4e4b33d0260801c916144a9565b9170010000000000b17217f7d20cf927c8e94c0260801c91614499565b917001000000000162e42fefa494f1478fde050260801c91614488565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c91614477565b91700100000000058b90bfbe9ddbac5e109cce0260801c91614466565b917001000000000b17217f7d5a7716bba4a9ae0260801c91614455565b91700100000000162e42fefb2fed257559bdaa0260801c91614444565b917001000000002c5c85fdf84bd62ae30a74cc0260801c91614433565b9170010000000058b90bfbf8479bd5a81b51ad0260801c91614422565b91700100000000b17217f80f4ef5aadda455540260801c91614411565b9170010000000162e42ff0999ce3541b9fffcf0260801c916143ff565b91700100000002c5c85fe31f35a6a30da1be500260801c916143ed565b917001000000058b90bfcdee5acd3c1cedc8230260801c916143db565b9170010000000b17217fba9c739aa5819f44f90260801c916143c9565b917001000000162e42fff037df38aa2b219f060260801c916143b7565b9170010000002c5c8601cc6b9e94213c72737a0260801c916143a5565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91614393565b917001000000b1721835514b86e6d96efd1bfe0260801c91614381565b91700100000162e430e5a18f6119e3c02282a50260801c9161436e565b917001000002c5c863b73f016468f6bac5ca2b0260801c9161435b565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91614348565b91700100000b1721bcfc99d9f890ea069117630260801c91614335565b9170010000162e43f4f831060e02d839a9d16d0260801c91614322565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c9161430f565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c916142fc565b9170010000b17255775c040618bf4a4ade83fc0260801c916142e9565b917001000162e525ee054754457d59952920260260801c916142d5565b9170010002c5cc37da9491d0985c348c68e7b30260801c916142c1565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c916142ad565b917001000b175effdc76ba38e31671ca9397250260801c91614299565b91700100162f3904051fa128bca9c55c31e5df0260801c91614285565b917001002c605e2e8cec506d21bfc89a23a00f0260801c91614271565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c9161425d565b91700100b1afa5abcbed6129ab13ec11dc95430260801c91614249565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c91614234565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c9161421f565b917001059b0d31585743ae7c548eb68ca417fd0260801c9161420a565b9170010b5586cf9890f6298b92b71842a983630260801c916141f5565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c916141e0565b917001306fe0a31b7152de8d5a46305c85edec0260801c916141cb565b6fb504f333f9de6484597d89b3754abe9f92506141b656fea2646970667358221220e520796464cdc8822a564990f4be3efe6802bdb608714268e1fd795e29751cac64736f6c634300081e0033a26469706673582212208c60e4603f5bb795ce42a004f14e2b9304016817ca3f9a9ca6829ba5d166afff64736f6c634300081e0033","sourceMap":"1769:834:52:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c636ae73ce314610024575f80fd5b34610373576101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103735760043573ffffffffffffffffffffffffffffffffffffffff81168091036103735760243567ffffffffffffffff8111610373576100959036906004016103f8565b9060443567ffffffffffffffff8111610373576100b69036906004016103f8565b6064359067ffffffffffffffff82116103735736602383011215610373578160040135916100eb6100e684610468565b6103b4565b9060208285815201906024829560051b8201019036821161037357602401915b8183106103875750505060843580600f0b8091036103735760a43567ffffffffffffffff81116103735736602382011215610373578060040135946101526100e687610468565b91602083888152016024819860051b8301019136831161037357602401905b82821061037757505050610104359173ffffffffffffffffffffffffffffffffffffffff831680930361037357610124359373ffffffffffffffffffffffffffffffffffffffff851680950361037357610144359573ffffffffffffffffffffffffffffffffffffffff871680970361037357610164359773ffffffffffffffffffffffffffffffffffffffff8916809903610373576040519b8c9b8c926158fb8094019e8f9081109067ffffffffffffffff1017610346576102528f92938f94602096610260966104c49039845261018086850152610180840190610480565b916040818403910152610480565b8c810360608e01529151808352910193905f5b81811061031a575050509060209160808b015289830360a08b015251918281520195905f5b81811061030457505050918596916101609360c43560c085015260e43560e0850152610100840152610120830152610140820152015203905ff080156102f95760209073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b6040513d5f823e3d90fd5b8251885260209788019790920191600101610298565b825173ffffffffffffffffffffffffffffffffffffffff16865260209586019590920191600101610273565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f80fd5b8135815260209182019101610171565b823573ffffffffffffffffffffffffffffffffffffffff811681036103735781526020928301920161010b565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff82111761034657604052565b81601f820112156103735780359067ffffffffffffffff82116103465761044660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116016103b4565b928284526020838301011161037357815f926020809301838601378301015290565b67ffffffffffffffff81116103465760051b60200190565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f858286010152011601019056fe610140604052346106ee576158fb8038038061001a81610a6a565b9283398101610180828203126106ee5761003382610a8f565b60208301516001600160401b0381116106ee5782610052918501610aa3565b60408401519091906001600160401b0381116106ee5783610074918601610aa3565b60608501519094906001600160401b0381116106ee5781019284601f850112156106ee578351956100ac6100a788610af4565b610a6a565b9460208689815201906020829960051b820101908882116106ee57602001915b818310610a4a57505050608083015180600f0b81036106ee5760a08401516001600160401b0381116106ee5784019680601f890112156106ee5787516101146100a782610af4565b986020808b848152019260051b8201019283116106ee57602001905b828210610a3a5750505060c08401519760e0850151926101536101008701610a8f565b610120870151979095906001600160a01b03891689036106ee57610140880151976001600160a01b03891689036106ee576101600151986001600160a01b038a168a036106ee5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00556080526001600160a01b03168015610a27575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a38051906001600160401b0382116106335760045490600182811c92168015610a1d575b60208310146109405781601f8493116109cf575b50602090601f8311600114610969575f9261095e575b50508160011b915f199060031b1c1916176004555b8051906001600160401b0382116106335760055490600182811c92168015610954575b60208310146109405781601f849311610904575b50602090601f831160011461089e575f92610893575b50508160011b915f199060031b1c1916176005555b60018751111561084e578651906001600160401b0382116106335768010000000000000000821161063357600b5482600b55808310610814575b50600b5f5260205f205f5b8381106107f7575050505060a05285518551036107be5761033a8651610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600654836006558084106107a2575b500160065f5260205f205f5b83811061078e57505050505f5b86518110156104185761271061039c8289610b49565b5110156103e1576103ad8188610b49565b51906006548110156103cd5760019160065f528160205f20015501610386565b634e487b7160e01b5f52603260045260245ffd5b60405162461bcd60e51b815260206004820152600f60248201526e506f6f6c3a20666565203e3d20312560881b6044820152606490fd5b50866127108110156107495760c05262061a8081101561070457801580156106f2575b156106ee5760e052601080546001600160a01b0319166001600160a01b039290921691909117905561012052610100528051905f5b8281106106a7578261048181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600d5483600d5580841061068b575b5001600d5f5260205f205f5b83811061067757846104d181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600f5483600f5580841061065b575b5001600f5f5260205f205f5b8381106106475761052085610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600c5483600c55808410610617575b500190600c5f5260205f20915f5b82811061060357604051614d9d9081610b5e8239608051818181611b4a01528181611d9b015281816120ee015261264c015260a051818181610f130152610f7f015260c0518181816113480152611733015260e0518181816105ac01528181610c550152818161105d0152818161136e015281816114be0152611c2401526101005181818161031701526105f70152610120518181816108050152610a720152f35b600190602083519301928186015501610561565b61062d90600c5f5284845f209182019101610b0b565b83610553565b634e487b7160e01b5f52604160045260245ffd5b600190602084519401938184015501610510565b61067190600f5f5284845f209182019101610b0b565b84610504565b6001906020845194019381840155016104c0565b6106a190600d5f5284845f209182019101610b0b565b846104b4565b60018101908181116106da576001600160a01b03906106c69084610b49565b51165f52600e6020528060405f2055610470565b634e487b7160e01b5f52601160045260245ffd5b5f80fd5b506001600160a01b038216151561043b565b60405162461bcd60e51b815260206004820152601960248201527f506f6f6c3a2070726f746f636f6c20666565203e3d20343025000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601560248201527f506f6f6c3a20666c61736820666565203e3d20312500000000000000000000006044820152606490fd5b600190602084519401938184015501610379565b6107b89060065f5284845f209182019101610b0b565b5f61036d565b60405162461bcd60e51b81526020600482015260116024820152700a0deded87440cccacae640d8cadccee8d607b1b6044820152606490fd5b82516001600160a01b031681830155602090920191600101610319565b600b5f52610848907f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9908101908401610b0b565b5f61030e565b60405162461bcd60e51b815260206004820152601360248201527f506f6f6c3a206e656564203e31206173736574000000000000000000000000006044820152606490fd5b015190505f806102bf565b60055f9081528281209350601f198516905b8181106108ec57509084600195949392106108d4575b505050811b016005556102d4565b01515f1960f88460031b161c191690555f80806108c6565b929360206001819287860151815501950193016108b0565b6109309060055f5260205f20601f850160051c81019160208610610936575b601f0160051c0190610b0b565b5f6102a9565b9091508190610923565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610295565b015190505f8061025d565b60045f9081528281209350601f198516905b8181106109b7575090846001959493921061099f575b505050811b01600455610272565b01515f1960f88460031b161c191690555f8080610991565b9293602060018192878601518155019501930161097b565b60045f52610a17907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f850160051c8101916020861061093657601f0160051c0190610b0b565b5f610247565b91607f1691610233565b631e4fbdf760e01b5f525f60045260245ffd5b8151815260209182019101610130565b82516001600160a01b03811681036106ee578152602092830192016100cc565b6040519190601f01601f191682016001600160401b0381118382101761063357604052565b51906001600160a01b03821682036106ee57565b81601f820112156106ee578051906001600160401b03821161063357610ad2601f8301601f1916602001610a6a565b92828452602083830101116106ee57815f9260208093018386015e8301015290565b6001600160401b0381116106335760051b60200190565b818110610b16575050565b5f8155600101610b0b565b90610b2e6100a783610af4565b8281528092610b3f601f1991610af4565b0190602036910137565b80518210156103cd5760209160051b01019056fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c908163017504b61461295057508063017cf661146128be57806306fdde0314612775578063095ea7b3146126705780630d246214146126025780630eeee627146119a457806318160ddd146119685780631f3a0e411461192757806323b872dd14611790578063313ce5671461175657806331596a6a146116fd57806341c0e1b514611667578063476e44b614611519578063491e7998146113f15780635cffe9de146112115780636863f5bc146110805780636b4082d1146110275780636b7b911214610fa55780636bba3f2f14610f495780636d8d0ff314610e8e5780636ff97f1d14610d8e57806370a0823114610d2b578063715018a614610c8f57806379a68d5314610b6b5780638da5cb5b14610b1a5780638e499bcf14610ade578063939f5ea414610a965780639517606614610a2757806395d89b41146108cd5780639af1d35a1461082e578063a1af5b9a14610765578063a9059cbb14610715578063b3f1c93d14610648578063cb717f3a146104f3578063cce516b7146104a1578063d516b8c614610416578063dd62ed3e1461039d578063e4b50cb81461033b578063f0d1ae4f146102cc5763f2fde38b0361000f57346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610228612a5f565b6102306130bd565b16801561029d5773ffffffffffffffffffffffffffffffffffffffff8254827fffffffffffffffffffffffff00000000000000000000000000000000000000008216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b6024827f1e4fbdf700000000000000000000000000000000000000000000000000000000815280600452fd5b80fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff61038d600435612b2f565b90549060031b1c16604051908152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff60406103ec612a5f565b92826103f6612a82565b9416815260026020522091165f52602052602060405f2054604051908152f35b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043590602435916064359182600f0b83036102c95761049d61047985858561046f83826131e2565b9260443591612dca565b92505050604093919351938493846040919493926060820195825260208201520152565b0390f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff60105416604051908152f35b5060a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761049d61062b61061c61052f612a5f565b610537612a82565b60443573ffffffffffffffffffffffffffffffffffffffff61055882613109565b9281604051957f3dd3c8050000000000000000000000000000000000000000000000000000000060208801521660248601521660448401526064830152606435608483015260843560a483015260c48201527f000000000000000000000000000000000000000000000000000000000000000060e482015260e481526105e061010482612aee565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016613129565b60208082518301019101612d5e565b604080519384526020840192909252908201529081906060820190565b5060807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f161067e612a5f565b73ffffffffffffffffffffffffffffffffffffffff61069b612a82565b81604051937fb3f1c93d00000000000000000000000000000000000000000000000000000000602086015216602484015216604482015260443560648201526064356084820152608481526105e060a482612aee565b602081519181808201938492010103126107115760209051604051908152f35b5f80fd5b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761075a610750612a5f565b6024359033612f98565b602060405160018152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761082a73ffffffffffffffffffffffffffffffffffffffff60105416604051907f2a54db010000000000000000000000000000000000000000000000000000000060208301526024820152602481526107ee604482612aee565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016613129565b5080f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760405180916020600654928381520191600682527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f915b8181106108b75761049d856108ab81870382612aee565b604051918291826129de565b8254845260209093019260019283019201610894565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576040519080600554908160011c91600181168015610a1d575b6020841081146109f0578386529081156109ab575060011461094e575b61049d8461094281860382612aee565b60405191829182612a17565b600581527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0939250905b8082106109915750909150810160200161094282610932565b919260018160209254838588010152019101909291610978565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208087019190915292151560051b850190920192506109429150839050610932565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b92607f1692610915565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020610ad66024356004356131e2565b604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600b54604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b5060e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610b9e612a5f565b90610ba7612a82565b906044356064356084359182600f0b809303610c8b5760c435938415158095036102c95761049d61062b61061c89898989898973ffffffffffffffffffffffffffffffffffffffff610bf98383612d79565b9581604051987f8a3d858d0000000000000000000000000000000000000000000000000000000060208b01521660248901521660448701526064860152608485015260a484015260a43560c484015260e48301526101048201527f000000000000000000000000000000000000000000000000000000000000000061012482015261012481526107ee61014482612aee565b8380fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610cc66130bd565b8073ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604060209173ffffffffffffffffffffffffffffffffffffffff610d7d612a5f565b168152600183522054604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604051806020600b5491828152018091600b85527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db990855b818110610e625750505082610e0b910383612aee565b604051928392602084019060208552518091526040840192915b818110610e33575050500390f35b825173ffffffffffffffffffffffffffffffffffffffff16845285945060209384019390920191600101610e25565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610df5565b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f1610ec4612a5f565b73ffffffffffffffffffffffffffffffffffffffff604051917fc5eabfb900000000000000000000000000000000000000000000000000000000602084015216602482015260243560448201527f0000000000000000000000000000000000000000000000000000000000000000600f0b6064820152606481526105e0608482612aee565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f0000000000000000000000000000000000000000000000000000000000000000600f0b8152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610ff2612a5f565b610ffa6130bd565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000601054161760105580f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c95760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576110b8612a5f565b6110c0612a82565b90608435801515809103610c8b5773ffffffffffffffffffffffffffffffffffffffff6111429381604051947f6863f5bc0000000000000000000000000000000000000000000000000000000060208701521660248501521660448301526044356064830152606435608483015260a482015260a481526105e060c482612aee565b805181019060208181840193031261120d5760208101519067ffffffffffffffff8211610c8b57019181603f840112156102c95760208301519267ffffffffffffffff84116111e0578360051b91604051946111a16020850187612aee565b855260208080870194840101019384116102c95750604001905b8282106111d0576040518061049d86826129de565b81518152602091820191016111bb565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8280fd5b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043573ffffffffffffffffffffffffffffffffffffffff81168091036113e95761126a612a82565b60643567ffffffffffffffff8111610c8b5736602382011215610c8b5780600401359067ffffffffffffffff82116113ed5736602483830101116113ed576113c3937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f846107ee9560246101049673ffffffffffffffffffffffffffffffffffffffff6040519a8b987fe49cd4750000000000000000000000000000000000000000000000000000000060208b0152848a0152166044880152604435606488015260c060848801528260e48801520186860137888582860101527f000000000000000000000000000000000000000000000000000000000000000060a48501527f000000000000000000000000000000000000000000000000000000000000000060c48501520116810103017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612aee565b6020818051810103126113e957602001518015158091036113e957602090604051908152f35b5080fd5b8480fd5b50346102c95760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957611429612a5f565b611431612a82565b906064359160a4358015158091036113ed578373ffffffffffffffffffffffffffffffffffffffff6114656114f496613109565b9381604051967f8d01fa440000000000000000000000000000000000000000000000000000000060208901521660248701521660448501526044356064850152608484015260843560a484015260c483015260e48201527f000000000000000000000000000000000000000000000000000000000000000061010482015261010481526105e061012482612aee565b6040818051810103126113e95780604060208193015191015182519182526020820152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576060602060405161155881612aa5565b83815201526040519061156a82612aa5565b600954600f0b825260405191600a548084528360208101600a8552602085209285905b80600183011061163b576115b6945491818110611627575b10611616575b509493940383612aee565b6020810191825260405192839260208452606084019251600f0b6020850152519160408085015282518091526020608085019301915b8181106115fa575050500390f35b8251600f0b8452859450602093840193909201916001016115ec565b60801d600f0b81526020015f6115ab565b92602060019184600f0b81520193016115a5565b9160029193506040600191865480600f0b825260801d600f0b602082015201940192018692939161158d565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761169e6130bd565b60085460ff8116156116ae575080f35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001176008557f0f8eeedbc400fd6686703559f58d1e6143fdaed533f19a86c93d67a2fe4fb3318180a180f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405160128152f35b50346102c95760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576117c8612a5f565b6117d0612a82565b6044359173ffffffffffffffffffffffffffffffffffffffff811680855260026020526040852073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f2054907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821061184d575b505061075a9350612f98565b8482106118f35780156118c757331561189b578560409161075a975260026020522073ffffffffffffffffffffffffffffffffffffffff33165f526020528360405f20910390555f80611841565b6024867f94280d6200000000000000000000000000000000000000000000000000000000815280600452fd5b6024867fe602df0500000000000000000000000000000000000000000000000000000000815280600452fd5b60648686847ffb8f41b200000000000000000000000000000000000000000000000000000000835233600452602452604452fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060ff600854166040519015158152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600354604051908152f35b506101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576119d8612a5f565b906024357fffffffff00000000000000000000000000000000000000000000000000000000811691828203610711576044359273ffffffffffffffffffffffffffffffffffffffff84169283850361071157606435936084359660c43580600f0b810361071157610104359060e43582151583036107115760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146125da5760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005560ff6008541661257c578015908115612571575b501561251357611ad090611ac58b8a612d79565b9060a4358c8b612dca565b9b859d9596949e9293915073ffffffffffffffffffffffffffffffffffffffff611af982612b2f565b90549060031b1c169973ffffffffffffffffffffffffffffffffffffffff611b2085612b2f565b90549060031b1c169b155f146123665750878a73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016988982148061235c575b1561228557505050863b15610711575f8e976004604051809a81937fd0e30db00000000000000000000000000000000000000000000000000000000083525af196871561227a578f908f908f99612263575b50611bfd611c1f915b611bf8611bdb86612b74565b90549060031b1c611beb87612b8c565b90549060031b1c90612c0e565b612c0e565b91611c1a611c0a87612b74565b90549060031b1c611beb88612b8c565b612bd4565b908d987f0000000000000000000000000000000000000000000000000000000000000000908115158061225a575b6121d1575b5050611cf091611cd2611c93611ce793611c7d611c6e88612b8c565b90549060031b1c821015612c65565b611c8687612b8c565b90549060031b1c90612bd4565b611c9c86612b74565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b611cde611c6e87612b8c565b611c8686612b8c565b611c9c85612b74565b8b82600f0b1315612173578b84600f0b131561211557611d7993611d6182611d39611d33611d3996611d24611d3397612f37565b90549060031b1c600f0b61330c565b91612f37565b9091906fffffffffffffffffffffffffffffffff83549160031b928116831b921b1916179055565b611d6a84612f37565b90549060031b1c600f0b613349565b806120d6575b156120105773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b1561200c5787809160248d60405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af18015612001579188918c93611fe3575b5081809381925af13d15611fde573d67ffffffffffffffff8111611fb15760405190611e5e60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160183612aee565b81528760203d92013e5b15611f53577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a0915b611e9d818a612bd4565b73ffffffffffffffffffffffffffffffffffffffff604051931683528a60208401528b604084015260608301526080820152a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015611f22575b50505061049d90604051938493846040919493926060820195825260208201520152565b8280809381938290611f4a575b3390f115611f3e578080611efe565b604051903d90823e3d90fd5b506108fc611f2f565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b611e68565b611ff09193508290612aee565b611ffd57868a915f611e0a565b8680fd5b6040513d8a823e3d90fd5b8780fd5b506040517fa9059cbb0000000000000000000000000000000000000000000000000000000087528360045289602452602087604481808a5af19060018851148216156120b5575b60405215612089577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a091611e93565b602486867f5274afe7000000000000000000000000000000000000000000000000000000008252600452fd5b9060018115166120cd57863b15153d15161690612057565b503d87823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168614611d7f565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a20616d6f756e744f7574203c3d20300000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4d53523a20616d6f756e74496e203c3d2030000000000000000000000000006044820152fd5b611ce7929a50611c93620f42406121ef611cf09694611cd294612c1b565b049b8c612202575b93505050918f611c52565b6122558d6122216122128a612b8c565b91909283548360031b1c612c0e565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b6121f7565b50801515611c4d565b612270919e505f90612aee565b5f9c611bfd611bc6565b6040513d5f823e3d90fd5b60209293949596979899505f80809360649373ffffffffffffffffffffffffffffffffffffffff604051987f23b872dd00000000000000000000000000000000000000000000000000000000855216600452306024526044525af19060015f511482161561233b575b6040525f6060521561230f57908b95949392918e611c1f8f611bfd90611bcf565b887f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b906001811516612353578a3b15153d151616906122ee565b503d5f823e3d90fd5b5080341015611b74565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529197506020826024818e5afa91821561227a578f905f936124db575b50602492916123df916040519160208301528d858301526044820152604481526123d9606482612aee565b8a61328c565b5060208b604051938480927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa801561227a578f925f916124a2575b509061242f91612bd4565b03612444578b958e611c1f8f611bfd90611bcf565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e742066756e647300000000000000000000000000006044820152fd5b919250506020813d6020116124d3575b816124bf60209383612aee565b8101031261071157518e919061242f612424565b3d91506124b2565b9250506020823d60201161250b575b816124f760209383612aee565b81010312610711579051908e6123df6123ae565b3d91506124ea565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f737761703a20646561646c696e652065786365656465640000000000000000006044820152fd5b90504211155f611ab1565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346107115760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576126a7612a5f565b6024359033156127495773ffffffffffffffffffffffffffffffffffffffff1690811561271d57335f52600260205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576040515f6004548060011c906001811680156128b4575b6020831081146128875782855290811561284557506001146127e7575b61049d8361094281850382612aee565b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b80821061282b575090915081016020016109426127d7565b919260018160209254838588010152019101909291612813565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b8401909101915061094290506127d7565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916127ba565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157604051806020600d54918281520190600d5f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5905f5b81811061293a5761049d856108ab81870382612aee565b8254845260209093019260019283019201612923565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157600c548082526020820190600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7905f5b8181106129c85761049d856108ab81870382612aee565b82548452602090930192600192830192016129b1565b60206040818301928281528451809452019201905f5b818110612a015750505090565b82518452602093840193909201916001016129f4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6040810190811067ffffffffffffffff821117612ac157604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612ac157604052565b600b54811015612b4757600b5f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600f54811015612b4757600f5f5260205f2001905f90565b600c54811015612b4757600c5f5260205f2001905f90565b600d54811015612b4757600d5f5260205f2001905f90565b600654811015612b475760065f5260205f2001905f90565b91908203918211612be157565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b91908201809211612be157565b81810292918115918404141715612be157565b8115612c38570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b15612c6c57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f62616c616e6365203c2070726f746f636f6c206f7765640000000000000000006044820152fd5b90604051918281549182825260208201905f5260205f20925f905b806001830110612d3257612d0b945491818110612d1e575b10612d0d575b500383612aee565b565b60801d600f0b81526020015f612d03565b92602060019184600f0b8152019301612cfd565b9160029193506040600191865480600f0b825260801d600f0b6020820152019401920185929391612ce5565b90816060910312610711578051916040602083015192015190565b9190826103e8026103e881048403612be15781612d9591612c0e565b90815f52600760205260405f2054938415612daf57505050565b612dba9294506131e2565b915f5260076020528160405f2055565b92949394919091612df6612dde87846131ff565b9050612de986612ba4565b90549060031b1c9061339f565b905f82600f0b1315612ed957612e0d9184866135c9565b919092612e2c8394612e1f8197612ba4565b90549060031b1c90613221565b925f92849880612eb8575b508811612e5a57612e4a612e5792612ba4565b90549060031b1c90613aa0565b94565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f737761703a207472616e736665722065786365656473206d61780000000000006044820152fd5b909850612ec791935084613253565b91612ed28385612c0e565b975f612e37565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761703a20696e70757420746f6f20736d616c6c20616674657220666565006044820152fd5b90600a54821015612b4757600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b9190918054831015612b47575f52601060205f208360011c019260041b1690565b73ffffffffffffffffffffffffffffffffffffffff169081156130915773ffffffffffffffffffffffffffffffffffffffff1691821561306557815f52600160205260405f205481811061303357817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f52600184520360405f2055845f526001825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff5f541633036130dd57565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b600654156131245761311a90612bbc565b90549060031b1c90565b505f90565b905f8091602081519101845af480806131cf575b1561314f57505061314c613386565b90565b156131965773ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b3d156131a7576040513d5f823e3d90fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b503d15158061313d5750813b151561313d565b90611beb6131f261314c93612bbc565b90549060031b1c91612bbc565b9190801561321b5761321461314c9184613253565b8093612bd4565b505f9190565b61323561322e8383613aa0565b928361339f565b90600f0b90600f0b126132455790565b60018101809111612be15790565b9080156132865761326391612c1b565b620f4240810190818111612be157620f423f01908111612be157620f4240900490565b50505f90565b905f809160208151910182855af180806131cf571561314f57505061314c613386565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2575b1561071157600f0b90565b506f7fffffffffffffffffffffffffffffff8113156132e7565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b604051903d82523d5f602084013e60203d830101604052565b81156107115777ffffffffffffffffffffffffffffffffffffffffffffffff811161341757906133d19160401b612c2e565b6fffffffffffffffffffffffffffffffff8111610711576fffffffffffffffffffffffffffffffff166f7fffffffffffffffffffffffffffffff811161071157600f0b90565b60c09181831c80936401000000008210156135bc575b600282620100006134ba9410156135b0575b6101008110156135a4575b6010811015613598575b600481101561358d575b1015613585575b8360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b612c2e565b926fffffffffffffffffffffffffffffffff8411610711578160801c8402906fffffffffffffffffffffffffffffffff8316850290809460401b9082821061355b575b5003928160801b91828510613532575b60801c036135275761351f9203612c2e565b905b016133d1565b505050600190613521565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019061350d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f6134fd565b600101613465565b91810191811c61345e565b6004928301921c613454565b6008928301921c61344a565b6010928301921c61343f565b505060e082811c9061342d565b9193929093600a5480841080613a97575b15613a3957600203613a21576135f86135f3600a612cca565b613f94565b946136075f87600f0b13613afb565b613617600954600f0b9687613c82565b5f81600f0b1315613a0e5761362b81613b60565b6136678161366261363d89600a612f77565b90549060031b1c600f0b61365287600a612f77565b90549060031b1c600f0b90613349565b613c82565b9085600f0b5f81136137d8575b505f600f83900b126137ca57815b67028f5c28f5c28f5c90600f0b136137b55761369e9085613c82565b80600f0b915f83131561379f57678000000000000000831361379f57906136f961371a9493926136f36136ed671999999999999999946136e76136e18280613c82565b946132af565b90613c82565b91613bb0565b90613349565b916137048380613c82565b91600f0b1261377657906136f36136e792613bb0565b9384600f0b965f8813156137565761373383600a612f77565b90549060031b1c600f0b881215613756575f849698126137565750505050509190565b90919293945061377295965061376c600a612cca565b90613d08565b9091565b613799613793836136f361378d6136e79686613c82565b94613bb0565b91613bf6565b9061330c565b50505050909192613772949561376c600a612cca565b505050909192613772949561376c600a612cca565b6137d382613cc2565b613682565b6137e58380979397613c82565b680600000000000000006138096137fc8684613c82565b926137996136ed886132af565b9160401b60170b05907fffffffffffffffffffffffffffffffff80000000000000000000000000000000821215806139f4575b156107115761384e91600f0b9061330c565b9081600f0b121561396f576138847fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009188613c3c565b600f0b017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613955575b1561071157600f0b5f811261394757805b671999999999999999600f0b90600f0b1361393057806137996137936138ec836138fa95613c82565b926136f361378d8286613c82565b5f81600f0b13156139305761390f9084613c82565b9080600f0b82600f0b125f146139285750935b5f613674565b949050613922565b5094959293505050613772949561376c600a612cca565b61395081613cc2565b6138c3565b506f7fffffffffffffffffffffffffffffff8113156138b2565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4c4d53523a206c696d69745072696365203c3d2063757272656e74207072696360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152608490fd5b506f7fffffffffffffffffffffffffffffff82131561383c565b50909192613772949561376c600a612cca565b9091936137729394600954600f0b61376c600a612cca565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4c4d53523a2069647800000000000000000000000000000000000000000000006044820152fd5b508086106135da565b811561328657600f0b5f8112610711576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116107115760401b81198111610711570190565b15613b0257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b600f0b801561071157700100000000000000000000000000000000057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b680200000000000000009060401b60170b057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b680300000000000000009060401b60170b057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b90600f0b9081156107115760401b60170b057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806132f2571561071157600f0b90565b7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081600f0b14610711575f03600f0b90565b8051821015612b475760209160051b010190565b95949093613d4c90939293613d69613d64613d36839a613d278a613f94565b906136625f83600f0b13613afb565b96613662613d4389613b60565b9586928b613cf4565b51600f0b613d5a898c613cf4565b51600f0b90613349565b613fc9565b9280600f0b5f8113613ed6575b505090613d8291613c82565b6820000000000000000081600f0b13613e5257613d64613da191613cc2565b600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613e38575b1561071157613df491613def91600f0b90613c82565b6132af565b925f84600f0b1315613e245750506136e7613e0e92614026565b905f82600f0b1315613e1c57565b5f9250829150565b909150613e319250613cf4565b51600f0b90565b506f7fffffffffffffffffffffffffffffff811315613dd9565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4c4d53523a20612f6220746f6f206c617267652028776f756c64206f7665726660448201527f6c6f7720657870290000000000000000000000000000000000000000000000006064820152fd5b84600f9a939a0b121561396f5783613eed91613c3c565b5f81600f0b1315613f3657613f04613f0a91614026565b86613c82565b9780600f0b89600f0b125f14613f2a575050613d8290875b90915f613d76565b613d8292919850613f22565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4d53523a20726174696f3c3d300000000000000000000000000000000000006044820152fd5b5f90815b8151831015613fc357613fbb600191613fb18585613cf4565b51600f0b9061330c565b920191613f98565b91505090565b600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000811261312457700171547652b82fe1777d0ffda0d23a7d1261314c910260801d600f0b614153565b600f0b5f811315610711575f908068010000000000000000821215614146575b80640100000000600292121561413a575b6201000081121561412e575b610100811215614122575b6010811215614116575b600481121561410b575b1215614101575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f83136140e557506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d90565b8002908160ff1c9182607f011c918302019160011d91906140c0565b9060010190614089565b92810192811d614082565b6004938401931d614078565b6008938401931d61406e565b6010938401931d614063565b6020938401931d614057565b506040915080821d614046565b80600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc000000000000000008112613286576f80000000000000000000000000000000915f6780000000000000008216600f0b13614d4f575b5f6740000000000000008216600f0b13614d32575b5f6720000000000000008216600f0b13614d15575b5f6710000000000000008216600f0b13614cf8575b5f6708000000000000008216600f0b13614cdb575b5f6704000000000000008216600f0b13614cbe575b5f6702000000000000008216600f0b13614ca1575b5f6701000000000000008216600f0b13614c84575b5f66800000000000008216600f0b13614c67575b5f66400000000000008216600f0b13614c4a575b5f66200000000000008216600f0b13614c2d575b5f66100000000000008216600f0b13614c10575b5f66080000000000008216600f0b13614bf3575b5f66040000000000008216600f0b13614bd6575b5f66020000000000008216600f0b13614bb9575b5f66010000000000008216600f0b13614b9c575b5f658000000000008216600f0b13614b7f575b5f654000000000008216600f0b13614b62575b5f652000000000008216600f0b13614b45575b5f651000000000008216600f0b13614b28575b5f650800000000008216600f0b13614b0b575b5f650400000000008216600f0b13614aee575b5f650200000000008216600f0b13614ad1575b5f650100000000008216600f0b13614ab4575b5f6480000000008216600f0b13614a97575b5f6440000000008216600f0b13614a7a575b5f6420000000008216600f0b13614a5d575b5f6410000000008216600f0b13614a40575b5f6408000000008216600f0b13614a23575b5f6404000000008216600f0b13614a06575b5f6402000000008216600f0b136149e9575b5f6401000000008216600f0b136149cc575b5f63800000008216600f0b136149af575b5f63400000008216600f0b13614992575b5f63200000008216600f0b13614975575b5f63100000008216600f0b13614958575b5f63080000008216600f0b1361493b575b5f63040000008216600f0b1361491e575b5f63020000008216600f0b13614901575b5f63010000008216600f0b136148e4575b5f628000008216600f0b136148c7575b5f624000008216600f0b136148aa575b5f622000008216600f0b1361488d575b5f621000008216600f0b13614870575b5f620800008216600f0b13614853575b5f620400008216600f0b13614836575b5f620200008216600f0b13614819575b5f620100008216600f0b136147fc575b5f6180008216600f0b136147df575b5f6140008216600f0b136147c2575b5f6120008216600f0b136147a5575b5f6110008216600f0b13614788575b5f6108008216600f0b1361476b575b5f6104008216600f0b1361474e575b5f6102008216600f0b13614731575b5f6101008216600f0b13614714575b5f60808216600f0b136146f7575b5f60408216600f0b136146da575b5f60208216600f0b136146bd575b5f60108216600f0b136146a0575b5f60088216600f0b13614683575b5f60048216600f0b13614666575b5f60028216600f0b13614648575b60015f9116600f0b1361462b575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161071157600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c90614601565b7001000000000000000162e42fefa39ef35890920260801c916145f3565b9170010000000000000002c5c85fdf473de6b20260801c916145e5565b91700100000000000000058b90bfbe8e7bcd6d0260801c916145d7565b917001000000000000000b17217f7d1cf79afa0260801c916145c9565b91700100000000000000162e42fefa39ef366f0260801c916145bb565b917001000000000000002c5c85fdf473de6eca0260801c916145ad565b9170010000000000000058b90bfbe8e7bce5440260801c9161459f565b91700100000000000000b17217f7d1cf79e9490260801c91614591565b9170010000000000000162e42fefa39ef44d910260801c91614582565b91700100000000000002c5c85fdf473dea871f0260801c91614573565b917001000000000000058b90bfbe8e7bdcbe2e0260801c91614564565b9170010000000000000b17217f7d1cf7d83c1a0260801c91614555565b917001000000000000162e42fefa39f02b772c0260801c91614546565b9170010000000000002c5c85fdf473e242ea380260801c91614537565b91700100000000000058b90bfbe8e7cc35c3f00260801c91614528565b917001000000000000b17217f7d1cfb72b45e10260801c91614519565b91700100000000000162e42fefa39fe95583c20260801c91614509565b917001000000000002c5c85fdf4741bea6e77e0260801c916144f9565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c916144e9565b91700100000000000b17217f7d1d351a389d400260801c916144d9565b9170010000000000162e42fefa3ae53369388c0260801c916144c9565b91700100000000002c5c85fdf477b662b269450260801c916144b9565b917001000000000058b90bfbe8f71cb4e4b33d0260801c916144a9565b9170010000000000b17217f7d20cf927c8e94c0260801c91614499565b917001000000000162e42fefa494f1478fde050260801c91614488565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c91614477565b91700100000000058b90bfbe9ddbac5e109cce0260801c91614466565b917001000000000b17217f7d5a7716bba4a9ae0260801c91614455565b91700100000000162e42fefb2fed257559bdaa0260801c91614444565b917001000000002c5c85fdf84bd62ae30a74cc0260801c91614433565b9170010000000058b90bfbf8479bd5a81b51ad0260801c91614422565b91700100000000b17217f80f4ef5aadda455540260801c91614411565b9170010000000162e42ff0999ce3541b9fffcf0260801c916143ff565b91700100000002c5c85fe31f35a6a30da1be500260801c916143ed565b917001000000058b90bfcdee5acd3c1cedc8230260801c916143db565b9170010000000b17217fba9c739aa5819f44f90260801c916143c9565b917001000000162e42fff037df38aa2b219f060260801c916143b7565b9170010000002c5c8601cc6b9e94213c72737a0260801c916143a5565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91614393565b917001000000b1721835514b86e6d96efd1bfe0260801c91614381565b91700100000162e430e5a18f6119e3c02282a50260801c9161436e565b917001000002c5c863b73f016468f6bac5ca2b0260801c9161435b565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91614348565b91700100000b1721bcfc99d9f890ea069117630260801c91614335565b9170010000162e43f4f831060e02d839a9d16d0260801c91614322565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c9161430f565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c916142fc565b9170010000b17255775c040618bf4a4ade83fc0260801c916142e9565b917001000162e525ee054754457d59952920260260801c916142d5565b9170010002c5cc37da9491d0985c348c68e7b30260801c916142c1565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c916142ad565b917001000b175effdc76ba38e31671ca9397250260801c91614299565b91700100162f3904051fa128bca9c55c31e5df0260801c91614285565b917001002c605e2e8cec506d21bfc89a23a00f0260801c91614271565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c9161425d565b91700100b1afa5abcbed6129ab13ec11dc95430260801c91614249565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c91614234565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c9161421f565b917001059b0d31585743ae7c548eb68ca417fd0260801c9161420a565b9170010b5586cf9890f6298b92b71842a983630260801c916141f5565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c916141e0565b917001306fe0a31b7152de8d5a46305c85edec0260801c916141cb565b6fb504f333f9de6484597d89b3754abe9f92506141b656fea2646970667358221220e520796464cdc8822a564990f4be3efe6802bdb608714268e1fd795e29751cac64736f6c634300081e0033a26469706673582212208c60e4603f5bb795ce42a004f14e2b9304016817ca3f9a9ca6829ba5d166afff64736f6c634300081e0033","sourceMap":"1769:834:52:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2283:311;;;;;;;;;;;;;;;1769:834;-1:-1:-1;2283:311:52;;;1769:834;2283:311;;;;;1769:834;2283:311;1769:834;2283:311;;;;1769:834;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2283:311;;1769:834;2283:311;;;;;1769:834;;;;;;;;;;2283:311;1769:834;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2283:311;1769:834;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;1769:834:52;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1769:834:52;;;;;;;;;;;:::o","linkReferences":{}},"methodIdentifiers":{"deploy(address,string,string,address[],int128,uint256[],uint256,uint256,address,address,address,address)":"6ae73ce3"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens_\",\"type\":\"address[]\"},{\"internalType\":\"int128\",\"name\":\"kappa_\",\"type\":\"int128\"},{\"internalType\":\"uint256[]\",\"name\":\"fees_\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"flashFeePpm_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolFeePpm_\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"protocolFeeAddress_\",\"type\":\"address\"},{\"internalType\":\"contract NativeWrapper\",\"name\":\"wrapper_\",\"type\":\"address\"},{\"internalType\":\"contract PartyPoolSwapImpl\",\"name\":\"swapImpl_\",\"type\":\"address\"},{\"internalType\":\"contract PartyPoolMintImpl\",\"name\":\"mintImpl_\",\"type\":\"address\"}],\"name\":\"deploy\",\"outputs\":[{\"internalType\":\"contract IPartyPool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/PartyPoolDeployer.sol\":\"PartyPoolBalancedPairDeployer\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/abdk-libraries-solidity/ABDKMath64x64.sol\":{\"keccak256\":\"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97\",\"license\":\"BSD-4-Clause\",\"urls\":[\"bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7\",\"dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol\":{\"keccak256\":\"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd\",\"dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashLender.sol\":{\"keccak256\":\"0x3a3549277762438ad9a38fce50493ed8995b806f78aabff02d51b4e1671ce6f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f105ec892766b8a41ece6d3b10a4e434166cc8db4ddb8451493a2de93cf7d893\",\"dweb:/ipfs/QmP5wxpX9cDzKtToA2cM5jbb928UN8DtGyV1cG4w7jPJCt\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd\",\"dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0x25f9b099413f805b4c4bbad8cc179326c10be237aec00349caf91524f8db0bbc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dcfb75af07ad33b1f8e966f793db3df8fbcfb14103ed3644c0c634658a8fd099\",\"dweb:/ipfs/QmPWamdkbcKwG3ah2G9TZtKHzQmjnunsWoPWr5KKfbrKNb\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168\",\"dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd274645d15bb7e4fcb9c833e401b2c5837404f90057f11a49118f25e0af7c76f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d38e0b997bb7aebae26d190b03d0991feb0d204c45f945e60014e1ca9175de69\",\"dweb:/ipfs/QmWzsUHHAZcjMyF8uMDEtNpMTkYZdQrfvdKPobXvwVHKo6\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x50e81a8b089e3f382b6c915aa0166773de64ea4756e8f9479d9943a5f956ddf5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bfeb96a150537222e2191c03887127499a4f21dfb5f9a7211da4d81749b52848\",\"dweb:/ipfs/QmYR75ECbsBuxSiXmGvGfNKJRLoK5MdLUZL1bd8SixzxL4\"]},\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161\",\"dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"src/ERC20External.sol\":{\"keccak256\":\"0x421f511bb3aa7258fb7121aa66b9a2e8e0b7a07b7e51c800c714f7acbfd599d3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b3fde56a83eae12a31eb4875d8952a99d18591fe0f18b6a12392c8f48f76af46\",\"dweb:/ipfs/QmeApbmGv6Z2b1JynvBxaAK1j1eWhGYpeNEP56V8XXvpcz\"]},\"src/ERC20Internal.sol\":{\"keccak256\":\"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f\",\"dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk\"]},\"src/IOwnable.sol\":{\"keccak256\":\"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1\",\"dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9\"]},\"src/IPartyFlashCallback.sol\":{\"keccak256\":\"0xff1d473d27c4dc75441a5f0db2d761916cce4a702f660e998467791efd1d9b2e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3220d69c62ed8c8106762c92857f24011284e8ddcfa5db4210e506b112fa1870\",\"dweb:/ipfs/QmYoZiGsVwoJvyPMcsSste4tq93wVBgDqCZkwPY7dvyLBJ\"]},\"src/IPartyInfo.sol\":{\"keccak256\":\"0x80e88e8c29cdf12426f16b4bf2a088397fcc31c2664564f7f26117dc85009af7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b91392cbda8adfccf9bea2e584616c4b3359d7381a18f5f3e5c9c71618786051\",\"dweb:/ipfs/QmWtWb1gVs2pzFkjwDj4mcdoCnQLPbwq4Qxbh38VEdWwAW\"]},\"src/IPartyPool.sol\":{\"keccak256\":\"0x55d3656b1a4c75801852066b7ba871212e5e807917b3b9029349349fae39375c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://009b67ccf1d28a04a2407a05ddda8f954033b7ac70f7fd5cbedbf779e867df9f\",\"dweb:/ipfs/QmS5vQcfma6PN28Q6qQwqa7KmUKu2KST72jwF8ffsj6Bw2\"]},\"src/LMSRStabilized.sol\":{\"keccak256\":\"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3\",\"dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB\"]},\"src/LMSRStabilizedBalancedPair.sol\":{\"keccak256\":\"0x782f3baf92f74152c0b93b95199abbb3a36c75c921454260c8b0237f91d7c59d\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://04d463c4fdcb6c8e2ebf9aed649ff21cca759ba73a4c93659e30c7df25e26c81\",\"dweb:/ipfs/QmUxmWytiw5VYJRUrFbSGm1oWmDPQ4q23pnkmK1q9P4apN\"]},\"src/NativeWrapper.sol\":{\"keccak256\":\"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238\",\"dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB\"]},\"src/OwnableExternal.sol\":{\"keccak256\":\"0x0a0199368ad20a31e7169b3e56449bf022c9d680e0d487c118608a7f14cb7efb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3348a063649e01acf9c6aa6b7ce2ecf62ace8c6f1467477de7d605996f08ec64\",\"dweb:/ipfs/QmSoxb35FFsNCgXgWn91CupvjpGmyM31wcfxAVpVFFPecX\"]},\"src/OwnableInternal.sol\":{\"keccak256\":\"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca\",\"dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE\"]},\"src/PartyPool.sol\":{\"keccak256\":\"0xf4af110b4cd06a00ee1ec2bd61e887662dcb26aaf6903b9910902614b50e4955\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://691fabaffecdf698601cc0696099e3bfa44ed60097b8f9b9f01cd4bf703bbb77\",\"dweb:/ipfs/QmXuPX2zu8sN9VyePDvVra4QP8LN2knNxbiGsMGzYAyS8S\"]},\"src/PartyPoolBalancedPair.sol\":{\"keccak256\":\"0x7d36ae211709da83ecafcc70f31e5fcdc1bc299243eedceebf17f26339757d7b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://91762575c367c9b1d50a633fb46ccf429a28bbaf70f76b524749ad32dc716d7a\",\"dweb:/ipfs/QmVLxjR3h2XJukjXFx56b4m8SPg6oupxqkzY5EKCK7GFHn\"]},\"src/PartyPoolBase.sol\":{\"keccak256\":\"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5\",\"dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5\"]},\"src/PartyPoolDeployer.sol\":{\"keccak256\":\"0xdf2a6a8602eba3aef625c798a0ec6525feb7520c2fd6933c30dd76fe3c4e2618\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9aa94963e0d34feddf63b3ae034874557229740be1ef80f49e87bd05694c9b50\",\"dweb:/ipfs/QmYQ6mH1mEJCJ9XNGdT3saRU3q36GZ94WuyRsn9LRWXtbM\"]},\"src/PartyPoolHelpers.sol\":{\"keccak256\":\"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5\",\"dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP\"]},\"src/PartyPoolMintImpl.sol\":{\"keccak256\":\"0xe9d9927cecd46a1f836b2c43e9d6184642b9e695c7462e5fb7c671a38aab7398\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8d821911d7982fc302929198539b27f72be100b91450c98d2e0081519f776499\",\"dweb:/ipfs/QmRChx1DPD1gKXwfD1m6aQ7pgh1aX6CvYLNX41ufdJteaJ\"]},\"src/PartyPoolSwapImpl.sol\":{\"keccak256\":\"0x71ecbd6d0fb106031baed7e4c21694ef24f0112af7d975325b98b1b0463ba5b2\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://64f8f8bae2f89ca495b9edacd012363b55e78a198f100650beb2b1238e8ef11f\",\"dweb:/ipfs/QmVfihiw9TqncuEfZKx7c6WEHiGFfRQyhtfdTGzfN7emNY\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"contract IERC20[]","name":"tokens_","type":"address[]"},{"internalType":"int128","name":"kappa_","type":"int128"},{"internalType":"uint256[]","name":"fees_","type":"uint256[]"},{"internalType":"uint256","name":"flashFeePpm_","type":"uint256"},{"internalType":"uint256","name":"protocolFeePpm_","type":"uint256"},{"internalType":"address","name":"protocolFeeAddress_","type":"address"},{"internalType":"contract NativeWrapper","name":"wrapper_","type":"address"},{"internalType":"contract PartyPoolSwapImpl","name":"swapImpl_","type":"address"},{"internalType":"contract PartyPoolMintImpl","name":"mintImpl_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deploy","outputs":[{"internalType":"contract IPartyPool","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/PartyPoolDeployer.sol":"PartyPoolBalancedPairDeployer"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/abdk-libraries-solidity/ABDKMath64x64.sol":{"keccak256":"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97","urls":["bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7","dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN"],"license":"BSD-4-Clause"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d","urls":["bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100","dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc","urls":["bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037","dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44","urls":["bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d","dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol":{"keccak256":"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e","urls":["bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd","dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashLender.sol":{"keccak256":"0x3a3549277762438ad9a38fce50493ed8995b806f78aabff02d51b4e1671ce6f5","urls":["bzz-raw://f105ec892766b8a41ece6d3b10a4e434166cc8db4ddb8451493a2de93cf7d893","dweb:/ipfs/QmP5wxpX9cDzKtToA2cM5jbb928UN8DtGyV1cG4w7jPJCt"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86","urls":["bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd","dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0x25f9b099413f805b4c4bbad8cc179326c10be237aec00349caf91524f8db0bbc","urls":["bzz-raw://dcfb75af07ad33b1f8e966f793db3df8fbcfb14103ed3644c0c634658a8fd099","dweb:/ipfs/QmPWamdkbcKwG3ah2G9TZtKHzQmjnunsWoPWr5KKfbrKNb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9","urls":["bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168","dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd274645d15bb7e4fcb9c833e401b2c5837404f90057f11a49118f25e0af7c76f","urls":["bzz-raw://d38e0b997bb7aebae26d190b03d0991feb0d204c45f945e60014e1ca9175de69","dweb:/ipfs/QmWzsUHHAZcjMyF8uMDEtNpMTkYZdQrfvdKPobXvwVHKo6"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol":{"keccak256":"0x50e81a8b089e3f382b6c915aa0166773de64ea4756e8f9479d9943a5f956ddf5","urls":["bzz-raw://bfeb96a150537222e2191c03887127499a4f21dfb5f9a7211da4d81749b52848","dweb:/ipfs/QmYR75ECbsBuxSiXmGvGfNKJRLoK5MdLUZL1bd8SixzxL4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol":{"keccak256":"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0","urls":["bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161","dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"},"src/ERC20External.sol":{"keccak256":"0x421f511bb3aa7258fb7121aa66b9a2e8e0b7a07b7e51c800c714f7acbfd599d3","urls":["bzz-raw://b3fde56a83eae12a31eb4875d8952a99d18591fe0f18b6a12392c8f48f76af46","dweb:/ipfs/QmeApbmGv6Z2b1JynvBxaAK1j1eWhGYpeNEP56V8XXvpcz"],"license":"UNLICENSED"},"src/ERC20Internal.sol":{"keccak256":"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36","urls":["bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f","dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk"],"license":"UNLICENSED"},"src/IOwnable.sol":{"keccak256":"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990","urls":["bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1","dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9"],"license":"MIT"},"src/IPartyFlashCallback.sol":{"keccak256":"0xff1d473d27c4dc75441a5f0db2d761916cce4a702f660e998467791efd1d9b2e","urls":["bzz-raw://3220d69c62ed8c8106762c92857f24011284e8ddcfa5db4210e506b112fa1870","dweb:/ipfs/QmYoZiGsVwoJvyPMcsSste4tq93wVBgDqCZkwPY7dvyLBJ"],"license":"UNLICENSED"},"src/IPartyInfo.sol":{"keccak256":"0x80e88e8c29cdf12426f16b4bf2a088397fcc31c2664564f7f26117dc85009af7","urls":["bzz-raw://b91392cbda8adfccf9bea2e584616c4b3359d7381a18f5f3e5c9c71618786051","dweb:/ipfs/QmWtWb1gVs2pzFkjwDj4mcdoCnQLPbwq4Qxbh38VEdWwAW"],"license":"UNLICENSED"},"src/IPartyPool.sol":{"keccak256":"0x55d3656b1a4c75801852066b7ba871212e5e807917b3b9029349349fae39375c","urls":["bzz-raw://009b67ccf1d28a04a2407a05ddda8f954033b7ac70f7fd5cbedbf779e867df9f","dweb:/ipfs/QmS5vQcfma6PN28Q6qQwqa7KmUKu2KST72jwF8ffsj6Bw2"],"license":"UNLICENSED"},"src/LMSRStabilized.sol":{"keccak256":"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b","urls":["bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3","dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB"],"license":"UNLICENSED"},"src/LMSRStabilizedBalancedPair.sol":{"keccak256":"0x782f3baf92f74152c0b93b95199abbb3a36c75c921454260c8b0237f91d7c59d","urls":["bzz-raw://04d463c4fdcb6c8e2ebf9aed649ff21cca759ba73a4c93659e30c7df25e26c81","dweb:/ipfs/QmUxmWytiw5VYJRUrFbSGm1oWmDPQ4q23pnkmK1q9P4apN"],"license":"UNLICENSED"},"src/NativeWrapper.sol":{"keccak256":"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579","urls":["bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238","dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB"],"license":"UNLICENSED"},"src/OwnableExternal.sol":{"keccak256":"0x0a0199368ad20a31e7169b3e56449bf022c9d680e0d487c118608a7f14cb7efb","urls":["bzz-raw://3348a063649e01acf9c6aa6b7ce2ecf62ace8c6f1467477de7d605996f08ec64","dweb:/ipfs/QmSoxb35FFsNCgXgWn91CupvjpGmyM31wcfxAVpVFFPecX"],"license":"MIT"},"src/OwnableInternal.sol":{"keccak256":"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581","urls":["bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca","dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE"],"license":"MIT"},"src/PartyPool.sol":{"keccak256":"0xf4af110b4cd06a00ee1ec2bd61e887662dcb26aaf6903b9910902614b50e4955","urls":["bzz-raw://691fabaffecdf698601cc0696099e3bfa44ed60097b8f9b9f01cd4bf703bbb77","dweb:/ipfs/QmXuPX2zu8sN9VyePDvVra4QP8LN2knNxbiGsMGzYAyS8S"],"license":"UNLICENSED"},"src/PartyPoolBalancedPair.sol":{"keccak256":"0x7d36ae211709da83ecafcc70f31e5fcdc1bc299243eedceebf17f26339757d7b","urls":["bzz-raw://91762575c367c9b1d50a633fb46ccf429a28bbaf70f76b524749ad32dc716d7a","dweb:/ipfs/QmVLxjR3h2XJukjXFx56b4m8SPg6oupxqkzY5EKCK7GFHn"],"license":"UNLICENSED"},"src/PartyPoolBase.sol":{"keccak256":"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999","urls":["bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5","dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5"],"license":"UNLICENSED"},"src/PartyPoolDeployer.sol":{"keccak256":"0xdf2a6a8602eba3aef625c798a0ec6525feb7520c2fd6933c30dd76fe3c4e2618","urls":["bzz-raw://9aa94963e0d34feddf63b3ae034874557229740be1ef80f49e87bd05694c9b50","dweb:/ipfs/QmYQ6mH1mEJCJ9XNGdT3saRU3q36GZ94WuyRsn9LRWXtbM"],"license":"UNLICENSED"},"src/PartyPoolHelpers.sol":{"keccak256":"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c","urls":["bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5","dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP"],"license":"UNLICENSED"},"src/PartyPoolMintImpl.sol":{"keccak256":"0xe9d9927cecd46a1f836b2c43e9d6184642b9e695c7462e5fb7c671a38aab7398","urls":["bzz-raw://8d821911d7982fc302929198539b27f72be100b91450c98d2e0081519f776499","dweb:/ipfs/QmRChx1DPD1gKXwfD1m6aQ7pgh1aX6CvYLNX41ufdJteaJ"],"license":"UNLICENSED"},"src/PartyPoolSwapImpl.sol":{"keccak256":"0x71ecbd6d0fb106031baed7e4c21694ef24f0112af7d975325b98b1b0463ba5b2","urls":["bzz-raw://64f8f8bae2f89ca495b9edacd012363b55e78a198f100650beb2b1238e8ef11f","dweb:/ipfs/QmVfihiw9TqncuEfZKx7c6WEHiGFfRQyhtfdTGzfN7emNY"],"license":"UNLICENSED"}},"version":1},"id":52} \ No newline at end of file +{"abi":[{"type":"function","name":"deploy","inputs":[{"name":"owner_","type":"address","internalType":"address"},{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"},{"name":"tokens_","type":"address[]","internalType":"contract IERC20[]"},{"name":"kappa_","type":"int128","internalType":"int128"},{"name":"fees_","type":"uint256[]","internalType":"uint256[]"},{"name":"flashFeePpm_","type":"uint256","internalType":"uint256"},{"name":"protocolFeePpm_","type":"uint256","internalType":"uint256"},{"name":"protocolFeeAddress_","type":"address","internalType":"address"},{"name":"wrapper_","type":"address","internalType":"contract NativeWrapper"},{"name":"swapImpl_","type":"address","internalType":"contract PartyPoolSwapImpl"},{"name":"mintImpl_","type":"address","internalType":"contract PartyPoolMintImpl"}],"outputs":[{"name":"","type":"address","internalType":"contract IPartyPool"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x60808060405234601557615fbf908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c636ae73ce314610024575f80fd5b34610373576101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103735760043573ffffffffffffffffffffffffffffffffffffffff81168091036103735760243567ffffffffffffffff8111610373576100959036906004016103f8565b9060443567ffffffffffffffff8111610373576100b69036906004016103f8565b6064359067ffffffffffffffff82116103735736602383011215610373578160040135916100eb6100e684610468565b6103b4565b9060208285815201906024829560051b8201019036821161037357602401915b8183106103875750505060843580600f0b8091036103735760a43567ffffffffffffffff81116103735736602382011215610373578060040135946101526100e687610468565b91602083888152016024819860051b8301019136831161037357602401905b82821061037757505050610104359173ffffffffffffffffffffffffffffffffffffffff831680930361037357610124359373ffffffffffffffffffffffffffffffffffffffff851680950361037357610144359573ffffffffffffffffffffffffffffffffffffffff871680970361037357610164359773ffffffffffffffffffffffffffffffffffffffff8916809903610373576040519b8c9b8c92615ac68094019e8f9081109067ffffffffffffffff1017610346576102528f92938f94602096610260966104c49039845261018086850152610180840190610480565b916040818403910152610480565b8c810360608e01529151808352910193905f5b81811061031a575050509060209160808b015289830360a08b015251918281520195905f5b81811061030457505050918596916101609360c43560c085015260e43560e0850152610100840152610120830152610140820152015203905ff080156102f95760209073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b6040513d5f823e3d90fd5b8251885260209788019790920191600101610298565b825173ffffffffffffffffffffffffffffffffffffffff16865260209586019590920191600101610273565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f80fd5b8135815260209182019101610171565b823573ffffffffffffffffffffffffffffffffffffffff811681036103735781526020928301920161010b565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff82111761034657604052565b81601f820112156103735780359067ffffffffffffffff82116103465761044660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116016103b4565b928284526020838301011161037357815f926020809301838601378301015290565b67ffffffffffffffff81116103465760051b60200190565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f858286010152011601019056fe610140604052346106ee57615ac68038038061001a81610a6a565b9283398101610180828203126106ee5761003382610a8f565b60208301516001600160401b0381116106ee5782610052918501610aa3565b60408401519091906001600160401b0381116106ee5783610074918601610aa3565b60608501519094906001600160401b0381116106ee5781019284601f850112156106ee578351956100ac6100a788610af4565b610a6a565b9460208689815201906020829960051b820101908882116106ee57602001915b818310610a4a57505050608083015180600f0b81036106ee5760a08401516001600160401b0381116106ee5784019680601f890112156106ee5787516101146100a782610af4565b986020808b848152019260051b8201019283116106ee57602001905b828210610a3a5750505060c08401519760e0850151926101536101008701610a8f565b610120870151979095906001600160a01b03891689036106ee57610140880151976001600160a01b03891689036106ee576101600151986001600160a01b038a168a036106ee5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00556080526001600160a01b03168015610a27575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a38051906001600160401b0382116106335760045490600182811c92168015610a1d575b60208310146109405781601f8493116109cf575b50602090601f8311600114610969575f9261095e575b50508160011b915f199060031b1c1916176004555b8051906001600160401b0382116106335760055490600182811c92168015610954575b60208310146109405781601f849311610904575b50602090601f831160011461089e575f92610893575b50508160011b915f199060031b1c1916176005555b60018751111561084e578651906001600160401b0382116106335768010000000000000000821161063357600b5482600b55808310610814575b50600b5f5260205f205f5b8381106107f7575050505060a05285518551036107be5761033a8651610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600654836006558084106107a2575b500160065f5260205f205f5b83811061078e57505050505f5b86518110156104185761271061039c8289610b49565b5110156103e1576103ad8188610b49565b51906006548110156103cd5760019160065f528160205f20015501610386565b634e487b7160e01b5f52603260045260245ffd5b60405162461bcd60e51b815260206004820152600f60248201526e506f6f6c3a20666565203e3d20312560881b6044820152606490fd5b50866127108110156107495760c05262061a8081101561070457801580156106f2575b156106ee5760e052601080546001600160a01b0319166001600160a01b039290921691909117905561012052610100528051905f5b8281106106a7578261048181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600d5483600d5580841061068b575b5001600d5f5260205f205f5b83811061067757846104d181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600f5483600f5580841061065b575b5001600f5f5260205f205f5b8381106106475761052085610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600c5483600c55808410610617575b500190600c5f5260205f20915f5b82811061060357604051614f689081610b5e8239608051818181611b5001528181611da1015281816120f40152612817015260a051818181610f130152610f7f015260c0518181816113480152611733015260e0518181816105ac01528181610c550152818161105d0152818161136e015281816114be0152611c2a01526101005181818161031701526105f70152610120518181816108050152610a720152f35b600190602083519301928186015501610561565b61062d90600c5f5284845f209182019101610b0b565b83610553565b634e487b7160e01b5f52604160045260245ffd5b600190602084519401938184015501610510565b61067190600f5f5284845f209182019101610b0b565b84610504565b6001906020845194019381840155016104c0565b6106a190600d5f5284845f209182019101610b0b565b846104b4565b60018101908181116106da576001600160a01b03906106c69084610b49565b51165f52600e6020528060405f2055610470565b634e487b7160e01b5f52601160045260245ffd5b5f80fd5b506001600160a01b038216151561043b565b60405162461bcd60e51b815260206004820152601960248201527f506f6f6c3a2070726f746f636f6c20666565203e3d20343025000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601560248201527f506f6f6c3a20666c61736820666565203e3d20312500000000000000000000006044820152606490fd5b600190602084519401938184015501610379565b6107b89060065f5284845f209182019101610b0b565b5f61036d565b60405162461bcd60e51b81526020600482015260116024820152700a0deded87440cccacae640d8cadccee8d607b1b6044820152606490fd5b82516001600160a01b031681830155602090920191600101610319565b600b5f52610848907f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9908101908401610b0b565b5f61030e565b60405162461bcd60e51b815260206004820152601360248201527f506f6f6c3a206e656564203e31206173736574000000000000000000000000006044820152606490fd5b015190505f806102bf565b60055f9081528281209350601f198516905b8181106108ec57509084600195949392106108d4575b505050811b016005556102d4565b01515f1960f88460031b161c191690555f80806108c6565b929360206001819287860151815501950193016108b0565b6109309060055f5260205f20601f850160051c81019160208610610936575b601f0160051c0190610b0b565b5f6102a9565b9091508190610923565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610295565b015190505f8061025d565b60045f9081528281209350601f198516905b8181106109b7575090846001959493921061099f575b505050811b01600455610272565b01515f1960f88460031b161c191690555f8080610991565b9293602060018192878601518155019501930161097b565b60045f52610a17907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f850160051c8101916020861061093657601f0160051c0190610b0b565b5f610247565b91607f1691610233565b631e4fbdf760e01b5f525f60045260245ffd5b8151815260209182019101610130565b82516001600160a01b03811681036106ee578152602092830192016100cc565b6040519190601f01601f191682016001600160401b0381118382101761063357604052565b51906001600160a01b03821682036106ee57565b81601f820112156106ee578051906001600160401b03821161063357610ad2601f8301601f1916602001610a6a565b92828452602083830101116106ee57815f9260208093018386015e8301015290565b6001600160401b0381116106335760051b60200190565b818110610b16575050565b5f8155600101610b0b565b90610b2e6100a783610af4565b8281528092610b3f601f1991610af4565b0190602036910137565b80518210156103cd5760209160051b01019056fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c908163017504b614612b1b57508063017cf66114612a8957806306fdde0314612940578063095ea7b31461283b5780630d246214146127cd5780630eeee627146119a457806318160ddd146119685780631f3a0e411461192757806323b872dd14611790578063313ce5671461175657806331596a6a146116fd57806341c0e1b514611667578063476e44b614611519578063491e7998146113f15780635cffe9de146112115780636863f5bc146110805780636b4082d1146110275780636b7b911214610fa55780636bba3f2f14610f495780636d8d0ff314610e8e5780636ff97f1d14610d8e57806370a0823114610d2b578063715018a614610c8f57806379a68d5314610b6b5780638da5cb5b14610b1a5780638e499bcf14610ade578063939f5ea414610a965780639517606614610a2757806395d89b41146108cd5780639af1d35a1461082e578063a1af5b9a14610765578063a9059cbb14610715578063b3f1c93d14610648578063cb717f3a146104f3578063cce516b7146104a1578063d516b8c614610416578063dd62ed3e1461039d578063e4b50cb81461033b578063f0d1ae4f146102cc5763f2fde38b0361000f57346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610228612c2a565b610230613288565b16801561029d5773ffffffffffffffffffffffffffffffffffffffff8254827fffffffffffffffffffffffff00000000000000000000000000000000000000008216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b6024827f1e4fbdf700000000000000000000000000000000000000000000000000000000815280600452fd5b80fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff61038d600435612cfa565b90549060031b1c16604051908152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff60406103ec612c2a565b92826103f6612c4d565b9416815260026020522091165f52602052602060405f2054604051908152f35b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043590602435916064359182600f0b83036102c95761049d61047985858561046f83826133ad565b9260443591612f95565b92505050604093919351938493846040919493926060820195825260208201520152565b0390f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff60105416604051908152f35b5060a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761049d61062b61061c61052f612c2a565b610537612c4d565b60443573ffffffffffffffffffffffffffffffffffffffff610558826132d4565b9281604051957f3dd3c8050000000000000000000000000000000000000000000000000000000060208801521660248601521660448401526064830152606435608483015260843560a483015260c48201527f000000000000000000000000000000000000000000000000000000000000000060e482015260e481526105e061010482612cb9565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166132f4565b60208082518301019101612f29565b604080519384526020840192909252908201529081906060820190565b5060807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f161067e612c2a565b73ffffffffffffffffffffffffffffffffffffffff61069b612c4d565b81604051937fb3f1c93d00000000000000000000000000000000000000000000000000000000602086015216602484015216604482015260443560648201526064356084820152608481526105e060a482612cb9565b602081519181808201938492010103126107115760209051604051908152f35b5f80fd5b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761075a610750612c2a565b6024359033613163565b602060405160018152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761082a73ffffffffffffffffffffffffffffffffffffffff60105416604051907f2a54db010000000000000000000000000000000000000000000000000000000060208301526024820152602481526107ee604482612cb9565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166132f4565b5080f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760405180916020600654928381520191600682527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f915b8181106108b75761049d856108ab81870382612cb9565b60405191829182612ba9565b8254845260209093019260019283019201610894565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576040519080600554908160011c91600181168015610a1d575b6020841081146109f0578386529081156109ab575060011461094e575b61049d8461094281860382612cb9565b60405191829182612be2565b600581527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0939250905b8082106109915750909150810160200161094282610932565b919260018160209254838588010152019101909291610978565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208087019190915292151560051b850190920192506109429150839050610932565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b92607f1692610915565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020610ad66024356004356133ad565b604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600b54604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b5060e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610b9e612c2a565b90610ba7612c4d565b906044356064356084359182600f0b809303610c8b5760c435938415158095036102c95761049d61062b61061c89898989898973ffffffffffffffffffffffffffffffffffffffff610bf98383612f44565b9581604051987f8a3d858d0000000000000000000000000000000000000000000000000000000060208b01521660248901521660448701526064860152608485015260a484015260a43560c484015260e48301526101048201527f000000000000000000000000000000000000000000000000000000000000000061012482015261012481526107ee61014482612cb9565b8380fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610cc6613288565b8073ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604060209173ffffffffffffffffffffffffffffffffffffffff610d7d612c2a565b168152600183522054604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604051806020600b5491828152018091600b85527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db990855b818110610e625750505082610e0b910383612cb9565b604051928392602084019060208552518091526040840192915b818110610e33575050500390f35b825173ffffffffffffffffffffffffffffffffffffffff16845285945060209384019390920191600101610e25565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610df5565b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f1610ec4612c2a565b73ffffffffffffffffffffffffffffffffffffffff604051917fc5eabfb900000000000000000000000000000000000000000000000000000000602084015216602482015260243560448201527f0000000000000000000000000000000000000000000000000000000000000000600f0b6064820152606481526105e0608482612cb9565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f0000000000000000000000000000000000000000000000000000000000000000600f0b8152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610ff2612c2a565b610ffa613288565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000601054161760105580f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c95760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576110b8612c2a565b6110c0612c4d565b90608435801515809103610c8b5773ffffffffffffffffffffffffffffffffffffffff6111429381604051947f6863f5bc0000000000000000000000000000000000000000000000000000000060208701521660248501521660448301526044356064830152606435608483015260a482015260a481526105e060c482612cb9565b805181019060208181840193031261120d5760208101519067ffffffffffffffff8211610c8b57019181603f840112156102c95760208301519267ffffffffffffffff84116111e0578360051b91604051946111a16020850187612cb9565b855260208080870194840101019384116102c95750604001905b8282106111d0576040518061049d8682612ba9565b81518152602091820191016111bb565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8280fd5b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043573ffffffffffffffffffffffffffffffffffffffff81168091036113e95761126a612c4d565b60643567ffffffffffffffff8111610c8b5736602382011215610c8b5780600401359067ffffffffffffffff82116113ed5736602483830101116113ed576113c3937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f846107ee9560246101049673ffffffffffffffffffffffffffffffffffffffff6040519a8b987fe49cd4750000000000000000000000000000000000000000000000000000000060208b0152848a0152166044880152604435606488015260c060848801528260e48801520186860137888582860101527f000000000000000000000000000000000000000000000000000000000000000060a48501527f000000000000000000000000000000000000000000000000000000000000000060c48501520116810103017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612cb9565b6020818051810103126113e957602001518015158091036113e957602090604051908152f35b5080fd5b8480fd5b50346102c95760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957611429612c2a565b611431612c4d565b906064359160a4358015158091036113ed578373ffffffffffffffffffffffffffffffffffffffff6114656114f4966132d4565b9381604051967f8d01fa440000000000000000000000000000000000000000000000000000000060208901521660248701521660448501526044356064850152608484015260843560a484015260c483015260e48201527f000000000000000000000000000000000000000000000000000000000000000061010482015261010481526105e061012482612cb9565b6040818051810103126113e95780604060208193015191015182519182526020820152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576060602060405161155881612c70565b83815201526040519061156a82612c70565b600954600f0b825260405191600a548084528360208101600a8552602085209285905b80600183011061163b576115b6945491818110611627575b10611616575b509493940383612cb9565b6020810191825260405192839260208452606084019251600f0b6020850152519160408085015282518091526020608085019301915b8181106115fa575050500390f35b8251600f0b8452859450602093840193909201916001016115ec565b60801d600f0b81526020015f6115ab565b92602060019184600f0b81520193016115a5565b9160029193506040600191865480600f0b825260801d600f0b602082015201940192018692939161158d565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761169e613288565b60085460ff8116156116ae575080f35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001176008557f0f8eeedbc400fd6686703559f58d1e6143fdaed533f19a86c93d67a2fe4fb3318180a180f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405160128152f35b50346102c95760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576117c8612c2a565b6117d0612c4d565b6044359173ffffffffffffffffffffffffffffffffffffffff811680855260026020526040852073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f2054907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821061184d575b505061075a9350613163565b8482106118f35780156118c757331561189b578560409161075a975260026020522073ffffffffffffffffffffffffffffffffffffffff33165f526020528360405f20910390555f80611841565b6024867f94280d6200000000000000000000000000000000000000000000000000000000815280600452fd5b6024867fe602df0500000000000000000000000000000000000000000000000000000000815280600452fd5b60648686847ffb8f41b200000000000000000000000000000000000000000000000000000000835233600452602452604452fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060ff600854166040519015158152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600354604051908152f35b506101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576119d8612c2a565b602435917fffffffff00000000000000000000000000000000000000000000000000000000831690818403610711576044359173ffffffffffffffffffffffffffffffffffffffff83169485840361071157606435956084359560c4359687600f0b9687890361071157610104359860e4358a15158b036107115760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146127a55760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005560ff6008541661274757801590811561273c575b50156126de57611ad390611ac8848d612f44565b9060a435858e612f95565b9c859e95979392949f915073ffffffffffffffffffffffffffffffffffffffff611afc83612cfa565b90549060031b1c169a73ffffffffffffffffffffffffffffffffffffffff611b2386612cfa565b90549060031b1c169c80155f1461236c57505050878a73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169889821480612362575b1561228b57505050863b15610711575f8e976004604051809a81937fd0e30db00000000000000000000000000000000000000000000000000000000083525af1968715612280578f908f908f99612269575b50611c03611c25915b611bfe611be186612d3f565b90549060031b1c611bf187612d57565b90549060031b1c90612dd9565b612dd9565b91611c20611c1087612d3f565b90549060031b1c611bf188612d57565b612d9f565b908d987f00000000000000000000000000000000000000000000000000000000000000009081151580612260575b6121d7575b5050611cf691611cd8611c99611ced93611c83611c7488612d57565b90549060031b1c821015612e30565b611c8c87612d57565b90549060031b1c90612d9f565b611ca286612d3f565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b611ce4611c7487612d57565b611c8c86612d57565b611ca285612d3f565b8b82600f0b1315612179578b84600f0b131561211b57611d7f93611d6782611d3f611d39611d3f96611d2a611d3997613102565b90549060031b1c600f0b6134d7565b91613102565b9091906fffffffffffffffffffffffffffffffff83549160031b928116831b921b1916179055565b611d7084613102565b90549060031b1c600f0b613514565b806120dc575b156120165773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b156120125787809160248d60405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af18015612007579188918c93611fe9575b5081809381925af13d15611fe4573d67ffffffffffffffff8111611fb75760405190611e6460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160183612cb9565b81528760203d92013e5b15611f59577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a0915b611ea3818a612d9f565b73ffffffffffffffffffffffffffffffffffffffff604051931683528a60208401528b604084015260608301526080820152a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015611f28575b50505061049d90604051938493846040919493926060820195825260208201520152565b8280809381938290611f50575b3390f115611f44578080611f04565b604051903d90823e3d90fd5b506108fc611f35565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b611e6e565b611ff69193508290612cb9565b61200357868a915f611e10565b8680fd5b6040513d8a823e3d90fd5b8780fd5b506040517fa9059cbb0000000000000000000000000000000000000000000000000000000087528360045289602452602087604481808a5af19060018851148216156120bb575b6040521561208f577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a091611e99565b602486867f5274afe7000000000000000000000000000000000000000000000000000000008252600452fd5b9060018115166120d357863b15153d1516169061205d565b503d87823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168614611d85565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a20616d6f756e744f7574203c3d20300000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4d53523a20616d6f756e74496e203c3d2030000000000000000000000000006044820152fd5b611ced929a50611c99620f42406121f5611cf69694611cd894612de6565b049b8c612208575b93505050918f611c58565b61225b8d6122276122188a612d57565b91909283548360031b1c612dd9565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b6121fd565b50801515611c53565b612276919e505f90612cb9565b5f9c611c03611bcc565b6040513d5f823e3d90fd5b60209293949596979899505f80809360649373ffffffffffffffffffffffffffffffffffffffff604051987f23b872dd00000000000000000000000000000000000000000000000000000000855216600452306024526044525af19060015f5114821615612341575b6040525f6060521561231557908b95949392918e611c258f611c0390611bd5565b887f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b906001811516612359578a3b15153d151616906122f4565b503d5f823e3d90fd5b5080341015611b7a565b92985090917c01000000000000000000000000000000000000000000000000000000000361253257506124ae576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526020816024818d5afa8015612280578e915f91612477575b50612404906123fe6123ee8a612d3f565b90549060031b1c611bf18b612d57565b90612d9f565b03612419578b958e611c258f611c0390611bd5565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496e636f72726563742070726566756e64696e6720616d6f756e7400000000006044820152fd5b9150506020813d6020116124a6575b8161249360209383612cb9565b8101031261071157518d906124046123dd565b3d9150612486565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f50726566756e64696e672063616e6e6f7420626520757365642077697468206160448201527f206c696d697420707269636500000000000000000000000000000000000000006064820152fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015291506020826024818e5afa918215612280578f905f936126a6575b50602492916125aa916040519160208301528d858301526044820152604481526125a4606482612cb9565b8a613457565b5060208b604051938480927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa8015612280578f925f9161266d575b50906125fa91612d9f565b0361260f578b958e611c258f611c0390611bd5565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e742066756e647300000000000000000000000000006044820152fd5b919250506020813d60201161269e575b8161268a60209383612cb9565b8101031261071157518e91906125fa6125ef565b3d915061267d565b9250506020823d6020116126d6575b816126c260209383612cb9565b81010312610711579051908e6125aa612579565b3d91506126b5565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f737761703a20646561646c696e652065786365656465640000000000000000006044820152fd5b90504211155f611ab4565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346107115760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157612872612c2a565b6024359033156129145773ffffffffffffffffffffffffffffffffffffffff169081156128e857335f52600260205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576040515f6004548060011c90600181168015612a7f575b602083108114612a5257828552908115612a1057506001146129b2575b61049d8361094281850382612cb9565b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b8082106129f6575090915081016020016109426129a2565b9192600181602092548385880101520191019092916129de565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b8401909101915061094290506129a2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691612985565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157604051806020600d54918281520190600d5f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5905f5b818110612b055761049d856108ab81870382612cb9565b8254845260209093019260019283019201612aee565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157600c548082526020820190600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7905f5b818110612b935761049d856108ab81870382612cb9565b8254845260209093019260019283019201612b7c565b60206040818301928281528451809452019201905f5b818110612bcc5750505090565b8251845260209384019390920191600101612bbf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6040810190811067ffffffffffffffff821117612c8c57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612c8c57604052565b600b54811015612d1257600b5f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600f54811015612d1257600f5f5260205f2001905f90565b600c54811015612d1257600c5f5260205f2001905f90565b600d54811015612d1257600d5f5260205f2001905f90565b600654811015612d125760065f5260205f2001905f90565b91908203918211612dac57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b91908201809211612dac57565b81810292918115918404141715612dac57565b8115612e03570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b15612e3757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f62616c616e6365203c2070726f746f636f6c206f7765640000000000000000006044820152fd5b90604051918281549182825260208201905f5260205f20925f905b806001830110612efd57612ed6945491818110612ee9575b10612ed8575b500383612cb9565b565b60801d600f0b81526020015f612ece565b92602060019184600f0b8152019301612ec8565b9160029193506040600191865480600f0b825260801d600f0b6020820152019401920185929391612eb0565b90816060910312610711578051916040602083015192015190565b9190826103e8026103e881048403612dac5781612f6091612dd9565b90815f52600760205260405f2054938415612f7a57505050565b612f859294506133ad565b915f5260076020528160405f2055565b92949394919091612fc1612fa987846133ca565b9050612fb486612d6f565b90549060031b1c9061356a565b905f82600f0b13156130a457612fd8918486613794565b919092612ff78394612fea8197612d6f565b90549060031b1c906133ec565b925f92849880613083575b5088116130255761301561302292612d6f565b90549060031b1c90613c6b565b94565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f737761703a207472616e736665722065786365656473206d61780000000000006044820152fd5b9098506130929193508461341e565b9161309d8385612dd9565b975f613002565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761703a20696e70757420746f6f20736d616c6c20616674657220666565006044820152fd5b90600a54821015612d1257600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b9190918054831015612d12575f52601060205f208360011c019260041b1690565b73ffffffffffffffffffffffffffffffffffffffff1690811561325c5773ffffffffffffffffffffffffffffffffffffffff1691821561323057815f52600160205260405f20548181106131fe57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f52600184520360405f2055845f526001825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff5f541633036132a857565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b600654156132ef576132e590612d87565b90549060031b1c90565b505f90565b905f8091602081519101845af4808061339a575b1561331a575050613317613551565b90565b156133615773ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b3d15613372576040513d5f823e3d90fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b503d1515806133085750813b1515613308565b90611bf16133bd61331793612d87565b90549060031b1c91612d87565b919080156133e6576133df613317918461341e565b8093612d9f565b505f9190565b6134006133f98383613c6b565b928361356a565b90600f0b90600f0b126134105790565b60018101809111612dac5790565b9080156134515761342e91612de6565b620f4240810190818111612dac57620f423f01908111612dac57620f4240900490565b50505f90565b905f809160208151910182855af1808061339a571561331a575050613317613551565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd575b1561071157600f0b90565b506f7fffffffffffffffffffffffffffffff8113156134b2565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b604051903d82523d5f602084013e60203d830101604052565b81156107115777ffffffffffffffffffffffffffffffffffffffffffffffff81116135e2579061359c9160401b612df9565b6fffffffffffffffffffffffffffffffff8111610711576fffffffffffffffffffffffffffffffff166f7fffffffffffffffffffffffffffffff811161071157600f0b90565b60c09181831c8093640100000000821015613787575b6002826201000061368594101561377b575b61010081101561376f575b6010811015613763575b6004811015613758575b1015613750575b8360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b612df9565b926fffffffffffffffffffffffffffffffff8411610711578160801c8402906fffffffffffffffffffffffffffffffff8316850290809460401b90828210613726575b5003928160801b918285106136fd575b60801c036136f2576136ea9203612df9565b905b0161359c565b5050506001906136ec565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906136d8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f6136c8565b600101613630565b91810191811c613629565b6004928301921c61361f565b6008928301921c613615565b6010928301921c61360a565b505060e082811c906135f8565b9193929093600a5480841080613c62575b15613c0457600203613bec576137c36137be600a612e95565b61415f565b946137d25f87600f0b13613cc6565b6137e2600954600f0b9687613e4d565b5f81600f0b1315613bd9576137f681613d2b565b6138328161382d61380889600a613142565b90549060031b1c600f0b61381d87600a613142565b90549060031b1c600f0b90613514565b613e4d565b9085600f0b5f81136139a3575b505f600f83900b1261399557815b67028f5c28f5c28f5c90600f0b13613980576138699085613e4d565b80600f0b915f83131561396a57678000000000000000831361396a57906138c46138e59493926138be6138b8671999999999999999946138b26138ac8280613e4d565b9461347a565b90613e4d565b91613d7b565b90613514565b916138cf8380613e4d565b91600f0b1261394157906138be6138b292613d7b565b9384600f0b965f881315613921576138fe83600a613142565b90549060031b1c600f0b881215613921575f849698126139215750505050509190565b90919293945061393d959650613937600a612e95565b90613ed3565b9091565b61396461395e836138be6139586138b29686613e4d565b94613d7b565b91613dc1565b906134d7565b5050505090919261393d9495613937600a612e95565b50505090919261393d9495613937600a612e95565b61399e82613e8d565b61384d565b6139b08380979397613e4d565b680600000000000000006139d46139c78684613e4d565b926139646138b88861347a565b9160401b60170b05907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082121580613bbf575b1561071157613a1991600f0b906134d7565b9081600f0b1215613b3a57613a4f7fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009188613e07565b600f0b017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613b20575b1561071157600f0b5f8112613b1257805b671999999999999999600f0b90600f0b13613afb578061396461395e613ab783613ac595613e4d565b926138be6139588286613e4d565b5f81600f0b1315613afb57613ada9084613e4d565b9080600f0b82600f0b125f14613af35750935b5f61383f565b949050613aed565b509495929350505061393d9495613937600a612e95565b613b1b81613e8d565b613a8e565b506f7fffffffffffffffffffffffffffffff811315613a7d565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4c4d53523a206c696d69745072696365203c3d2063757272656e74207072696360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152608490fd5b506f7fffffffffffffffffffffffffffffff821315613a07565b5090919261393d9495613937600a612e95565b90919361393d9394600954600f0b613937600a612e95565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4c4d53523a2069647800000000000000000000000000000000000000000000006044820152fd5b508086106137a5565b811561345157600f0b5f8112610711576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116107115760401b81198111610711570190565b15613ccd57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b600f0b801561071157700100000000000000000000000000000000057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b680200000000000000009060401b60170b057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b680300000000000000009060401b60170b057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b90600f0b9081156107115760401b60170b057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081600f0b14610711575f03600f0b90565b8051821015612d125760209160051b010190565b95949093613f1790939293613f34613f2f613f01839a613ef28a61415f565b9061382d5f83600f0b13613cc6565b9661382d613f0e89613d2b565b9586928b613ebf565b51600f0b613f25898c613ebf565b51600f0b90613514565b614194565b9280600f0b5f81136140a1575b505090613f4d91613e4d565b6820000000000000000081600f0b1361401d57613f2f613f6c91613e8d565b600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580614003575b1561071157613fbf91613fba91600f0b90613e4d565b61347a565b925f84600f0b1315613fef5750506138b2613fd9926141f1565b905f82600f0b1315613fe757565b5f9250829150565b909150613ffc9250613ebf565b51600f0b90565b506f7fffffffffffffffffffffffffffffff811315613fa4565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4c4d53523a20612f6220746f6f206c617267652028776f756c64206f7665726660448201527f6c6f7720657870290000000000000000000000000000000000000000000000006064820152fd5b84600f9a939a0b1215613b3a57836140b891613e07565b5f81600f0b1315614101576140cf6140d5916141f1565b86613e4d565b9780600f0b89600f0b125f146140f5575050613f4d90875b90915f613f41565b613f4d929198506140ed565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4d53523a20726174696f3c3d300000000000000000000000000000000000006044820152fd5b5f90815b815183101561418e5761418660019161417c8585613ebf565b51600f0b906134d7565b920191614163565b91505090565b600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000081126132ef57700171547652b82fe1777d0ffda0d23a7d12613317910260801d600f0b61431e565b600f0b5f811315610711575f908068010000000000000000821215614311575b806401000000006002921215614305575b620100008112156142f9575b6101008112156142ed575b60108112156142e1575b60048112156142d6575b12156142cc575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f83136142b057506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d90565b8002908160ff1c9182607f011c918302019160011d919061428b565b9060010190614254565b92810192811d61424d565b6004938401931d614243565b6008938401931d614239565b6010938401931d61422e565b6020938401931d614222565b506040915080821d614211565b80600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc000000000000000008112613451576f80000000000000000000000000000000915f6780000000000000008216600f0b13614f1a575b5f6740000000000000008216600f0b13614efd575b5f6720000000000000008216600f0b13614ee0575b5f6710000000000000008216600f0b13614ec3575b5f6708000000000000008216600f0b13614ea6575b5f6704000000000000008216600f0b13614e89575b5f6702000000000000008216600f0b13614e6c575b5f6701000000000000008216600f0b13614e4f575b5f66800000000000008216600f0b13614e32575b5f66400000000000008216600f0b13614e15575b5f66200000000000008216600f0b13614df8575b5f66100000000000008216600f0b13614ddb575b5f66080000000000008216600f0b13614dbe575b5f66040000000000008216600f0b13614da1575b5f66020000000000008216600f0b13614d84575b5f66010000000000008216600f0b13614d67575b5f658000000000008216600f0b13614d4a575b5f654000000000008216600f0b13614d2d575b5f652000000000008216600f0b13614d10575b5f651000000000008216600f0b13614cf3575b5f650800000000008216600f0b13614cd6575b5f650400000000008216600f0b13614cb9575b5f650200000000008216600f0b13614c9c575b5f650100000000008216600f0b13614c7f575b5f6480000000008216600f0b13614c62575b5f6440000000008216600f0b13614c45575b5f6420000000008216600f0b13614c28575b5f6410000000008216600f0b13614c0b575b5f6408000000008216600f0b13614bee575b5f6404000000008216600f0b13614bd1575b5f6402000000008216600f0b13614bb4575b5f6401000000008216600f0b13614b97575b5f63800000008216600f0b13614b7a575b5f63400000008216600f0b13614b5d575b5f63200000008216600f0b13614b40575b5f63100000008216600f0b13614b23575b5f63080000008216600f0b13614b06575b5f63040000008216600f0b13614ae9575b5f63020000008216600f0b13614acc575b5f63010000008216600f0b13614aaf575b5f628000008216600f0b13614a92575b5f624000008216600f0b13614a75575b5f622000008216600f0b13614a58575b5f621000008216600f0b13614a3b575b5f620800008216600f0b13614a1e575b5f620400008216600f0b13614a01575b5f620200008216600f0b136149e4575b5f620100008216600f0b136149c7575b5f6180008216600f0b136149aa575b5f6140008216600f0b1361498d575b5f6120008216600f0b13614970575b5f6110008216600f0b13614953575b5f6108008216600f0b13614936575b5f6104008216600f0b13614919575b5f6102008216600f0b136148fc575b5f6101008216600f0b136148df575b5f60808216600f0b136148c2575b5f60408216600f0b136148a5575b5f60208216600f0b13614888575b5f60108216600f0b1361486b575b5f60088216600f0b1361484e575b5f60048216600f0b13614831575b5f60028216600f0b13614813575b60015f9116600f0b136147f6575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161071157600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c906147cc565b7001000000000000000162e42fefa39ef35890920260801c916147be565b9170010000000000000002c5c85fdf473de6b20260801c916147b0565b91700100000000000000058b90bfbe8e7bcd6d0260801c916147a2565b917001000000000000000b17217f7d1cf79afa0260801c91614794565b91700100000000000000162e42fefa39ef366f0260801c91614786565b917001000000000000002c5c85fdf473de6eca0260801c91614778565b9170010000000000000058b90bfbe8e7bce5440260801c9161476a565b91700100000000000000b17217f7d1cf79e9490260801c9161475c565b9170010000000000000162e42fefa39ef44d910260801c9161474d565b91700100000000000002c5c85fdf473dea871f0260801c9161473e565b917001000000000000058b90bfbe8e7bdcbe2e0260801c9161472f565b9170010000000000000b17217f7d1cf7d83c1a0260801c91614720565b917001000000000000162e42fefa39f02b772c0260801c91614711565b9170010000000000002c5c85fdf473e242ea380260801c91614702565b91700100000000000058b90bfbe8e7cc35c3f00260801c916146f3565b917001000000000000b17217f7d1cfb72b45e10260801c916146e4565b91700100000000000162e42fefa39fe95583c20260801c916146d4565b917001000000000002c5c85fdf4741bea6e77e0260801c916146c4565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c916146b4565b91700100000000000b17217f7d1d351a389d400260801c916146a4565b9170010000000000162e42fefa3ae53369388c0260801c91614694565b91700100000000002c5c85fdf477b662b269450260801c91614684565b917001000000000058b90bfbe8f71cb4e4b33d0260801c91614674565b9170010000000000b17217f7d20cf927c8e94c0260801c91614664565b917001000000000162e42fefa494f1478fde050260801c91614653565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c91614642565b91700100000000058b90bfbe9ddbac5e109cce0260801c91614631565b917001000000000b17217f7d5a7716bba4a9ae0260801c91614620565b91700100000000162e42fefb2fed257559bdaa0260801c9161460f565b917001000000002c5c85fdf84bd62ae30a74cc0260801c916145fe565b9170010000000058b90bfbf8479bd5a81b51ad0260801c916145ed565b91700100000000b17217f80f4ef5aadda455540260801c916145dc565b9170010000000162e42ff0999ce3541b9fffcf0260801c916145ca565b91700100000002c5c85fe31f35a6a30da1be500260801c916145b8565b917001000000058b90bfcdee5acd3c1cedc8230260801c916145a6565b9170010000000b17217fba9c739aa5819f44f90260801c91614594565b917001000000162e42fff037df38aa2b219f060260801c91614582565b9170010000002c5c8601cc6b9e94213c72737a0260801c91614570565b91700100000058b90c0b48c6be5df846c5b2ef0260801c9161455e565b917001000000b1721835514b86e6d96efd1bfe0260801c9161454c565b91700100000162e430e5a18f6119e3c02282a50260801c91614539565b917001000002c5c863b73f016468f6bac5ca2b0260801c91614526565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91614513565b91700100000b1721bcfc99d9f890ea069117630260801c91614500565b9170010000162e43f4f831060e02d839a9d16d0260801c916144ed565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c916144da565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c916144c7565b9170010000b17255775c040618bf4a4ade83fc0260801c916144b4565b917001000162e525ee054754457d59952920260260801c916144a0565b9170010002c5cc37da9491d0985c348c68e7b30260801c9161448c565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91614478565b917001000b175effdc76ba38e31671ca9397250260801c91614464565b91700100162f3904051fa128bca9c55c31e5df0260801c91614450565b917001002c605e2e8cec506d21bfc89a23a00f0260801c9161443c565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c91614428565b91700100b1afa5abcbed6129ab13ec11dc95430260801c91614414565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c916143ff565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c916143ea565b917001059b0d31585743ae7c548eb68ca417fd0260801c916143d5565b9170010b5586cf9890f6298b92b71842a983630260801c916143c0565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c916143ab565b917001306fe0a31b7152de8d5a46305c85edec0260801c91614396565b6fb504f333f9de6484597d89b3754abe9f925061438156fea264697066735822122043bf74af2633e25ab2330d593dbfd1d52cff0bf909bfe29106cc479fea7a2a7864736f6c634300081e0033a2646970667358221220b239ec7074b6ad8ed4d821ee3ca0df1ddb2b42479ef3dd6fa0a5e9cd87baad7564736f6c634300081e0033","sourceMap":"1769:834:51:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c636ae73ce314610024575f80fd5b34610373576101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103735760043573ffffffffffffffffffffffffffffffffffffffff81168091036103735760243567ffffffffffffffff8111610373576100959036906004016103f8565b9060443567ffffffffffffffff8111610373576100b69036906004016103f8565b6064359067ffffffffffffffff82116103735736602383011215610373578160040135916100eb6100e684610468565b6103b4565b9060208285815201906024829560051b8201019036821161037357602401915b8183106103875750505060843580600f0b8091036103735760a43567ffffffffffffffff81116103735736602382011215610373578060040135946101526100e687610468565b91602083888152016024819860051b8301019136831161037357602401905b82821061037757505050610104359173ffffffffffffffffffffffffffffffffffffffff831680930361037357610124359373ffffffffffffffffffffffffffffffffffffffff851680950361037357610144359573ffffffffffffffffffffffffffffffffffffffff871680970361037357610164359773ffffffffffffffffffffffffffffffffffffffff8916809903610373576040519b8c9b8c92615ac68094019e8f9081109067ffffffffffffffff1017610346576102528f92938f94602096610260966104c49039845261018086850152610180840190610480565b916040818403910152610480565b8c810360608e01529151808352910193905f5b81811061031a575050509060209160808b015289830360a08b015251918281520195905f5b81811061030457505050918596916101609360c43560c085015260e43560e0850152610100840152610120830152610140820152015203905ff080156102f95760209073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b6040513d5f823e3d90fd5b8251885260209788019790920191600101610298565b825173ffffffffffffffffffffffffffffffffffffffff16865260209586019590920191600101610273565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f80fd5b8135815260209182019101610171565b823573ffffffffffffffffffffffffffffffffffffffff811681036103735781526020928301920161010b565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff82111761034657604052565b81601f820112156103735780359067ffffffffffffffff82116103465761044660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116016103b4565b928284526020838301011161037357815f926020809301838601378301015290565b67ffffffffffffffff81116103465760051b60200190565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f858286010152011601019056fe610140604052346106ee57615ac68038038061001a81610a6a565b9283398101610180828203126106ee5761003382610a8f565b60208301516001600160401b0381116106ee5782610052918501610aa3565b60408401519091906001600160401b0381116106ee5783610074918601610aa3565b60608501519094906001600160401b0381116106ee5781019284601f850112156106ee578351956100ac6100a788610af4565b610a6a565b9460208689815201906020829960051b820101908882116106ee57602001915b818310610a4a57505050608083015180600f0b81036106ee5760a08401516001600160401b0381116106ee5784019680601f890112156106ee5787516101146100a782610af4565b986020808b848152019260051b8201019283116106ee57602001905b828210610a3a5750505060c08401519760e0850151926101536101008701610a8f565b610120870151979095906001600160a01b03891689036106ee57610140880151976001600160a01b03891689036106ee576101600151986001600160a01b038a168a036106ee5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00556080526001600160a01b03168015610a27575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a38051906001600160401b0382116106335760045490600182811c92168015610a1d575b60208310146109405781601f8493116109cf575b50602090601f8311600114610969575f9261095e575b50508160011b915f199060031b1c1916176004555b8051906001600160401b0382116106335760055490600182811c92168015610954575b60208310146109405781601f849311610904575b50602090601f831160011461089e575f92610893575b50508160011b915f199060031b1c1916176005555b60018751111561084e578651906001600160401b0382116106335768010000000000000000821161063357600b5482600b55808310610814575b50600b5f5260205f205f5b8381106107f7575050505060a05285518551036107be5761033a8651610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600654836006558084106107a2575b500160065f5260205f205f5b83811061078e57505050505f5b86518110156104185761271061039c8289610b49565b5110156103e1576103ad8188610b49565b51906006548110156103cd5760019160065f528160205f20015501610386565b634e487b7160e01b5f52603260045260245ffd5b60405162461bcd60e51b815260206004820152600f60248201526e506f6f6c3a20666565203e3d20312560881b6044820152606490fd5b50866127108110156107495760c05262061a8081101561070457801580156106f2575b156106ee5760e052601080546001600160a01b0319166001600160a01b039290921691909117905561012052610100528051905f5b8281106106a7578261048181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600d5483600d5580841061068b575b5001600d5f5260205f205f5b83811061067757846104d181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600f5483600f5580841061065b575b5001600f5f5260205f205f5b8381106106475761052085610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600c5483600c55808410610617575b500190600c5f5260205f20915f5b82811061060357604051614f689081610b5e8239608051818181611b5001528181611da1015281816120f40152612817015260a051818181610f130152610f7f015260c0518181816113480152611733015260e0518181816105ac01528181610c550152818161105d0152818161136e015281816114be0152611c2a01526101005181818161031701526105f70152610120518181816108050152610a720152f35b600190602083519301928186015501610561565b61062d90600c5f5284845f209182019101610b0b565b83610553565b634e487b7160e01b5f52604160045260245ffd5b600190602084519401938184015501610510565b61067190600f5f5284845f209182019101610b0b565b84610504565b6001906020845194019381840155016104c0565b6106a190600d5f5284845f209182019101610b0b565b846104b4565b60018101908181116106da576001600160a01b03906106c69084610b49565b51165f52600e6020528060405f2055610470565b634e487b7160e01b5f52601160045260245ffd5b5f80fd5b506001600160a01b038216151561043b565b60405162461bcd60e51b815260206004820152601960248201527f506f6f6c3a2070726f746f636f6c20666565203e3d20343025000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601560248201527f506f6f6c3a20666c61736820666565203e3d20312500000000000000000000006044820152606490fd5b600190602084519401938184015501610379565b6107b89060065f5284845f209182019101610b0b565b5f61036d565b60405162461bcd60e51b81526020600482015260116024820152700a0deded87440cccacae640d8cadccee8d607b1b6044820152606490fd5b82516001600160a01b031681830155602090920191600101610319565b600b5f52610848907f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9908101908401610b0b565b5f61030e565b60405162461bcd60e51b815260206004820152601360248201527f506f6f6c3a206e656564203e31206173736574000000000000000000000000006044820152606490fd5b015190505f806102bf565b60055f9081528281209350601f198516905b8181106108ec57509084600195949392106108d4575b505050811b016005556102d4565b01515f1960f88460031b161c191690555f80806108c6565b929360206001819287860151815501950193016108b0565b6109309060055f5260205f20601f850160051c81019160208610610936575b601f0160051c0190610b0b565b5f6102a9565b9091508190610923565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610295565b015190505f8061025d565b60045f9081528281209350601f198516905b8181106109b7575090846001959493921061099f575b505050811b01600455610272565b01515f1960f88460031b161c191690555f8080610991565b9293602060018192878601518155019501930161097b565b60045f52610a17907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f850160051c8101916020861061093657601f0160051c0190610b0b565b5f610247565b91607f1691610233565b631e4fbdf760e01b5f525f60045260245ffd5b8151815260209182019101610130565b82516001600160a01b03811681036106ee578152602092830192016100cc565b6040519190601f01601f191682016001600160401b0381118382101761063357604052565b51906001600160a01b03821682036106ee57565b81601f820112156106ee578051906001600160401b03821161063357610ad2601f8301601f1916602001610a6a565b92828452602083830101116106ee57815f9260208093018386015e8301015290565b6001600160401b0381116106335760051b60200190565b818110610b16575050565b5f8155600101610b0b565b90610b2e6100a783610af4565b8281528092610b3f601f1991610af4565b0190602036910137565b80518210156103cd5760209160051b01019056fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c908163017504b614612b1b57508063017cf66114612a8957806306fdde0314612940578063095ea7b31461283b5780630d246214146127cd5780630eeee627146119a457806318160ddd146119685780631f3a0e411461192757806323b872dd14611790578063313ce5671461175657806331596a6a146116fd57806341c0e1b514611667578063476e44b614611519578063491e7998146113f15780635cffe9de146112115780636863f5bc146110805780636b4082d1146110275780636b7b911214610fa55780636bba3f2f14610f495780636d8d0ff314610e8e5780636ff97f1d14610d8e57806370a0823114610d2b578063715018a614610c8f57806379a68d5314610b6b5780638da5cb5b14610b1a5780638e499bcf14610ade578063939f5ea414610a965780639517606614610a2757806395d89b41146108cd5780639af1d35a1461082e578063a1af5b9a14610765578063a9059cbb14610715578063b3f1c93d14610648578063cb717f3a146104f3578063cce516b7146104a1578063d516b8c614610416578063dd62ed3e1461039d578063e4b50cb81461033b578063f0d1ae4f146102cc5763f2fde38b0361000f57346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610228612c2a565b610230613288565b16801561029d5773ffffffffffffffffffffffffffffffffffffffff8254827fffffffffffffffffffffffff00000000000000000000000000000000000000008216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b6024827f1e4fbdf700000000000000000000000000000000000000000000000000000000815280600452fd5b80fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff61038d600435612cfa565b90549060031b1c16604051908152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff60406103ec612c2a565b92826103f6612c4d565b9416815260026020522091165f52602052602060405f2054604051908152f35b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043590602435916064359182600f0b83036102c95761049d61047985858561046f83826133ad565b9260443591612f95565b92505050604093919351938493846040919493926060820195825260208201520152565b0390f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff60105416604051908152f35b5060a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761049d61062b61061c61052f612c2a565b610537612c4d565b60443573ffffffffffffffffffffffffffffffffffffffff610558826132d4565b9281604051957f3dd3c8050000000000000000000000000000000000000000000000000000000060208801521660248601521660448401526064830152606435608483015260843560a483015260c48201527f000000000000000000000000000000000000000000000000000000000000000060e482015260e481526105e061010482612cb9565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166132f4565b60208082518301019101612f29565b604080519384526020840192909252908201529081906060820190565b5060807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f161067e612c2a565b73ffffffffffffffffffffffffffffffffffffffff61069b612c4d565b81604051937fb3f1c93d00000000000000000000000000000000000000000000000000000000602086015216602484015216604482015260443560648201526064356084820152608481526105e060a482612cb9565b602081519181808201938492010103126107115760209051604051908152f35b5f80fd5b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761075a610750612c2a565b6024359033613163565b602060405160018152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761082a73ffffffffffffffffffffffffffffffffffffffff60105416604051907f2a54db010000000000000000000000000000000000000000000000000000000060208301526024820152602481526107ee604482612cb9565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166132f4565b5080f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760405180916020600654928381520191600682527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f915b8181106108b75761049d856108ab81870382612cb9565b60405191829182612ba9565b8254845260209093019260019283019201610894565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576040519080600554908160011c91600181168015610a1d575b6020841081146109f0578386529081156109ab575060011461094e575b61049d8461094281860382612cb9565b60405191829182612be2565b600581527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0939250905b8082106109915750909150810160200161094282610932565b919260018160209254838588010152019101909291610978565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208087019190915292151560051b850190920192506109429150839050610932565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b92607f1692610915565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020610ad66024356004356133ad565b604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600b54604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b5060e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610b9e612c2a565b90610ba7612c4d565b906044356064356084359182600f0b809303610c8b5760c435938415158095036102c95761049d61062b61061c89898989898973ffffffffffffffffffffffffffffffffffffffff610bf98383612f44565b9581604051987f8a3d858d0000000000000000000000000000000000000000000000000000000060208b01521660248901521660448701526064860152608485015260a484015260a43560c484015260e48301526101048201527f000000000000000000000000000000000000000000000000000000000000000061012482015261012481526107ee61014482612cb9565b8380fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610cc6613288565b8073ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604060209173ffffffffffffffffffffffffffffffffffffffff610d7d612c2a565b168152600183522054604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604051806020600b5491828152018091600b85527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db990855b818110610e625750505082610e0b910383612cb9565b604051928392602084019060208552518091526040840192915b818110610e33575050500390f35b825173ffffffffffffffffffffffffffffffffffffffff16845285945060209384019390920191600101610e25565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610df5565b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f1610ec4612c2a565b73ffffffffffffffffffffffffffffffffffffffff604051917fc5eabfb900000000000000000000000000000000000000000000000000000000602084015216602482015260243560448201527f0000000000000000000000000000000000000000000000000000000000000000600f0b6064820152606481526105e0608482612cb9565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f0000000000000000000000000000000000000000000000000000000000000000600f0b8152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610ff2612c2a565b610ffa613288565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000601054161760105580f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c95760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576110b8612c2a565b6110c0612c4d565b90608435801515809103610c8b5773ffffffffffffffffffffffffffffffffffffffff6111429381604051947f6863f5bc0000000000000000000000000000000000000000000000000000000060208701521660248501521660448301526044356064830152606435608483015260a482015260a481526105e060c482612cb9565b805181019060208181840193031261120d5760208101519067ffffffffffffffff8211610c8b57019181603f840112156102c95760208301519267ffffffffffffffff84116111e0578360051b91604051946111a16020850187612cb9565b855260208080870194840101019384116102c95750604001905b8282106111d0576040518061049d8682612ba9565b81518152602091820191016111bb565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8280fd5b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043573ffffffffffffffffffffffffffffffffffffffff81168091036113e95761126a612c4d565b60643567ffffffffffffffff8111610c8b5736602382011215610c8b5780600401359067ffffffffffffffff82116113ed5736602483830101116113ed576113c3937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f846107ee9560246101049673ffffffffffffffffffffffffffffffffffffffff6040519a8b987fe49cd4750000000000000000000000000000000000000000000000000000000060208b0152848a0152166044880152604435606488015260c060848801528260e48801520186860137888582860101527f000000000000000000000000000000000000000000000000000000000000000060a48501527f000000000000000000000000000000000000000000000000000000000000000060c48501520116810103017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612cb9565b6020818051810103126113e957602001518015158091036113e957602090604051908152f35b5080fd5b8480fd5b50346102c95760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957611429612c2a565b611431612c4d565b906064359160a4358015158091036113ed578373ffffffffffffffffffffffffffffffffffffffff6114656114f4966132d4565b9381604051967f8d01fa440000000000000000000000000000000000000000000000000000000060208901521660248701521660448501526044356064850152608484015260843560a484015260c483015260e48201527f000000000000000000000000000000000000000000000000000000000000000061010482015261010481526105e061012482612cb9565b6040818051810103126113e95780604060208193015191015182519182526020820152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576060602060405161155881612c70565b83815201526040519061156a82612c70565b600954600f0b825260405191600a548084528360208101600a8552602085209285905b80600183011061163b576115b6945491818110611627575b10611616575b509493940383612cb9565b6020810191825260405192839260208452606084019251600f0b6020850152519160408085015282518091526020608085019301915b8181106115fa575050500390f35b8251600f0b8452859450602093840193909201916001016115ec565b60801d600f0b81526020015f6115ab565b92602060019184600f0b81520193016115a5565b9160029193506040600191865480600f0b825260801d600f0b602082015201940192018692939161158d565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761169e613288565b60085460ff8116156116ae575080f35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001176008557f0f8eeedbc400fd6686703559f58d1e6143fdaed533f19a86c93d67a2fe4fb3318180a180f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405160128152f35b50346102c95760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576117c8612c2a565b6117d0612c4d565b6044359173ffffffffffffffffffffffffffffffffffffffff811680855260026020526040852073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f2054907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821061184d575b505061075a9350613163565b8482106118f35780156118c757331561189b578560409161075a975260026020522073ffffffffffffffffffffffffffffffffffffffff33165f526020528360405f20910390555f80611841565b6024867f94280d6200000000000000000000000000000000000000000000000000000000815280600452fd5b6024867fe602df0500000000000000000000000000000000000000000000000000000000815280600452fd5b60648686847ffb8f41b200000000000000000000000000000000000000000000000000000000835233600452602452604452fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060ff600854166040519015158152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600354604051908152f35b506101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576119d8612c2a565b602435917fffffffff00000000000000000000000000000000000000000000000000000000831690818403610711576044359173ffffffffffffffffffffffffffffffffffffffff83169485840361071157606435956084359560c4359687600f0b9687890361071157610104359860e4358a15158b036107115760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146127a55760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005560ff6008541661274757801590811561273c575b50156126de57611ad390611ac8848d612f44565b9060a435858e612f95565b9c859e95979392949f915073ffffffffffffffffffffffffffffffffffffffff611afc83612cfa565b90549060031b1c169a73ffffffffffffffffffffffffffffffffffffffff611b2386612cfa565b90549060031b1c169c80155f1461236c57505050878a73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169889821480612362575b1561228b57505050863b15610711575f8e976004604051809a81937fd0e30db00000000000000000000000000000000000000000000000000000000083525af1968715612280578f908f908f99612269575b50611c03611c25915b611bfe611be186612d3f565b90549060031b1c611bf187612d57565b90549060031b1c90612dd9565b612dd9565b91611c20611c1087612d3f565b90549060031b1c611bf188612d57565b612d9f565b908d987f00000000000000000000000000000000000000000000000000000000000000009081151580612260575b6121d7575b5050611cf691611cd8611c99611ced93611c83611c7488612d57565b90549060031b1c821015612e30565b611c8c87612d57565b90549060031b1c90612d9f565b611ca286612d3f565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b611ce4611c7487612d57565b611c8c86612d57565b611ca285612d3f565b8b82600f0b1315612179578b84600f0b131561211b57611d7f93611d6782611d3f611d39611d3f96611d2a611d3997613102565b90549060031b1c600f0b6134d7565b91613102565b9091906fffffffffffffffffffffffffffffffff83549160031b928116831b921b1916179055565b611d7084613102565b90549060031b1c600f0b613514565b806120dc575b156120165773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b156120125787809160248d60405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af18015612007579188918c93611fe9575b5081809381925af13d15611fe4573d67ffffffffffffffff8111611fb75760405190611e6460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160183612cb9565b81528760203d92013e5b15611f59577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a0915b611ea3818a612d9f565b73ffffffffffffffffffffffffffffffffffffffff604051931683528a60208401528b604084015260608301526080820152a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015611f28575b50505061049d90604051938493846040919493926060820195825260208201520152565b8280809381938290611f50575b3390f115611f44578080611f04565b604051903d90823e3d90fd5b506108fc611f35565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b611e6e565b611ff69193508290612cb9565b61200357868a915f611e10565b8680fd5b6040513d8a823e3d90fd5b8780fd5b506040517fa9059cbb0000000000000000000000000000000000000000000000000000000087528360045289602452602087604481808a5af19060018851148216156120bb575b6040521561208f577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a091611e99565b602486867f5274afe7000000000000000000000000000000000000000000000000000000008252600452fd5b9060018115166120d357863b15153d1516169061205d565b503d87823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168614611d85565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a20616d6f756e744f7574203c3d20300000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4d53523a20616d6f756e74496e203c3d2030000000000000000000000000006044820152fd5b611ced929a50611c99620f42406121f5611cf69694611cd894612de6565b049b8c612208575b93505050918f611c58565b61225b8d6122276122188a612d57565b91909283548360031b1c612dd9565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b6121fd565b50801515611c53565b612276919e505f90612cb9565b5f9c611c03611bcc565b6040513d5f823e3d90fd5b60209293949596979899505f80809360649373ffffffffffffffffffffffffffffffffffffffff604051987f23b872dd00000000000000000000000000000000000000000000000000000000855216600452306024526044525af19060015f5114821615612341575b6040525f6060521561231557908b95949392918e611c258f611c0390611bd5565b887f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b906001811516612359578a3b15153d151616906122f4565b503d5f823e3d90fd5b5080341015611b7a565b92985090917c01000000000000000000000000000000000000000000000000000000000361253257506124ae576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526020816024818d5afa8015612280578e915f91612477575b50612404906123fe6123ee8a612d3f565b90549060031b1c611bf18b612d57565b90612d9f565b03612419578b958e611c258f611c0390611bd5565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496e636f72726563742070726566756e64696e6720616d6f756e7400000000006044820152fd5b9150506020813d6020116124a6575b8161249360209383612cb9565b8101031261071157518d906124046123dd565b3d9150612486565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f50726566756e64696e672063616e6e6f7420626520757365642077697468206160448201527f206c696d697420707269636500000000000000000000000000000000000000006064820152fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015291506020826024818e5afa918215612280578f905f936126a6575b50602492916125aa916040519160208301528d858301526044820152604481526125a4606482612cb9565b8a613457565b5060208b604051938480927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa8015612280578f925f9161266d575b50906125fa91612d9f565b0361260f578b958e611c258f611c0390611bd5565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e742066756e647300000000000000000000000000006044820152fd5b919250506020813d60201161269e575b8161268a60209383612cb9565b8101031261071157518e91906125fa6125ef565b3d915061267d565b9250506020823d6020116126d6575b816126c260209383612cb9565b81010312610711579051908e6125aa612579565b3d91506126b5565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f737761703a20646561646c696e652065786365656465640000000000000000006044820152fd5b90504211155f611ab4565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346107115760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157612872612c2a565b6024359033156129145773ffffffffffffffffffffffffffffffffffffffff169081156128e857335f52600260205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576040515f6004548060011c90600181168015612a7f575b602083108114612a5257828552908115612a1057506001146129b2575b61049d8361094281850382612cb9565b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b8082106129f6575090915081016020016109426129a2565b9192600181602092548385880101520191019092916129de565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b8401909101915061094290506129a2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691612985565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157604051806020600d54918281520190600d5f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5905f5b818110612b055761049d856108ab81870382612cb9565b8254845260209093019260019283019201612aee565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157600c548082526020820190600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7905f5b818110612b935761049d856108ab81870382612cb9565b8254845260209093019260019283019201612b7c565b60206040818301928281528451809452019201905f5b818110612bcc5750505090565b8251845260209384019390920191600101612bbf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6040810190811067ffffffffffffffff821117612c8c57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612c8c57604052565b600b54811015612d1257600b5f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600f54811015612d1257600f5f5260205f2001905f90565b600c54811015612d1257600c5f5260205f2001905f90565b600d54811015612d1257600d5f5260205f2001905f90565b600654811015612d125760065f5260205f2001905f90565b91908203918211612dac57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b91908201809211612dac57565b81810292918115918404141715612dac57565b8115612e03570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b15612e3757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f62616c616e6365203c2070726f746f636f6c206f7765640000000000000000006044820152fd5b90604051918281549182825260208201905f5260205f20925f905b806001830110612efd57612ed6945491818110612ee9575b10612ed8575b500383612cb9565b565b60801d600f0b81526020015f612ece565b92602060019184600f0b8152019301612ec8565b9160029193506040600191865480600f0b825260801d600f0b6020820152019401920185929391612eb0565b90816060910312610711578051916040602083015192015190565b9190826103e8026103e881048403612dac5781612f6091612dd9565b90815f52600760205260405f2054938415612f7a57505050565b612f859294506133ad565b915f5260076020528160405f2055565b92949394919091612fc1612fa987846133ca565b9050612fb486612d6f565b90549060031b1c9061356a565b905f82600f0b13156130a457612fd8918486613794565b919092612ff78394612fea8197612d6f565b90549060031b1c906133ec565b925f92849880613083575b5088116130255761301561302292612d6f565b90549060031b1c90613c6b565b94565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f737761703a207472616e736665722065786365656473206d61780000000000006044820152fd5b9098506130929193508461341e565b9161309d8385612dd9565b975f613002565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761703a20696e70757420746f6f20736d616c6c20616674657220666565006044820152fd5b90600a54821015612d1257600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b9190918054831015612d12575f52601060205f208360011c019260041b1690565b73ffffffffffffffffffffffffffffffffffffffff1690811561325c5773ffffffffffffffffffffffffffffffffffffffff1691821561323057815f52600160205260405f20548181106131fe57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f52600184520360405f2055845f526001825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff5f541633036132a857565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b600654156132ef576132e590612d87565b90549060031b1c90565b505f90565b905f8091602081519101845af4808061339a575b1561331a575050613317613551565b90565b156133615773ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b3d15613372576040513d5f823e3d90fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b503d1515806133085750813b1515613308565b90611bf16133bd61331793612d87565b90549060031b1c91612d87565b919080156133e6576133df613317918461341e565b8093612d9f565b505f9190565b6134006133f98383613c6b565b928361356a565b90600f0b90600f0b126134105790565b60018101809111612dac5790565b9080156134515761342e91612de6565b620f4240810190818111612dac57620f423f01908111612dac57620f4240900490565b50505f90565b905f809160208151910182855af1808061339a571561331a575050613317613551565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd575b1561071157600f0b90565b506f7fffffffffffffffffffffffffffffff8113156134b2565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b604051903d82523d5f602084013e60203d830101604052565b81156107115777ffffffffffffffffffffffffffffffffffffffffffffffff81116135e2579061359c9160401b612df9565b6fffffffffffffffffffffffffffffffff8111610711576fffffffffffffffffffffffffffffffff166f7fffffffffffffffffffffffffffffff811161071157600f0b90565b60c09181831c8093640100000000821015613787575b6002826201000061368594101561377b575b61010081101561376f575b6010811015613763575b6004811015613758575b1015613750575b8360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b612df9565b926fffffffffffffffffffffffffffffffff8411610711578160801c8402906fffffffffffffffffffffffffffffffff8316850290809460401b90828210613726575b5003928160801b918285106136fd575b60801c036136f2576136ea9203612df9565b905b0161359c565b5050506001906136ec565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906136d8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f6136c8565b600101613630565b91810191811c613629565b6004928301921c61361f565b6008928301921c613615565b6010928301921c61360a565b505060e082811c906135f8565b9193929093600a5480841080613c62575b15613c0457600203613bec576137c36137be600a612e95565b61415f565b946137d25f87600f0b13613cc6565b6137e2600954600f0b9687613e4d565b5f81600f0b1315613bd9576137f681613d2b565b6138328161382d61380889600a613142565b90549060031b1c600f0b61381d87600a613142565b90549060031b1c600f0b90613514565b613e4d565b9085600f0b5f81136139a3575b505f600f83900b1261399557815b67028f5c28f5c28f5c90600f0b13613980576138699085613e4d565b80600f0b915f83131561396a57678000000000000000831361396a57906138c46138e59493926138be6138b8671999999999999999946138b26138ac8280613e4d565b9461347a565b90613e4d565b91613d7b565b90613514565b916138cf8380613e4d565b91600f0b1261394157906138be6138b292613d7b565b9384600f0b965f881315613921576138fe83600a613142565b90549060031b1c600f0b881215613921575f849698126139215750505050509190565b90919293945061393d959650613937600a612e95565b90613ed3565b9091565b61396461395e836138be6139586138b29686613e4d565b94613d7b565b91613dc1565b906134d7565b5050505090919261393d9495613937600a612e95565b50505090919261393d9495613937600a612e95565b61399e82613e8d565b61384d565b6139b08380979397613e4d565b680600000000000000006139d46139c78684613e4d565b926139646138b88861347a565b9160401b60170b05907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082121580613bbf575b1561071157613a1991600f0b906134d7565b9081600f0b1215613b3a57613a4f7fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009188613e07565b600f0b017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613b20575b1561071157600f0b5f8112613b1257805b671999999999999999600f0b90600f0b13613afb578061396461395e613ab783613ac595613e4d565b926138be6139588286613e4d565b5f81600f0b1315613afb57613ada9084613e4d565b9080600f0b82600f0b125f14613af35750935b5f61383f565b949050613aed565b509495929350505061393d9495613937600a612e95565b613b1b81613e8d565b613a8e565b506f7fffffffffffffffffffffffffffffff811315613a7d565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4c4d53523a206c696d69745072696365203c3d2063757272656e74207072696360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152608490fd5b506f7fffffffffffffffffffffffffffffff821315613a07565b5090919261393d9495613937600a612e95565b90919361393d9394600954600f0b613937600a612e95565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4c4d53523a2069647800000000000000000000000000000000000000000000006044820152fd5b508086106137a5565b811561345157600f0b5f8112610711576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116107115760401b81198111610711570190565b15613ccd57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b600f0b801561071157700100000000000000000000000000000000057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b680200000000000000009060401b60170b057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b680300000000000000009060401b60170b057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b90600f0b9081156107115760401b60170b057fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff80000000000000000000000000000000811215806134bd571561071157600f0b90565b7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081600f0b14610711575f03600f0b90565b8051821015612d125760209160051b010190565b95949093613f1790939293613f34613f2f613f01839a613ef28a61415f565b9061382d5f83600f0b13613cc6565b9661382d613f0e89613d2b565b9586928b613ebf565b51600f0b613f25898c613ebf565b51600f0b90613514565b614194565b9280600f0b5f81136140a1575b505090613f4d91613e4d565b6820000000000000000081600f0b1361401d57613f2f613f6c91613e8d565b600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580614003575b1561071157613fbf91613fba91600f0b90613e4d565b61347a565b925f84600f0b1315613fef5750506138b2613fd9926141f1565b905f82600f0b1315613fe757565b5f9250829150565b909150613ffc9250613ebf565b51600f0b90565b506f7fffffffffffffffffffffffffffffff811315613fa4565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4c4d53523a20612f6220746f6f206c617267652028776f756c64206f7665726660448201527f6c6f7720657870290000000000000000000000000000000000000000000000006064820152fd5b84600f9a939a0b1215613b3a57836140b891613e07565b5f81600f0b1315614101576140cf6140d5916141f1565b86613e4d565b9780600f0b89600f0b125f146140f5575050613f4d90875b90915f613f41565b613f4d929198506140ed565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4d53523a20726174696f3c3d300000000000000000000000000000000000006044820152fd5b5f90815b815183101561418e5761418660019161417c8585613ebf565b51600f0b906134d7565b920191614163565b91505090565b600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000081126132ef57700171547652b82fe1777d0ffda0d23a7d12613317910260801d600f0b61431e565b600f0b5f811315610711575f908068010000000000000000821215614311575b806401000000006002921215614305575b620100008112156142f9575b6101008112156142ed575b60108112156142e1575b60048112156142d6575b12156142cc575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f83136142b057506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d90565b8002908160ff1c9182607f011c918302019160011d919061428b565b9060010190614254565b92810192811d61424d565b6004938401931d614243565b6008938401931d614239565b6010938401931d61422e565b6020938401931d614222565b506040915080821d614211565b80600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc000000000000000008112613451576f80000000000000000000000000000000915f6780000000000000008216600f0b13614f1a575b5f6740000000000000008216600f0b13614efd575b5f6720000000000000008216600f0b13614ee0575b5f6710000000000000008216600f0b13614ec3575b5f6708000000000000008216600f0b13614ea6575b5f6704000000000000008216600f0b13614e89575b5f6702000000000000008216600f0b13614e6c575b5f6701000000000000008216600f0b13614e4f575b5f66800000000000008216600f0b13614e32575b5f66400000000000008216600f0b13614e15575b5f66200000000000008216600f0b13614df8575b5f66100000000000008216600f0b13614ddb575b5f66080000000000008216600f0b13614dbe575b5f66040000000000008216600f0b13614da1575b5f66020000000000008216600f0b13614d84575b5f66010000000000008216600f0b13614d67575b5f658000000000008216600f0b13614d4a575b5f654000000000008216600f0b13614d2d575b5f652000000000008216600f0b13614d10575b5f651000000000008216600f0b13614cf3575b5f650800000000008216600f0b13614cd6575b5f650400000000008216600f0b13614cb9575b5f650200000000008216600f0b13614c9c575b5f650100000000008216600f0b13614c7f575b5f6480000000008216600f0b13614c62575b5f6440000000008216600f0b13614c45575b5f6420000000008216600f0b13614c28575b5f6410000000008216600f0b13614c0b575b5f6408000000008216600f0b13614bee575b5f6404000000008216600f0b13614bd1575b5f6402000000008216600f0b13614bb4575b5f6401000000008216600f0b13614b97575b5f63800000008216600f0b13614b7a575b5f63400000008216600f0b13614b5d575b5f63200000008216600f0b13614b40575b5f63100000008216600f0b13614b23575b5f63080000008216600f0b13614b06575b5f63040000008216600f0b13614ae9575b5f63020000008216600f0b13614acc575b5f63010000008216600f0b13614aaf575b5f628000008216600f0b13614a92575b5f624000008216600f0b13614a75575b5f622000008216600f0b13614a58575b5f621000008216600f0b13614a3b575b5f620800008216600f0b13614a1e575b5f620400008216600f0b13614a01575b5f620200008216600f0b136149e4575b5f620100008216600f0b136149c7575b5f6180008216600f0b136149aa575b5f6140008216600f0b1361498d575b5f6120008216600f0b13614970575b5f6110008216600f0b13614953575b5f6108008216600f0b13614936575b5f6104008216600f0b13614919575b5f6102008216600f0b136148fc575b5f6101008216600f0b136148df575b5f60808216600f0b136148c2575b5f60408216600f0b136148a5575b5f60208216600f0b13614888575b5f60108216600f0b1361486b575b5f60088216600f0b1361484e575b5f60048216600f0b13614831575b5f60028216600f0b13614813575b60015f9116600f0b136147f6575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161071157600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c906147cc565b7001000000000000000162e42fefa39ef35890920260801c916147be565b9170010000000000000002c5c85fdf473de6b20260801c916147b0565b91700100000000000000058b90bfbe8e7bcd6d0260801c916147a2565b917001000000000000000b17217f7d1cf79afa0260801c91614794565b91700100000000000000162e42fefa39ef366f0260801c91614786565b917001000000000000002c5c85fdf473de6eca0260801c91614778565b9170010000000000000058b90bfbe8e7bce5440260801c9161476a565b91700100000000000000b17217f7d1cf79e9490260801c9161475c565b9170010000000000000162e42fefa39ef44d910260801c9161474d565b91700100000000000002c5c85fdf473dea871f0260801c9161473e565b917001000000000000058b90bfbe8e7bdcbe2e0260801c9161472f565b9170010000000000000b17217f7d1cf7d83c1a0260801c91614720565b917001000000000000162e42fefa39f02b772c0260801c91614711565b9170010000000000002c5c85fdf473e242ea380260801c91614702565b91700100000000000058b90bfbe8e7cc35c3f00260801c916146f3565b917001000000000000b17217f7d1cfb72b45e10260801c916146e4565b91700100000000000162e42fefa39fe95583c20260801c916146d4565b917001000000000002c5c85fdf4741bea6e77e0260801c916146c4565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c916146b4565b91700100000000000b17217f7d1d351a389d400260801c916146a4565b9170010000000000162e42fefa3ae53369388c0260801c91614694565b91700100000000002c5c85fdf477b662b269450260801c91614684565b917001000000000058b90bfbe8f71cb4e4b33d0260801c91614674565b9170010000000000b17217f7d20cf927c8e94c0260801c91614664565b917001000000000162e42fefa494f1478fde050260801c91614653565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c91614642565b91700100000000058b90bfbe9ddbac5e109cce0260801c91614631565b917001000000000b17217f7d5a7716bba4a9ae0260801c91614620565b91700100000000162e42fefb2fed257559bdaa0260801c9161460f565b917001000000002c5c85fdf84bd62ae30a74cc0260801c916145fe565b9170010000000058b90bfbf8479bd5a81b51ad0260801c916145ed565b91700100000000b17217f80f4ef5aadda455540260801c916145dc565b9170010000000162e42ff0999ce3541b9fffcf0260801c916145ca565b91700100000002c5c85fe31f35a6a30da1be500260801c916145b8565b917001000000058b90bfcdee5acd3c1cedc8230260801c916145a6565b9170010000000b17217fba9c739aa5819f44f90260801c91614594565b917001000000162e42fff037df38aa2b219f060260801c91614582565b9170010000002c5c8601cc6b9e94213c72737a0260801c91614570565b91700100000058b90c0b48c6be5df846c5b2ef0260801c9161455e565b917001000000b1721835514b86e6d96efd1bfe0260801c9161454c565b91700100000162e430e5a18f6119e3c02282a50260801c91614539565b917001000002c5c863b73f016468f6bac5ca2b0260801c91614526565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91614513565b91700100000b1721bcfc99d9f890ea069117630260801c91614500565b9170010000162e43f4f831060e02d839a9d16d0260801c916144ed565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c916144da565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c916144c7565b9170010000b17255775c040618bf4a4ade83fc0260801c916144b4565b917001000162e525ee054754457d59952920260260801c916144a0565b9170010002c5cc37da9491d0985c348c68e7b30260801c9161448c565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91614478565b917001000b175effdc76ba38e31671ca9397250260801c91614464565b91700100162f3904051fa128bca9c55c31e5df0260801c91614450565b917001002c605e2e8cec506d21bfc89a23a00f0260801c9161443c565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c91614428565b91700100b1afa5abcbed6129ab13ec11dc95430260801c91614414565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c916143ff565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c916143ea565b917001059b0d31585743ae7c548eb68ca417fd0260801c916143d5565b9170010b5586cf9890f6298b92b71842a983630260801c916143c0565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c916143ab565b917001306fe0a31b7152de8d5a46305c85edec0260801c91614396565b6fb504f333f9de6484597d89b3754abe9f925061438156fea264697066735822122043bf74af2633e25ab2330d593dbfd1d52cff0bf909bfe29106cc479fea7a2a7864736f6c634300081e0033a2646970667358221220b239ec7074b6ad8ed4d821ee3ca0df1ddb2b42479ef3dd6fa0a5e9cd87baad7564736f6c634300081e0033","sourceMap":"1769:834:51:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2283:311;;;;;;;;;;;;;;;1769:834;-1:-1:-1;2283:311:51;;;1769:834;2283:311;;;;;1769:834;2283:311;1769:834;2283:311;;;;1769:834;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2283:311;;1769:834;2283:311;;;;;1769:834;;;;;;;;;;2283:311;1769:834;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2283:311;1769:834;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;1769:834:51;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1769:834:51;;;;;;;;;;;:::o","linkReferences":{}},"methodIdentifiers":{"deploy(address,string,string,address[],int128,uint256[],uint256,uint256,address,address,address,address)":"6ae73ce3"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens_\",\"type\":\"address[]\"},{\"internalType\":\"int128\",\"name\":\"kappa_\",\"type\":\"int128\"},{\"internalType\":\"uint256[]\",\"name\":\"fees_\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"flashFeePpm_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolFeePpm_\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"protocolFeeAddress_\",\"type\":\"address\"},{\"internalType\":\"contract NativeWrapper\",\"name\":\"wrapper_\",\"type\":\"address\"},{\"internalType\":\"contract PartyPoolSwapImpl\",\"name\":\"swapImpl_\",\"type\":\"address\"},{\"internalType\":\"contract PartyPoolMintImpl\",\"name\":\"mintImpl_\",\"type\":\"address\"}],\"name\":\"deploy\",\"outputs\":[{\"internalType\":\"contract IPartyPool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/PartyPoolDeployer.sol\":\"PartyPoolBalancedPairDeployer\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/abdk-libraries-solidity/ABDKMath64x64.sol\":{\"keccak256\":\"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97\",\"license\":\"BSD-4-Clause\",\"urls\":[\"bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7\",\"dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol\":{\"keccak256\":\"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd\",\"dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd\",\"dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168\",\"dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd274645d15bb7e4fcb9c833e401b2c5837404f90057f11a49118f25e0af7c76f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d38e0b997bb7aebae26d190b03d0991feb0d204c45f945e60014e1ca9175de69\",\"dweb:/ipfs/QmWzsUHHAZcjMyF8uMDEtNpMTkYZdQrfvdKPobXvwVHKo6\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x50e81a8b089e3f382b6c915aa0166773de64ea4756e8f9479d9943a5f956ddf5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bfeb96a150537222e2191c03887127499a4f21dfb5f9a7211da4d81749b52848\",\"dweb:/ipfs/QmYR75ECbsBuxSiXmGvGfNKJRLoK5MdLUZL1bd8SixzxL4\"]},\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161\",\"dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"src/ERC20External.sol\":{\"keccak256\":\"0x421f511bb3aa7258fb7121aa66b9a2e8e0b7a07b7e51c800c714f7acbfd599d3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b3fde56a83eae12a31eb4875d8952a99d18591fe0f18b6a12392c8f48f76af46\",\"dweb:/ipfs/QmeApbmGv6Z2b1JynvBxaAK1j1eWhGYpeNEP56V8XXvpcz\"]},\"src/ERC20Internal.sol\":{\"keccak256\":\"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f\",\"dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk\"]},\"src/Funding.sol\":{\"keccak256\":\"0x1d505b256d221cec151157083f8441193bbf7859d13873353429a7ca5342381d\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6871ab97d81ddffc56845142601408e974b7b0c619a2107aacd6b17eafb3330c\",\"dweb:/ipfs/QmU5EKjGN2vDPgXhSsr4qvesq2T5eR5Ybeg25bHrcJyP2y\"]},\"src/IOwnable.sol\":{\"keccak256\":\"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1\",\"dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9\"]},\"src/IPartyPool.sol\":{\"keccak256\":\"0x74b9531bdf2200f256cac6c2cd54c0efad7c1bdfbe694ee910df75448ffe93f4\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://aadd161d7e197b48e6be4198b0f4f81a10016b9904d024e0a361bf2d7f941475\",\"dweb:/ipfs/QmYuGyPZCigmt8va11oAHXPTpHFyF3d7ARDNacyr2jsDfa\"]},\"src/LMSRStabilized.sol\":{\"keccak256\":\"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3\",\"dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB\"]},\"src/LMSRStabilizedBalancedPair.sol\":{\"keccak256\":\"0x782f3baf92f74152c0b93b95199abbb3a36c75c921454260c8b0237f91d7c59d\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://04d463c4fdcb6c8e2ebf9aed649ff21cca759ba73a4c93659e30c7df25e26c81\",\"dweb:/ipfs/QmUxmWytiw5VYJRUrFbSGm1oWmDPQ4q23pnkmK1q9P4apN\"]},\"src/NativeWrapper.sol\":{\"keccak256\":\"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238\",\"dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB\"]},\"src/OwnableExternal.sol\":{\"keccak256\":\"0x0a0199368ad20a31e7169b3e56449bf022c9d680e0d487c118608a7f14cb7efb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3348a063649e01acf9c6aa6b7ce2ecf62ace8c6f1467477de7d605996f08ec64\",\"dweb:/ipfs/QmSoxb35FFsNCgXgWn91CupvjpGmyM31wcfxAVpVFFPecX\"]},\"src/OwnableInternal.sol\":{\"keccak256\":\"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca\",\"dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE\"]},\"src/PartyPool.sol\":{\"keccak256\":\"0xaf921e5a5c32ee53fc1991d20fe030ec0a9572d0a8d112e717476ee4af0b8ab4\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b4bc13e889ec6fb214ac3538203328abede9e316bf617a7f7593b3b0c9ea40f0\",\"dweb:/ipfs/QmWx12PuyFqpy9MyxqJkRvTGkzYAYHajCYps3htgwe3YrX\"]},\"src/PartyPoolBalancedPair.sol\":{\"keccak256\":\"0x7d36ae211709da83ecafcc70f31e5fcdc1bc299243eedceebf17f26339757d7b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://91762575c367c9b1d50a633fb46ccf429a28bbaf70f76b524749ad32dc716d7a\",\"dweb:/ipfs/QmVLxjR3h2XJukjXFx56b4m8SPg6oupxqkzY5EKCK7GFHn\"]},\"src/PartyPoolBase.sol\":{\"keccak256\":\"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5\",\"dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5\"]},\"src/PartyPoolDeployer.sol\":{\"keccak256\":\"0xdf2a6a8602eba3aef625c798a0ec6525feb7520c2fd6933c30dd76fe3c4e2618\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9aa94963e0d34feddf63b3ae034874557229740be1ef80f49e87bd05694c9b50\",\"dweb:/ipfs/QmYQ6mH1mEJCJ9XNGdT3saRU3q36GZ94WuyRsn9LRWXtbM\"]},\"src/PartyPoolHelpers.sol\":{\"keccak256\":\"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5\",\"dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP\"]},\"src/PartyPoolMintImpl.sol\":{\"keccak256\":\"0xe9d9927cecd46a1f836b2c43e9d6184642b9e695c7462e5fb7c671a38aab7398\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8d821911d7982fc302929198539b27f72be100b91450c98d2e0081519f776499\",\"dweb:/ipfs/QmRChx1DPD1gKXwfD1m6aQ7pgh1aX6CvYLNX41ufdJteaJ\"]},\"src/PartyPoolSwapImpl.sol\":{\"keccak256\":\"0x71ecbd6d0fb106031baed7e4c21694ef24f0112af7d975325b98b1b0463ba5b2\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://64f8f8bae2f89ca495b9edacd012363b55e78a198f100650beb2b1238e8ef11f\",\"dweb:/ipfs/QmVfihiw9TqncuEfZKx7c6WEHiGFfRQyhtfdTGzfN7emNY\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"contract IERC20[]","name":"tokens_","type":"address[]"},{"internalType":"int128","name":"kappa_","type":"int128"},{"internalType":"uint256[]","name":"fees_","type":"uint256[]"},{"internalType":"uint256","name":"flashFeePpm_","type":"uint256"},{"internalType":"uint256","name":"protocolFeePpm_","type":"uint256"},{"internalType":"address","name":"protocolFeeAddress_","type":"address"},{"internalType":"contract NativeWrapper","name":"wrapper_","type":"address"},{"internalType":"contract PartyPoolSwapImpl","name":"swapImpl_","type":"address"},{"internalType":"contract PartyPoolMintImpl","name":"mintImpl_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deploy","outputs":[{"internalType":"contract IPartyPool","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/PartyPoolDeployer.sol":"PartyPoolBalancedPairDeployer"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/abdk-libraries-solidity/ABDKMath64x64.sol":{"keccak256":"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97","urls":["bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7","dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN"],"license":"BSD-4-Clause"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d","urls":["bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100","dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc","urls":["bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037","dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44","urls":["bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d","dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol":{"keccak256":"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e","urls":["bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd","dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86","urls":["bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd","dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9","urls":["bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168","dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd274645d15bb7e4fcb9c833e401b2c5837404f90057f11a49118f25e0af7c76f","urls":["bzz-raw://d38e0b997bb7aebae26d190b03d0991feb0d204c45f945e60014e1ca9175de69","dweb:/ipfs/QmWzsUHHAZcjMyF8uMDEtNpMTkYZdQrfvdKPobXvwVHKo6"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol":{"keccak256":"0x50e81a8b089e3f382b6c915aa0166773de64ea4756e8f9479d9943a5f956ddf5","urls":["bzz-raw://bfeb96a150537222e2191c03887127499a4f21dfb5f9a7211da4d81749b52848","dweb:/ipfs/QmYR75ECbsBuxSiXmGvGfNKJRLoK5MdLUZL1bd8SixzxL4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol":{"keccak256":"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0","urls":["bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161","dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"},"src/ERC20External.sol":{"keccak256":"0x421f511bb3aa7258fb7121aa66b9a2e8e0b7a07b7e51c800c714f7acbfd599d3","urls":["bzz-raw://b3fde56a83eae12a31eb4875d8952a99d18591fe0f18b6a12392c8f48f76af46","dweb:/ipfs/QmeApbmGv6Z2b1JynvBxaAK1j1eWhGYpeNEP56V8XXvpcz"],"license":"UNLICENSED"},"src/ERC20Internal.sol":{"keccak256":"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36","urls":["bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f","dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk"],"license":"UNLICENSED"},"src/Funding.sol":{"keccak256":"0x1d505b256d221cec151157083f8441193bbf7859d13873353429a7ca5342381d","urls":["bzz-raw://6871ab97d81ddffc56845142601408e974b7b0c619a2107aacd6b17eafb3330c","dweb:/ipfs/QmU5EKjGN2vDPgXhSsr4qvesq2T5eR5Ybeg25bHrcJyP2y"],"license":"UNLICENSED"},"src/IOwnable.sol":{"keccak256":"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990","urls":["bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1","dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9"],"license":"MIT"},"src/IPartyPool.sol":{"keccak256":"0x74b9531bdf2200f256cac6c2cd54c0efad7c1bdfbe694ee910df75448ffe93f4","urls":["bzz-raw://aadd161d7e197b48e6be4198b0f4f81a10016b9904d024e0a361bf2d7f941475","dweb:/ipfs/QmYuGyPZCigmt8va11oAHXPTpHFyF3d7ARDNacyr2jsDfa"],"license":"UNLICENSED"},"src/LMSRStabilized.sol":{"keccak256":"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b","urls":["bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3","dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB"],"license":"UNLICENSED"},"src/LMSRStabilizedBalancedPair.sol":{"keccak256":"0x782f3baf92f74152c0b93b95199abbb3a36c75c921454260c8b0237f91d7c59d","urls":["bzz-raw://04d463c4fdcb6c8e2ebf9aed649ff21cca759ba73a4c93659e30c7df25e26c81","dweb:/ipfs/QmUxmWytiw5VYJRUrFbSGm1oWmDPQ4q23pnkmK1q9P4apN"],"license":"UNLICENSED"},"src/NativeWrapper.sol":{"keccak256":"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579","urls":["bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238","dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB"],"license":"UNLICENSED"},"src/OwnableExternal.sol":{"keccak256":"0x0a0199368ad20a31e7169b3e56449bf022c9d680e0d487c118608a7f14cb7efb","urls":["bzz-raw://3348a063649e01acf9c6aa6b7ce2ecf62ace8c6f1467477de7d605996f08ec64","dweb:/ipfs/QmSoxb35FFsNCgXgWn91CupvjpGmyM31wcfxAVpVFFPecX"],"license":"MIT"},"src/OwnableInternal.sol":{"keccak256":"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581","urls":["bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca","dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE"],"license":"MIT"},"src/PartyPool.sol":{"keccak256":"0xaf921e5a5c32ee53fc1991d20fe030ec0a9572d0a8d112e717476ee4af0b8ab4","urls":["bzz-raw://b4bc13e889ec6fb214ac3538203328abede9e316bf617a7f7593b3b0c9ea40f0","dweb:/ipfs/QmWx12PuyFqpy9MyxqJkRvTGkzYAYHajCYps3htgwe3YrX"],"license":"UNLICENSED"},"src/PartyPoolBalancedPair.sol":{"keccak256":"0x7d36ae211709da83ecafcc70f31e5fcdc1bc299243eedceebf17f26339757d7b","urls":["bzz-raw://91762575c367c9b1d50a633fb46ccf429a28bbaf70f76b524749ad32dc716d7a","dweb:/ipfs/QmVLxjR3h2XJukjXFx56b4m8SPg6oupxqkzY5EKCK7GFHn"],"license":"UNLICENSED"},"src/PartyPoolBase.sol":{"keccak256":"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999","urls":["bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5","dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5"],"license":"UNLICENSED"},"src/PartyPoolDeployer.sol":{"keccak256":"0xdf2a6a8602eba3aef625c798a0ec6525feb7520c2fd6933c30dd76fe3c4e2618","urls":["bzz-raw://9aa94963e0d34feddf63b3ae034874557229740be1ef80f49e87bd05694c9b50","dweb:/ipfs/QmYQ6mH1mEJCJ9XNGdT3saRU3q36GZ94WuyRsn9LRWXtbM"],"license":"UNLICENSED"},"src/PartyPoolHelpers.sol":{"keccak256":"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c","urls":["bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5","dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP"],"license":"UNLICENSED"},"src/PartyPoolMintImpl.sol":{"keccak256":"0xe9d9927cecd46a1f836b2c43e9d6184642b9e695c7462e5fb7c671a38aab7398","urls":["bzz-raw://8d821911d7982fc302929198539b27f72be100b91450c98d2e0081519f776499","dweb:/ipfs/QmRChx1DPD1gKXwfD1m6aQ7pgh1aX6CvYLNX41ufdJteaJ"],"license":"UNLICENSED"},"src/PartyPoolSwapImpl.sol":{"keccak256":"0x71ecbd6d0fb106031baed7e4c21694ef24f0112af7d975325b98b1b0463ba5b2","urls":["bzz-raw://64f8f8bae2f89ca495b9edacd012363b55e78a198f100650beb2b1238e8ef11f","dweb:/ipfs/QmVfihiw9TqncuEfZKx7c6WEHiGFfRQyhtfdTGzfN7emNY"],"license":"UNLICENSED"}},"version":1},"id":51} \ No newline at end of file diff --git a/deployment/11155111/v1/out/PartyPoolDeployer.sol/PartyPoolDeployer.json b/deployment/11155111/v1/out/PartyPoolDeployer.sol/PartyPoolDeployer.json index 137aa63..3607df7 100644 --- a/deployment/11155111/v1/out/PartyPoolDeployer.sol/PartyPoolDeployer.json +++ b/deployment/11155111/v1/out/PartyPoolDeployer.sol/PartyPoolDeployer.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"deploy","inputs":[{"name":"owner_","type":"address","internalType":"address"},{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"},{"name":"tokens_","type":"address[]","internalType":"contract IERC20[]"},{"name":"kappa_","type":"int128","internalType":"int128"},{"name":"fees_","type":"uint256[]","internalType":"uint256[]"},{"name":"flashFeePpm_","type":"uint256","internalType":"uint256"},{"name":"protocolFeePpm_","type":"uint256","internalType":"uint256"},{"name":"protocolFeeAddress_","type":"address","internalType":"address"},{"name":"wrapper_","type":"address","internalType":"contract NativeWrapper"},{"name":"swapImpl_","type":"address","internalType":"contract PartyPoolSwapImpl"},{"name":"mintImpl_","type":"address","internalType":"contract PartyPoolMintImpl"}],"outputs":[{"name":"","type":"address","internalType":"contract IPartyPool"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x60808060405234601557615896908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c636ae73ce314610024575f80fd5b34610373576101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103735760043573ffffffffffffffffffffffffffffffffffffffff81168091036103735760243567ffffffffffffffff8111610373576100959036906004016103f8565b9060443567ffffffffffffffff8111610373576100b69036906004016103f8565b6064359067ffffffffffffffff82116103735736602383011215610373578160040135916100eb6100e684610468565b6103b4565b9060208285815201906024829560051b8201019036821161037357602401915b8183106103875750505060843580600f0b8091036103735760a43567ffffffffffffffff81116103735736602382011215610373578060040135946101526100e687610468565b91602083888152016024819860051b8301019136831161037357602401905b82821061037757505050610104359173ffffffffffffffffffffffffffffffffffffffff831680930361037357610124359373ffffffffffffffffffffffffffffffffffffffff851680950361037357610144359573ffffffffffffffffffffffffffffffffffffffff871680970361037357610164359773ffffffffffffffffffffffffffffffffffffffff8916809903610373576040519b8c9b8c9261539d8094019e8f9081109067ffffffffffffffff1017610346576102528f92938f94602096610260966104c49039845261018086850152610180840190610480565b916040818403910152610480565b8c810360608e01529151808352910193905f5b81811061031a575050509060209160808b015289830360a08b015251918281520195905f5b81811061030457505050918596916101609360c43560c085015260e43560e0850152610100840152610120830152610140820152015203905ff080156102f95760209073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b6040513d5f823e3d90fd5b8251885260209788019790920191600101610298565b825173ffffffffffffffffffffffffffffffffffffffff16865260209586019590920191600101610273565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f80fd5b8135815260209182019101610171565b823573ffffffffffffffffffffffffffffffffffffffff811681036103735781526020928301920161010b565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff82111761034657604052565b81601f820112156103735780359067ffffffffffffffff82116103465761044660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116016103b4565b928284526020838301011161037357815f926020809301838601378301015290565b67ffffffffffffffff81116103465760051b60200190565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f858286010152011601019056fe610140604052346106ee5761539d8038038061001a81610a6a565b9283398101610180828203126106ee5761003382610a8f565b60208301516001600160401b0381116106ee5782610052918501610aa3565b60408401519091906001600160401b0381116106ee5783610074918601610aa3565b60608501519094906001600160401b0381116106ee5781019284601f850112156106ee578351956100ac6100a788610af4565b610a6a565b9460208689815201906020829960051b820101908882116106ee57602001915b818310610a4a57505050608083015180600f0b81036106ee5760a08401516001600160401b0381116106ee5784019680601f890112156106ee5787516101146100a782610af4565b986020808b848152019260051b8201019283116106ee57602001905b828210610a3a5750505060c08401519760e0850151926101536101008701610a8f565b610120870151979095906001600160a01b03891689036106ee57610140880151976001600160a01b03891689036106ee576101600151986001600160a01b038a168a036106ee5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00556080526001600160a01b03168015610a27575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a38051906001600160401b0382116106335760045490600182811c92168015610a1d575b60208310146109405781601f8493116109cf575b50602090601f8311600114610969575f9261095e575b50508160011b915f199060031b1c1916176004555b8051906001600160401b0382116106335760055490600182811c92168015610954575b60208310146109405781601f849311610904575b50602090601f831160011461089e575f92610893575b50508160011b915f199060031b1c1916176005555b60018751111561084e578651906001600160401b0382116106335768010000000000000000821161063357600b5482600b55808310610814575b50600b5f5260205f205f5b8381106107f7575050505060a05285518551036107be5761033a8651610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600654836006558084106107a2575b500160065f5260205f205f5b83811061078e57505050505f5b86518110156104185761271061039c8289610b49565b5110156103e1576103ad8188610b49565b51906006548110156103cd5760019160065f528160205f20015501610386565b634e487b7160e01b5f52603260045260245ffd5b60405162461bcd60e51b815260206004820152600f60248201526e506f6f6c3a20666565203e3d20312560881b6044820152606490fd5b50866127108110156107495760c05262061a8081101561070457801580156106f2575b156106ee5760e052601080546001600160a01b0319166001600160a01b039290921691909117905561012052610100528051905f5b8281106106a7578261048181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600d5483600d5580841061068b575b5001600d5f5260205f205f5b83811061067757846104d181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600f5483600f5580841061065b575b5001600f5f5260205f205f5b8381106106475761052085610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600c5483600c55808410610617575b500190600c5f5260205f20915f5b8281106106035760405161483f9081610b5e8239608051818181611abd01528181611d0e0152818161206101526125bf015260a051818181610f130152610f7f015260c05181818161134801526116a6015260e0518181816105ac01528181610c550152818161105d0152818161136e015281816114be0152611b9701526101005181818161031701526105f70152610120518181816108050152610a720152f35b600190602083519301928186015501610561565b61062d90600c5f5284845f209182019101610b0b565b83610553565b634e487b7160e01b5f52604160045260245ffd5b600190602084519401938184015501610510565b61067190600f5f5284845f209182019101610b0b565b84610504565b6001906020845194019381840155016104c0565b6106a190600d5f5284845f209182019101610b0b565b846104b4565b60018101908181116106da576001600160a01b03906106c69084610b49565b51165f52600e6020528060405f2055610470565b634e487b7160e01b5f52601160045260245ffd5b5f80fd5b506001600160a01b038216151561043b565b60405162461bcd60e51b815260206004820152601960248201527f506f6f6c3a2070726f746f636f6c20666565203e3d20343025000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601560248201527f506f6f6c3a20666c61736820666565203e3d20312500000000000000000000006044820152606490fd5b600190602084519401938184015501610379565b6107b89060065f5284845f209182019101610b0b565b5f61036d565b60405162461bcd60e51b81526020600482015260116024820152700a0deded87440cccacae640d8cadccee8d607b1b6044820152606490fd5b82516001600160a01b031681830155602090920191600101610319565b600b5f52610848907f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9908101908401610b0b565b5f61030e565b60405162461bcd60e51b815260206004820152601360248201527f506f6f6c3a206e656564203e31206173736574000000000000000000000000006044820152606490fd5b015190505f806102bf565b60055f9081528281209350601f198516905b8181106108ec57509084600195949392106108d4575b505050811b016005556102d4565b01515f1960f88460031b161c191690555f80806108c6565b929360206001819287860151815501950193016108b0565b6109309060055f5260205f20601f850160051c81019160208610610936575b601f0160051c0190610b0b565b5f6102a9565b9091508190610923565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610295565b015190505f8061025d565b60045f9081528281209350601f198516905b8181106109b7575090846001959493921061099f575b505050811b01600455610272565b01515f1960f88460031b161c191690555f8080610991565b9293602060018192878601518155019501930161097b565b60045f52610a17907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f850160051c8101916020861061093657601f0160051c0190610b0b565b5f610247565b91607f1691610233565b631e4fbdf760e01b5f525f60045260245ffd5b8151815260209182019101610130565b82516001600160a01b03811681036106ee578152602092830192016100cc565b6040519190601f01601f191682016001600160401b0381118382101761063357604052565b51906001600160a01b03821682036106ee57565b81601f820112156106ee578051906001600160401b03821161063357610ad2601f8301601f1916602001610a6a565b92828452602083830101116106ee57815f9260208093018386015e8301015290565b6001600160401b0381116106335760051b60200190565b818110610b16575050565b5f8155600101610b0b565b90610b2e6100a783610af4565b8281528092610b3f601f1991610af4565b0190602036910137565b80518210156103cd5760209160051b01019056fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c908163017504b6146128c357508063017cf6611461283157806306fdde03146126e8578063095ea7b3146125e35780630d246214146125755780630eeee6271461191757806318160ddd146118db5780631f3a0e411461189a57806323b872dd14611703578063313ce567146116c957806331596a6a1461167057806341c0e1b5146115da578063476e44b614611519578063491e7998146113f15780635cffe9de146112115780636863f5bc146110805780636b4082d1146110275780636b7b911214610fa55780636bba3f2f14610f495780636d8d0ff314610e8e5780636ff97f1d14610d8e57806370a0823114610d2b578063715018a614610c8f57806379a68d5314610b6b5780638da5cb5b14610b1a5780638e499bcf14610ade578063939f5ea414610a965780639517606614610a2757806395d89b41146108cd5780639af1d35a1461082e578063a1af5b9a14610765578063a9059cbb14610715578063b3f1c93d14610648578063cb717f3a146104f3578063cce516b7146104a1578063d516b8c614610416578063dd62ed3e1461039d578063e4b50cb81461033b578063f0d1ae4f146102cc5763f2fde38b0361000f57346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff6102286129d2565b61023061301e565b16801561029d5773ffffffffffffffffffffffffffffffffffffffff8254827fffffffffffffffffffffffff00000000000000000000000000000000000000008216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b6024827f1e4fbdf700000000000000000000000000000000000000000000000000000000815280600452fd5b80fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff61038d600435612aa2565b90549060031b1c16604051908152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff60406103ec6129d2565b92826103f66129f5565b9416815260026020522091165f52602052602060405f2054604051908152f35b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043590602435916064359182600f0b83036102c95761049d61047985858561046f8382613143565b9260443591612d3d565b92505050604093919351938493846040919493926060820195825260208201520152565b0390f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff60105416604051908152f35b5060a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761049d61062b61061c61052f6129d2565b6105376129f5565b60443573ffffffffffffffffffffffffffffffffffffffff6105588261306a565b9281604051957f3dd3c8050000000000000000000000000000000000000000000000000000000060208801521660248601521660448401526064830152606435608483015260843560a483015260c48201527f000000000000000000000000000000000000000000000000000000000000000060e482015260e481526105e061010482612a61565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001661308a565b60208082518301019101612cd1565b604080519384526020840192909252908201529081906060820190565b5060807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f161067e6129d2565b73ffffffffffffffffffffffffffffffffffffffff61069b6129f5565b81604051937fb3f1c93d00000000000000000000000000000000000000000000000000000000602086015216602484015216604482015260443560648201526064356084820152608481526105e060a482612a61565b602081519181808201938492010103126107115760209051604051908152f35b5f80fd5b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761075a6107506129d2565b6024359033612ef9565b602060405160018152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761082a73ffffffffffffffffffffffffffffffffffffffff60105416604051907f2a54db010000000000000000000000000000000000000000000000000000000060208301526024820152602481526107ee604482612a61565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001661308a565b5080f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760405180916020600654928381520191600682527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f915b8181106108b75761049d856108ab81870382612a61565b60405191829182612951565b8254845260209093019260019283019201610894565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576040519080600554908160011c91600181168015610a1d575b6020841081146109f0578386529081156109ab575060011461094e575b61049d8461094281860382612a61565b6040519182918261298a565b600581527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0939250905b8082106109915750909150810160200161094282610932565b919260018160209254838588010152019101909291610978565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208087019190915292151560051b850190920192506109429150839050610932565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b92607f1692610915565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020610ad6602435600435613143565b604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600b54604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b5060e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610b9e6129d2565b90610ba76129f5565b906044356064356084359182600f0b809303610c8b5760c435938415158095036102c95761049d61062b61061c89898989898973ffffffffffffffffffffffffffffffffffffffff610bf98383612cec565b9581604051987f8a3d858d0000000000000000000000000000000000000000000000000000000060208b01521660248901521660448701526064860152608485015260a484015260a43560c484015260e48301526101048201527f000000000000000000000000000000000000000000000000000000000000000061012482015261012481526107ee61014482612a61565b8380fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610cc661301e565b8073ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604060209173ffffffffffffffffffffffffffffffffffffffff610d7d6129d2565b168152600183522054604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604051806020600b5491828152018091600b85527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db990855b818110610e625750505082610e0b910383612a61565b604051928392602084019060208552518091526040840192915b818110610e33575050500390f35b825173ffffffffffffffffffffffffffffffffffffffff16845285945060209384019390920191600101610e25565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610df5565b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f1610ec46129d2565b73ffffffffffffffffffffffffffffffffffffffff604051917fc5eabfb900000000000000000000000000000000000000000000000000000000602084015216602482015260243560448201527f0000000000000000000000000000000000000000000000000000000000000000600f0b6064820152606481526105e0608482612a61565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f0000000000000000000000000000000000000000000000000000000000000000600f0b8152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610ff26129d2565b610ffa61301e565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000601054161760105580f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c95760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576110b86129d2565b6110c06129f5565b90608435801515809103610c8b5773ffffffffffffffffffffffffffffffffffffffff6111429381604051947f6863f5bc0000000000000000000000000000000000000000000000000000000060208701521660248501521660448301526044356064830152606435608483015260a482015260a481526105e060c482612a61565b805181019060208181840193031261120d5760208101519067ffffffffffffffff8211610c8b57019181603f840112156102c95760208301519267ffffffffffffffff84116111e0578360051b91604051946111a16020850187612a61565b855260208080870194840101019384116102c95750604001905b8282106111d0576040518061049d8682612951565b81518152602091820191016111bb565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8280fd5b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043573ffffffffffffffffffffffffffffffffffffffff81168091036113e95761126a6129f5565b60643567ffffffffffffffff8111610c8b5736602382011215610c8b5780600401359067ffffffffffffffff82116113ed5736602483830101116113ed576113c3937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f846107ee9560246101049673ffffffffffffffffffffffffffffffffffffffff6040519a8b987fe49cd4750000000000000000000000000000000000000000000000000000000060208b0152848a0152166044880152604435606488015260c060848801528260e48801520186860137888582860101527f000000000000000000000000000000000000000000000000000000000000000060a48501527f000000000000000000000000000000000000000000000000000000000000000060c48501520116810103017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612a61565b6020818051810103126113e957602001518015158091036113e957602090604051908152f35b5080fd5b8480fd5b50346102c95760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576114296129d2565b6114316129f5565b906064359160a4358015158091036113ed578373ffffffffffffffffffffffffffffffffffffffff6114656114f49661306a565b9381604051967f8d01fa440000000000000000000000000000000000000000000000000000000060208901521660248701521660448501526044356064850152608484015260843560a484015260c483015260e48201527f000000000000000000000000000000000000000000000000000000000000000061010482015261010481526105e061012482612a61565b6040818051810103126113e95780604060208193015191015182519182526020820152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576060602060405161155881612a18565b838152015260405161156981612a18565b600954600f0b8152611579612c3d565b906020810191825260405192839260208452606084019251600f0b6020850152519160408085015282518091526020608085019301915b8181106115be575050500390f35b8251600f0b8452859450602093840193909201916001016115b0565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761161161301e565b60085460ff811615611621575080f35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001176008557f0f8eeedbc400fd6686703559f58d1e6143fdaed533f19a86c93d67a2fe4fb3318180a180f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405160128152f35b50346102c95760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761173b6129d2565b6117436129f5565b6044359173ffffffffffffffffffffffffffffffffffffffff811680855260026020526040852073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f2054907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82106117c0575b505061075a9350612ef9565b84821061186657801561183a57331561180e578560409161075a975260026020522073ffffffffffffffffffffffffffffffffffffffff33165f526020528360405f20910390555f806117b4565b6024867f94280d6200000000000000000000000000000000000000000000000000000000815280600452fd5b6024867fe602df0500000000000000000000000000000000000000000000000000000000815280600452fd5b60648686847ffb8f41b200000000000000000000000000000000000000000000000000000000835233600452602452604452fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060ff600854166040519015158152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600354604051908152f35b506101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107115761194b6129d2565b906024357fffffffff00000000000000000000000000000000000000000000000000000000811691828203610711576044359273ffffffffffffffffffffffffffffffffffffffff84169283850361071157606435936084359660c43580600f0b810361071157610104359060e43582151583036107115760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00541461254d5760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005560ff600854166124ef5780159081156124e4575b501561248657611a4390611a388b8a612cec565b9060a4358c8b612d3d565b9b859d9596949e9293915073ffffffffffffffffffffffffffffffffffffffff611a6c82612aa2565b90549060031b1c169973ffffffffffffffffffffffffffffffffffffffff611a9385612aa2565b90549060031b1c169b155f146122d95750878a73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001698898214806122cf575b156121f857505050863b15610711575f8e976004604051809a81937fd0e30db00000000000000000000000000000000000000000000000000000000083525af19687156121ed578f908f908f996121d6575b50611b70611b92915b611b6b611b4e86612ae7565b90549060031b1c611b5e87612aff565b90549060031b1c90612b81565b612b81565b91611b8d611b7d87612ae7565b90549060031b1c611b5e88612aff565b612b47565b908d987f000000000000000000000000000000000000000000000000000000000000000090811515806121cd575b612144575b5050611c6391611c45611c06611c5a93611bf0611be188612aff565b90549060031b1c821015612bd8565b611bf987612aff565b90549060031b1c90612b47565b611c0f86612ae7565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b611c51611be187612aff565b611bf986612aff565b611c0f85612ae7565b8b82600f0b13156120e6578b84600f0b131561208857611cec93611cd482611cac611ca6611cac96611c97611ca697612eb9565b90549060031b1c600f0b613210565b91612eb9565b9091906fffffffffffffffffffffffffffffffff83549160031b928116831b921b1916179055565b611cdd84612eb9565b90549060031b1c600f0b613268565b80612049575b15611f835773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b15611f7f5787809160248d60405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af18015611f74579188918c93611f56575b5081809381925af13d15611f51573d67ffffffffffffffff8111611f245760405190611dd160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160183612a61565b81528760203d92013e5b15611ec6577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a0915b611e10818a612b47565b73ffffffffffffffffffffffffffffffffffffffff604051931683528a60208401528b604084015260608301526080820152a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015611e95575b50505061049d90604051938493846040919493926060820195825260208201520152565b8280809381938290611ebd575b3390f115611eb1578080611e71565b604051903d90823e3d90fd5b506108fc611ea2565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b611ddb565b611f639193508290612a61565b611f7057868a915f611d7d565b8680fd5b6040513d8a823e3d90fd5b8780fd5b506040517fa9059cbb0000000000000000000000000000000000000000000000000000000087528360045289602452602087604481808a5af1906001885114821615612028575b60405215611ffc577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a091611e06565b602486867f5274afe7000000000000000000000000000000000000000000000000000000008252600452fd5b90600181151661204057863b15153d15161690611fca565b503d87823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168614611cf2565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a20616d6f756e744f7574203c3d20300000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4d53523a20616d6f756e74496e203c3d2030000000000000000000000000006044820152fd5b611c5a929a50611c06620f4240612162611c639694611c4594612b8e565b049b8c612175575b93505050918f611bc5565b6121c88d6121946121858a612aff565b91909283548360031b1c612b81565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b61216a565b50801515611bc0565b6121e3919e505f90612a61565b5f9c611b70611b39565b6040513d5f823e3d90fd5b60209293949596979899505f80809360649373ffffffffffffffffffffffffffffffffffffffff604051987f23b872dd00000000000000000000000000000000000000000000000000000000855216600452306024526044525af19060015f51148216156122ae575b6040525f6060521561228257908b95949392918e611b928f611b7090611b42565b887f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9060018115166122c6578a3b15153d15161690612261565b503d5f823e3d90fd5b5080341015611ae7565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529197506020826024818e5afa9182156121ed578f905f9361244e575b5060249291612352916040519160208301528d8583015260448201526044815261234c606482612a61565b8a6131ed565b5060208b604051938480927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa80156121ed578f925f91612415575b50906123a291612b47565b036123b7578b958e611b928f611b7090611b42565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e742066756e647300000000000000000000000000006044820152fd5b919250506020813d602011612446575b8161243260209383612a61565b8101031261071157518e91906123a2612397565b3d9150612425565b9250506020823d60201161247e575b8161246a60209383612a61565b81010312610711579051908e612352612321565b3d915061245d565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f737761703a20646561646c696e652065786365656465640000000000000000006044820152fd5b90504211155f611a24565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346107115760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107115761261a6129d2565b6024359033156126bc5773ffffffffffffffffffffffffffffffffffffffff1690811561269057335f52600260205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576040515f6004548060011c90600181168015612827575b6020831081146127fa578285529081156127b8575060011461275a575b61049d8361094281850382612a61565b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b80821061279e5750909150810160200161094261274a565b919260018160209254838588010152019101909291612786565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b84019091019150610942905061274a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f169161272d565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157604051806020600d54918281520190600d5f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5905f5b8181106128ad5761049d856108ab81870382612a61565b8254845260209093019260019283019201612896565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157600c548082526020820190600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7905f5b81811061293b5761049d856108ab81870382612a61565b8254845260209093019260019283019201612924565b60206040818301928281528451809452019201905f5b8181106129745750505090565b8251845260209384019390920191600101612967565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6040810190811067ffffffffffffffff821117612a3457604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612a3457604052565b600b54811015612aba57600b5f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600f54811015612aba57600f5f5260205f2001905f90565b600c54811015612aba57600c5f5260205f2001905f90565b600d54811015612aba57600d5f5260205f2001905f90565b600654811015612aba5760065f5260205f2001905f90565b91908203918211612b5457565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b91908201809211612b5457565b81810292918115918404141715612b5457565b8115612bab570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b15612bdf57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f62616c616e6365203c2070726f746f636f6c206f7765640000000000000000006044820152fd5b60405190600a548083528260208101600a5f5260205f20925f905b806001830110612ca557612c7e945491818110612c91575b10612c80575b500383612a61565b565b60801d600f0b81526020015f612c76565b92602060019184600f0b8152019301612c70565b9160029193506040600191865480600f0b825260801d600f0b6020820152019401920185929391612c58565b90816060910312610711578051916040602083015192015190565b9190826103e8026103e881048403612b545781612d0891612b81565b90815f52600760205260405f2054938415612d2257505050565b612d2d929450613143565b915f5260076020528160405f2055565b92949394919091612d69612d518784613160565b9050612d5c86612b17565b90549060031b1c906132be565b905f82600f0b1315612e5b57612d8f918486600954600f0b612d89612c3d565b90613557565b919092612dae8394612da18197612b17565b90549060031b1c90613182565b925f92849880612e3a575b508811612ddc57612dcc612dd992612b17565b90549060031b1c906134e8565b94565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f737761703a207472616e736665722065786365656473206d61780000000000006044820152fd5b909850612e49919350846131b4565b91612e548385612b81565b975f612db9565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761703a20696e70757420746f6f20736d616c6c20616674657220666565006044820152fd5b90600a54821015612aba57600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b73ffffffffffffffffffffffffffffffffffffffff16908115612ff25773ffffffffffffffffffffffffffffffffffffffff16918215612fc657815f52600160205260405f2054818110612f9457817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f52600184520360405f2055845f526001825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff5f5416330361303e57565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b600654156130855761307b90612b2f565b90549060031b1c90565b505f90565b905f8091602081519101845af48080613130575b156130b05750506130ad6132a5565b90565b156130f75773ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b3d15613108576040513d5f823e3d90fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b503d15158061309e5750813b151561309e565b90611b5e6131536130ad93612b2f565b90549060031b1c91612b2f565b9190801561317c576131756130ad91846131b4565b8093612b47565b505f9190565b61319661318f83836134e8565b92836132be565b90600f0b90600f0b126131a65790565b60018101809111612b545790565b9080156131e7576131c491612b8e565b620f4240810190818111612b5457620f423f01908111612b5457620f4240900490565b50505f90565b905f809160208151910182855af1808061313057156130b05750506130ad6132a5565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061324e575b1561071157600f0b90565b506f7fffffffffffffffffffffffffffffff811315613243565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061324e571561071157600f0b90565b604051903d82523d5f602084013e60203d830101604052565b81156107115777ffffffffffffffffffffffffffffffffffffffffffffffff811161333657906132f09160401b612ba1565b6fffffffffffffffffffffffffffffffff8111610711576fffffffffffffffffffffffffffffffff166f7fffffffffffffffffffffffffffffff811161071157600f0b90565b60c09181831c80936401000000008210156134db575b600282620100006133d99410156134cf575b6101008110156134c3575b60108110156134b7575b60048110156134ac575b10156134a4575b8360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b612ba1565b926fffffffffffffffffffffffffffffffff8411610711578160801c8402906fffffffffffffffffffffffffffffffff8316850290809460401b9082821061347a575b5003928160801b91828510613451575b60801c036134465761343e9203612ba1565b905b016132f0565b505050600190613440565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019061342c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f61341c565b600101613384565b91810191811c61337d565b6004928301921c613373565b6008928301921c613369565b6010928301921c61335e565b505060e082811c9061334c565b81156131e757600f0b5f8112610711576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116107115760401b81198111610711570190565b8051821015612aba5760209160051b010190565b955f959194939092849290875b875189101561358f5761358760019161357d8b8b613543565b51600f0b90613210565b980197613564565b909294975097909294975f81600f0b13156139cd576135ad91613a2b565b9384600f0b80156107115770010000000000000000000000000000000005917fffffffffffffffffffffffffffffffff80000000000000000000000000000000831215806139b3575b15610711576136326136379161362d61361595600f0b9586928b613543565b51600f0b613623898c613543565b51600f0b90613268565b613a2b565b613a6b565b9280600f0b905f8213613823575b50509061365191613a2b565b80600f0b68200000000000000000811361379f577fffffffffffffffffffffffffffffffff800000000000000000000000000000001461071157613699905f03600f0b613a6b565b600f0b6801000000000000000003907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082121580613785575b15610711576136e491600f0b90613a2b565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061376b575b1561071157600f0b925f84131561375757505061373b61374192613ac8565b90613a2b565b905f82600f0b131561374f57565b5f9250829150565b9091506137649250613543565b51600f0b90565b506f7fffffffffffffffffffffffffffffff81131561371c565b506f7fffffffffffffffffffffffffffffff8213156136d2565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4c4d53523a20612f6220746f6f206c617267652028776f756c64206f7665726660448201527f6c6f7720657870290000000000000000000000000000000000000000000000006064820152fd5b84600f9a939a0b8092131561392f5781156107115760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613915575b1561071157600f0b5f8113156138b75761388561388b91613ac8565b86613a2b565b9780600f0b89600f0b125f146138ab57505061365190875b90915f613645565b613651929198506138a3565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4d53523a20726174696f3c3d300000000000000000000000000000000000006044820152fd5b506f7fffffffffffffffffffffffffffffff811315613869565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4c4d53523a206c696d69745072696365203c3d2063757272656e74207072696360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152fd5b506f7fffffffffffffffffffffffffffffff8313156135f6565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061324e571561071157600f0b90565b600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000811261308557700171547652b82fe1777d0ffda0d23a7d126130ad910260801d600f0b613bf5565b600f0b5f811315610711575f908068010000000000000000821215613be8575b806401000000006002921215613bdc575b62010000811215613bd0575b610100811215613bc4575b6010811215613bb8575b6004811215613bad575b1215613ba3575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f8313613b8757506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d90565b8002908160ff1c9182607f011c918302019160011d9190613b62565b9060010190613b2b565b92810192811d613b24565b6004938401931d613b1a565b6008938401931d613b10565b6010938401931d613b05565b6020938401931d613af9565b506040915080821d613ae8565b80600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000081126131e7576f80000000000000000000000000000000915f6780000000000000008216600f0b136147f1575b5f6740000000000000008216600f0b136147d4575b5f6720000000000000008216600f0b136147b7575b5f6710000000000000008216600f0b1361479a575b5f6708000000000000008216600f0b1361477d575b5f6704000000000000008216600f0b13614760575b5f6702000000000000008216600f0b13614743575b5f6701000000000000008216600f0b13614726575b5f66800000000000008216600f0b13614709575b5f66400000000000008216600f0b136146ec575b5f66200000000000008216600f0b136146cf575b5f66100000000000008216600f0b136146b2575b5f66080000000000008216600f0b13614695575b5f66040000000000008216600f0b13614678575b5f66020000000000008216600f0b1361465b575b5f66010000000000008216600f0b1361463e575b5f658000000000008216600f0b13614621575b5f654000000000008216600f0b13614604575b5f652000000000008216600f0b136145e7575b5f651000000000008216600f0b136145ca575b5f650800000000008216600f0b136145ad575b5f650400000000008216600f0b13614590575b5f650200000000008216600f0b13614573575b5f650100000000008216600f0b13614556575b5f6480000000008216600f0b13614539575b5f6440000000008216600f0b1361451c575b5f6420000000008216600f0b136144ff575b5f6410000000008216600f0b136144e2575b5f6408000000008216600f0b136144c5575b5f6404000000008216600f0b136144a8575b5f6402000000008216600f0b1361448b575b5f6401000000008216600f0b1361446e575b5f63800000008216600f0b13614451575b5f63400000008216600f0b13614434575b5f63200000008216600f0b13614417575b5f63100000008216600f0b136143fa575b5f63080000008216600f0b136143dd575b5f63040000008216600f0b136143c0575b5f63020000008216600f0b136143a3575b5f63010000008216600f0b13614386575b5f628000008216600f0b13614369575b5f624000008216600f0b1361434c575b5f622000008216600f0b1361432f575b5f621000008216600f0b13614312575b5f620800008216600f0b136142f5575b5f620400008216600f0b136142d8575b5f620200008216600f0b136142bb575b5f620100008216600f0b1361429e575b5f6180008216600f0b13614281575b5f6140008216600f0b13614264575b5f6120008216600f0b13614247575b5f6110008216600f0b1361422a575b5f6108008216600f0b1361420d575b5f6104008216600f0b136141f0575b5f6102008216600f0b136141d3575b5f6101008216600f0b136141b6575b5f60808216600f0b13614199575b5f60408216600f0b1361417c575b5f60208216600f0b1361415f575b5f60108216600f0b13614142575b5f60088216600f0b13614125575b5f60048216600f0b13614108575b5f60028216600f0b136140ea575b60015f9116600f0b136140cd575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161071157600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c906140a3565b7001000000000000000162e42fefa39ef35890920260801c91614095565b9170010000000000000002c5c85fdf473de6b20260801c91614087565b91700100000000000000058b90bfbe8e7bcd6d0260801c91614079565b917001000000000000000b17217f7d1cf79afa0260801c9161406b565b91700100000000000000162e42fefa39ef366f0260801c9161405d565b917001000000000000002c5c85fdf473de6eca0260801c9161404f565b9170010000000000000058b90bfbe8e7bce5440260801c91614041565b91700100000000000000b17217f7d1cf79e9490260801c91614033565b9170010000000000000162e42fefa39ef44d910260801c91614024565b91700100000000000002c5c85fdf473dea871f0260801c91614015565b917001000000000000058b90bfbe8e7bdcbe2e0260801c91614006565b9170010000000000000b17217f7d1cf7d83c1a0260801c91613ff7565b917001000000000000162e42fefa39f02b772c0260801c91613fe8565b9170010000000000002c5c85fdf473e242ea380260801c91613fd9565b91700100000000000058b90bfbe8e7cc35c3f00260801c91613fca565b917001000000000000b17217f7d1cfb72b45e10260801c91613fbb565b91700100000000000162e42fefa39fe95583c20260801c91613fab565b917001000000000002c5c85fdf4741bea6e77e0260801c91613f9b565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c91613f8b565b91700100000000000b17217f7d1d351a389d400260801c91613f7b565b9170010000000000162e42fefa3ae53369388c0260801c91613f6b565b91700100000000002c5c85fdf477b662b269450260801c91613f5b565b917001000000000058b90bfbe8f71cb4e4b33d0260801c91613f4b565b9170010000000000b17217f7d20cf927c8e94c0260801c91613f3b565b917001000000000162e42fefa494f1478fde050260801c91613f2a565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c91613f19565b91700100000000058b90bfbe9ddbac5e109cce0260801c91613f08565b917001000000000b17217f7d5a7716bba4a9ae0260801c91613ef7565b91700100000000162e42fefb2fed257559bdaa0260801c91613ee6565b917001000000002c5c85fdf84bd62ae30a74cc0260801c91613ed5565b9170010000000058b90bfbf8479bd5a81b51ad0260801c91613ec4565b91700100000000b17217f80f4ef5aadda455540260801c91613eb3565b9170010000000162e42ff0999ce3541b9fffcf0260801c91613ea1565b91700100000002c5c85fe31f35a6a30da1be500260801c91613e8f565b917001000000058b90bfcdee5acd3c1cedc8230260801c91613e7d565b9170010000000b17217fba9c739aa5819f44f90260801c91613e6b565b917001000000162e42fff037df38aa2b219f060260801c91613e59565b9170010000002c5c8601cc6b9e94213c72737a0260801c91613e47565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91613e35565b917001000000b1721835514b86e6d96efd1bfe0260801c91613e23565b91700100000162e430e5a18f6119e3c02282a50260801c91613e10565b917001000002c5c863b73f016468f6bac5ca2b0260801c91613dfd565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91613dea565b91700100000b1721bcfc99d9f890ea069117630260801c91613dd7565b9170010000162e43f4f831060e02d839a9d16d0260801c91613dc4565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c91613db1565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c91613d9e565b9170010000b17255775c040618bf4a4ade83fc0260801c91613d8b565b917001000162e525ee054754457d59952920260260801c91613d77565b9170010002c5cc37da9491d0985c348c68e7b30260801c91613d63565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91613d4f565b917001000b175effdc76ba38e31671ca9397250260801c91613d3b565b91700100162f3904051fa128bca9c55c31e5df0260801c91613d27565b917001002c605e2e8cec506d21bfc89a23a00f0260801c91613d13565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c91613cff565b91700100b1afa5abcbed6129ab13ec11dc95430260801c91613ceb565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c91613cd6565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c91613cc1565b917001059b0d31585743ae7c548eb68ca417fd0260801c91613cac565b9170010b5586cf9890f6298b92b71842a983630260801c91613c97565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c91613c82565b917001306fe0a31b7152de8d5a46305c85edec0260801c91613c6d565b6fb504f333f9de6484597d89b3754abe9f9250613c5856fea26469706673582212201f3500b860bc62657692a3183901310b4a9d587e54c35da242d2bb0118485b5364736f6c634300081e0033a2646970667358221220c1225d048f8eb2be410725b5e006860923c6057c760a4f91fa9ee56884d8281264736f6c634300081e0033","sourceMap":"957:810:52:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c636ae73ce314610024575f80fd5b34610373576101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103735760043573ffffffffffffffffffffffffffffffffffffffff81168091036103735760243567ffffffffffffffff8111610373576100959036906004016103f8565b9060443567ffffffffffffffff8111610373576100b69036906004016103f8565b6064359067ffffffffffffffff82116103735736602383011215610373578160040135916100eb6100e684610468565b6103b4565b9060208285815201906024829560051b8201019036821161037357602401915b8183106103875750505060843580600f0b8091036103735760a43567ffffffffffffffff81116103735736602382011215610373578060040135946101526100e687610468565b91602083888152016024819860051b8301019136831161037357602401905b82821061037757505050610104359173ffffffffffffffffffffffffffffffffffffffff831680930361037357610124359373ffffffffffffffffffffffffffffffffffffffff851680950361037357610144359573ffffffffffffffffffffffffffffffffffffffff871680970361037357610164359773ffffffffffffffffffffffffffffffffffffffff8916809903610373576040519b8c9b8c9261539d8094019e8f9081109067ffffffffffffffff1017610346576102528f92938f94602096610260966104c49039845261018086850152610180840190610480565b916040818403910152610480565b8c810360608e01529151808352910193905f5b81811061031a575050509060209160808b015289830360a08b015251918281520195905f5b81811061030457505050918596916101609360c43560c085015260e43560e0850152610100840152610120830152610140820152015203905ff080156102f95760209073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b6040513d5f823e3d90fd5b8251885260209788019790920191600101610298565b825173ffffffffffffffffffffffffffffffffffffffff16865260209586019590920191600101610273565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f80fd5b8135815260209182019101610171565b823573ffffffffffffffffffffffffffffffffffffffff811681036103735781526020928301920161010b565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff82111761034657604052565b81601f820112156103735780359067ffffffffffffffff82116103465761044660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116016103b4565b928284526020838301011161037357815f926020809301838601378301015290565b67ffffffffffffffff81116103465760051b60200190565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f858286010152011601019056fe610140604052346106ee5761539d8038038061001a81610a6a565b9283398101610180828203126106ee5761003382610a8f565b60208301516001600160401b0381116106ee5782610052918501610aa3565b60408401519091906001600160401b0381116106ee5783610074918601610aa3565b60608501519094906001600160401b0381116106ee5781019284601f850112156106ee578351956100ac6100a788610af4565b610a6a565b9460208689815201906020829960051b820101908882116106ee57602001915b818310610a4a57505050608083015180600f0b81036106ee5760a08401516001600160401b0381116106ee5784019680601f890112156106ee5787516101146100a782610af4565b986020808b848152019260051b8201019283116106ee57602001905b828210610a3a5750505060c08401519760e0850151926101536101008701610a8f565b610120870151979095906001600160a01b03891689036106ee57610140880151976001600160a01b03891689036106ee576101600151986001600160a01b038a168a036106ee5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00556080526001600160a01b03168015610a27575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a38051906001600160401b0382116106335760045490600182811c92168015610a1d575b60208310146109405781601f8493116109cf575b50602090601f8311600114610969575f9261095e575b50508160011b915f199060031b1c1916176004555b8051906001600160401b0382116106335760055490600182811c92168015610954575b60208310146109405781601f849311610904575b50602090601f831160011461089e575f92610893575b50508160011b915f199060031b1c1916176005555b60018751111561084e578651906001600160401b0382116106335768010000000000000000821161063357600b5482600b55808310610814575b50600b5f5260205f205f5b8381106107f7575050505060a05285518551036107be5761033a8651610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600654836006558084106107a2575b500160065f5260205f205f5b83811061078e57505050505f5b86518110156104185761271061039c8289610b49565b5110156103e1576103ad8188610b49565b51906006548110156103cd5760019160065f528160205f20015501610386565b634e487b7160e01b5f52603260045260245ffd5b60405162461bcd60e51b815260206004820152600f60248201526e506f6f6c3a20666565203e3d20312560881b6044820152606490fd5b50866127108110156107495760c05262061a8081101561070457801580156106f2575b156106ee5760e052601080546001600160a01b0319166001600160a01b039290921691909117905561012052610100528051905f5b8281106106a7578261048181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600d5483600d5580841061068b575b5001600d5f5260205f205f5b83811061067757846104d181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600f5483600f5580841061065b575b5001600f5f5260205f205f5b8381106106475761052085610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600c5483600c55808410610617575b500190600c5f5260205f20915f5b8281106106035760405161483f9081610b5e8239608051818181611abd01528181611d0e0152818161206101526125bf015260a051818181610f130152610f7f015260c05181818161134801526116a6015260e0518181816105ac01528181610c550152818161105d0152818161136e015281816114be0152611b9701526101005181818161031701526105f70152610120518181816108050152610a720152f35b600190602083519301928186015501610561565b61062d90600c5f5284845f209182019101610b0b565b83610553565b634e487b7160e01b5f52604160045260245ffd5b600190602084519401938184015501610510565b61067190600f5f5284845f209182019101610b0b565b84610504565b6001906020845194019381840155016104c0565b6106a190600d5f5284845f209182019101610b0b565b846104b4565b60018101908181116106da576001600160a01b03906106c69084610b49565b51165f52600e6020528060405f2055610470565b634e487b7160e01b5f52601160045260245ffd5b5f80fd5b506001600160a01b038216151561043b565b60405162461bcd60e51b815260206004820152601960248201527f506f6f6c3a2070726f746f636f6c20666565203e3d20343025000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601560248201527f506f6f6c3a20666c61736820666565203e3d20312500000000000000000000006044820152606490fd5b600190602084519401938184015501610379565b6107b89060065f5284845f209182019101610b0b565b5f61036d565b60405162461bcd60e51b81526020600482015260116024820152700a0deded87440cccacae640d8cadccee8d607b1b6044820152606490fd5b82516001600160a01b031681830155602090920191600101610319565b600b5f52610848907f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9908101908401610b0b565b5f61030e565b60405162461bcd60e51b815260206004820152601360248201527f506f6f6c3a206e656564203e31206173736574000000000000000000000000006044820152606490fd5b015190505f806102bf565b60055f9081528281209350601f198516905b8181106108ec57509084600195949392106108d4575b505050811b016005556102d4565b01515f1960f88460031b161c191690555f80806108c6565b929360206001819287860151815501950193016108b0565b6109309060055f5260205f20601f850160051c81019160208610610936575b601f0160051c0190610b0b565b5f6102a9565b9091508190610923565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610295565b015190505f8061025d565b60045f9081528281209350601f198516905b8181106109b7575090846001959493921061099f575b505050811b01600455610272565b01515f1960f88460031b161c191690555f8080610991565b9293602060018192878601518155019501930161097b565b60045f52610a17907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f850160051c8101916020861061093657601f0160051c0190610b0b565b5f610247565b91607f1691610233565b631e4fbdf760e01b5f525f60045260245ffd5b8151815260209182019101610130565b82516001600160a01b03811681036106ee578152602092830192016100cc565b6040519190601f01601f191682016001600160401b0381118382101761063357604052565b51906001600160a01b03821682036106ee57565b81601f820112156106ee578051906001600160401b03821161063357610ad2601f8301601f1916602001610a6a565b92828452602083830101116106ee57815f9260208093018386015e8301015290565b6001600160401b0381116106335760051b60200190565b818110610b16575050565b5f8155600101610b0b565b90610b2e6100a783610af4565b8281528092610b3f601f1991610af4565b0190602036910137565b80518210156103cd5760209160051b01019056fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c908163017504b6146128c357508063017cf6611461283157806306fdde03146126e8578063095ea7b3146125e35780630d246214146125755780630eeee6271461191757806318160ddd146118db5780631f3a0e411461189a57806323b872dd14611703578063313ce567146116c957806331596a6a1461167057806341c0e1b5146115da578063476e44b614611519578063491e7998146113f15780635cffe9de146112115780636863f5bc146110805780636b4082d1146110275780636b7b911214610fa55780636bba3f2f14610f495780636d8d0ff314610e8e5780636ff97f1d14610d8e57806370a0823114610d2b578063715018a614610c8f57806379a68d5314610b6b5780638da5cb5b14610b1a5780638e499bcf14610ade578063939f5ea414610a965780639517606614610a2757806395d89b41146108cd5780639af1d35a1461082e578063a1af5b9a14610765578063a9059cbb14610715578063b3f1c93d14610648578063cb717f3a146104f3578063cce516b7146104a1578063d516b8c614610416578063dd62ed3e1461039d578063e4b50cb81461033b578063f0d1ae4f146102cc5763f2fde38b0361000f57346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff6102286129d2565b61023061301e565b16801561029d5773ffffffffffffffffffffffffffffffffffffffff8254827fffffffffffffffffffffffff00000000000000000000000000000000000000008216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b6024827f1e4fbdf700000000000000000000000000000000000000000000000000000000815280600452fd5b80fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff61038d600435612aa2565b90549060031b1c16604051908152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff60406103ec6129d2565b92826103f66129f5565b9416815260026020522091165f52602052602060405f2054604051908152f35b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043590602435916064359182600f0b83036102c95761049d61047985858561046f8382613143565b9260443591612d3d565b92505050604093919351938493846040919493926060820195825260208201520152565b0390f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff60105416604051908152f35b5060a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761049d61062b61061c61052f6129d2565b6105376129f5565b60443573ffffffffffffffffffffffffffffffffffffffff6105588261306a565b9281604051957f3dd3c8050000000000000000000000000000000000000000000000000000000060208801521660248601521660448401526064830152606435608483015260843560a483015260c48201527f000000000000000000000000000000000000000000000000000000000000000060e482015260e481526105e061010482612a61565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001661308a565b60208082518301019101612cd1565b604080519384526020840192909252908201529081906060820190565b5060807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f161067e6129d2565b73ffffffffffffffffffffffffffffffffffffffff61069b6129f5565b81604051937fb3f1c93d00000000000000000000000000000000000000000000000000000000602086015216602484015216604482015260443560648201526064356084820152608481526105e060a482612a61565b602081519181808201938492010103126107115760209051604051908152f35b5f80fd5b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761075a6107506129d2565b6024359033612ef9565b602060405160018152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761082a73ffffffffffffffffffffffffffffffffffffffff60105416604051907f2a54db010000000000000000000000000000000000000000000000000000000060208301526024820152602481526107ee604482612a61565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001661308a565b5080f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760405180916020600654928381520191600682527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f915b8181106108b75761049d856108ab81870382612a61565b60405191829182612951565b8254845260209093019260019283019201610894565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576040519080600554908160011c91600181168015610a1d575b6020841081146109f0578386529081156109ab575060011461094e575b61049d8461094281860382612a61565b6040519182918261298a565b600581527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0939250905b8082106109915750909150810160200161094282610932565b919260018160209254838588010152019101909291610978565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208087019190915292151560051b850190920192506109429150839050610932565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b92607f1692610915565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020610ad6602435600435613143565b604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600b54604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b5060e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610b9e6129d2565b90610ba76129f5565b906044356064356084359182600f0b809303610c8b5760c435938415158095036102c95761049d61062b61061c89898989898973ffffffffffffffffffffffffffffffffffffffff610bf98383612cec565b9581604051987f8a3d858d0000000000000000000000000000000000000000000000000000000060208b01521660248901521660448701526064860152608485015260a484015260a43560c484015260e48301526101048201527f000000000000000000000000000000000000000000000000000000000000000061012482015261012481526107ee61014482612a61565b8380fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610cc661301e565b8073ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604060209173ffffffffffffffffffffffffffffffffffffffff610d7d6129d2565b168152600183522054604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604051806020600b5491828152018091600b85527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db990855b818110610e625750505082610e0b910383612a61565b604051928392602084019060208552518091526040840192915b818110610e33575050500390f35b825173ffffffffffffffffffffffffffffffffffffffff16845285945060209384019390920191600101610e25565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610df5565b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f1610ec46129d2565b73ffffffffffffffffffffffffffffffffffffffff604051917fc5eabfb900000000000000000000000000000000000000000000000000000000602084015216602482015260243560448201527f0000000000000000000000000000000000000000000000000000000000000000600f0b6064820152606481526105e0608482612a61565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f0000000000000000000000000000000000000000000000000000000000000000600f0b8152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610ff26129d2565b610ffa61301e565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000601054161760105580f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c95760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576110b86129d2565b6110c06129f5565b90608435801515809103610c8b5773ffffffffffffffffffffffffffffffffffffffff6111429381604051947f6863f5bc0000000000000000000000000000000000000000000000000000000060208701521660248501521660448301526044356064830152606435608483015260a482015260a481526105e060c482612a61565b805181019060208181840193031261120d5760208101519067ffffffffffffffff8211610c8b57019181603f840112156102c95760208301519267ffffffffffffffff84116111e0578360051b91604051946111a16020850187612a61565b855260208080870194840101019384116102c95750604001905b8282106111d0576040518061049d8682612951565b81518152602091820191016111bb565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8280fd5b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043573ffffffffffffffffffffffffffffffffffffffff81168091036113e95761126a6129f5565b60643567ffffffffffffffff8111610c8b5736602382011215610c8b5780600401359067ffffffffffffffff82116113ed5736602483830101116113ed576113c3937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f846107ee9560246101049673ffffffffffffffffffffffffffffffffffffffff6040519a8b987fe49cd4750000000000000000000000000000000000000000000000000000000060208b0152848a0152166044880152604435606488015260c060848801528260e48801520186860137888582860101527f000000000000000000000000000000000000000000000000000000000000000060a48501527f000000000000000000000000000000000000000000000000000000000000000060c48501520116810103017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612a61565b6020818051810103126113e957602001518015158091036113e957602090604051908152f35b5080fd5b8480fd5b50346102c95760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576114296129d2565b6114316129f5565b906064359160a4358015158091036113ed578373ffffffffffffffffffffffffffffffffffffffff6114656114f49661306a565b9381604051967f8d01fa440000000000000000000000000000000000000000000000000000000060208901521660248701521660448501526044356064850152608484015260843560a484015260c483015260e48201527f000000000000000000000000000000000000000000000000000000000000000061010482015261010481526105e061012482612a61565b6040818051810103126113e95780604060208193015191015182519182526020820152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576060602060405161155881612a18565b838152015260405161156981612a18565b600954600f0b8152611579612c3d565b906020810191825260405192839260208452606084019251600f0b6020850152519160408085015282518091526020608085019301915b8181106115be575050500390f35b8251600f0b8452859450602093840193909201916001016115b0565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761161161301e565b60085460ff811615611621575080f35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001176008557f0f8eeedbc400fd6686703559f58d1e6143fdaed533f19a86c93d67a2fe4fb3318180a180f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405160128152f35b50346102c95760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761173b6129d2565b6117436129f5565b6044359173ffffffffffffffffffffffffffffffffffffffff811680855260026020526040852073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f2054907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82106117c0575b505061075a9350612ef9565b84821061186657801561183a57331561180e578560409161075a975260026020522073ffffffffffffffffffffffffffffffffffffffff33165f526020528360405f20910390555f806117b4565b6024867f94280d6200000000000000000000000000000000000000000000000000000000815280600452fd5b6024867fe602df0500000000000000000000000000000000000000000000000000000000815280600452fd5b60648686847ffb8f41b200000000000000000000000000000000000000000000000000000000835233600452602452604452fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060ff600854166040519015158152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600354604051908152f35b506101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107115761194b6129d2565b906024357fffffffff00000000000000000000000000000000000000000000000000000000811691828203610711576044359273ffffffffffffffffffffffffffffffffffffffff84169283850361071157606435936084359660c43580600f0b810361071157610104359060e43582151583036107115760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00541461254d5760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005560ff600854166124ef5780159081156124e4575b501561248657611a4390611a388b8a612cec565b9060a4358c8b612d3d565b9b859d9596949e9293915073ffffffffffffffffffffffffffffffffffffffff611a6c82612aa2565b90549060031b1c169973ffffffffffffffffffffffffffffffffffffffff611a9385612aa2565b90549060031b1c169b155f146122d95750878a73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001698898214806122cf575b156121f857505050863b15610711575f8e976004604051809a81937fd0e30db00000000000000000000000000000000000000000000000000000000083525af19687156121ed578f908f908f996121d6575b50611b70611b92915b611b6b611b4e86612ae7565b90549060031b1c611b5e87612aff565b90549060031b1c90612b81565b612b81565b91611b8d611b7d87612ae7565b90549060031b1c611b5e88612aff565b612b47565b908d987f000000000000000000000000000000000000000000000000000000000000000090811515806121cd575b612144575b5050611c6391611c45611c06611c5a93611bf0611be188612aff565b90549060031b1c821015612bd8565b611bf987612aff565b90549060031b1c90612b47565b611c0f86612ae7565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b611c51611be187612aff565b611bf986612aff565b611c0f85612ae7565b8b82600f0b13156120e6578b84600f0b131561208857611cec93611cd482611cac611ca6611cac96611c97611ca697612eb9565b90549060031b1c600f0b613210565b91612eb9565b9091906fffffffffffffffffffffffffffffffff83549160031b928116831b921b1916179055565b611cdd84612eb9565b90549060031b1c600f0b613268565b80612049575b15611f835773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b15611f7f5787809160248d60405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af18015611f74579188918c93611f56575b5081809381925af13d15611f51573d67ffffffffffffffff8111611f245760405190611dd160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160183612a61565b81528760203d92013e5b15611ec6577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a0915b611e10818a612b47565b73ffffffffffffffffffffffffffffffffffffffff604051931683528a60208401528b604084015260608301526080820152a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015611e95575b50505061049d90604051938493846040919493926060820195825260208201520152565b8280809381938290611ebd575b3390f115611eb1578080611e71565b604051903d90823e3d90fd5b506108fc611ea2565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b611ddb565b611f639193508290612a61565b611f7057868a915f611d7d565b8680fd5b6040513d8a823e3d90fd5b8780fd5b506040517fa9059cbb0000000000000000000000000000000000000000000000000000000087528360045289602452602087604481808a5af1906001885114821615612028575b60405215611ffc577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a091611e06565b602486867f5274afe7000000000000000000000000000000000000000000000000000000008252600452fd5b90600181151661204057863b15153d15161690611fca565b503d87823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168614611cf2565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a20616d6f756e744f7574203c3d20300000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4d53523a20616d6f756e74496e203c3d2030000000000000000000000000006044820152fd5b611c5a929a50611c06620f4240612162611c639694611c4594612b8e565b049b8c612175575b93505050918f611bc5565b6121c88d6121946121858a612aff565b91909283548360031b1c612b81565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b61216a565b50801515611bc0565b6121e3919e505f90612a61565b5f9c611b70611b39565b6040513d5f823e3d90fd5b60209293949596979899505f80809360649373ffffffffffffffffffffffffffffffffffffffff604051987f23b872dd00000000000000000000000000000000000000000000000000000000855216600452306024526044525af19060015f51148216156122ae575b6040525f6060521561228257908b95949392918e611b928f611b7090611b42565b887f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9060018115166122c6578a3b15153d15161690612261565b503d5f823e3d90fd5b5080341015611ae7565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529197506020826024818e5afa9182156121ed578f905f9361244e575b5060249291612352916040519160208301528d8583015260448201526044815261234c606482612a61565b8a6131ed565b5060208b604051938480927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa80156121ed578f925f91612415575b50906123a291612b47565b036123b7578b958e611b928f611b7090611b42565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e742066756e647300000000000000000000000000006044820152fd5b919250506020813d602011612446575b8161243260209383612a61565b8101031261071157518e91906123a2612397565b3d9150612425565b9250506020823d60201161247e575b8161246a60209383612a61565b81010312610711579051908e612352612321565b3d915061245d565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f737761703a20646561646c696e652065786365656465640000000000000000006044820152fd5b90504211155f611a24565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346107115760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107115761261a6129d2565b6024359033156126bc5773ffffffffffffffffffffffffffffffffffffffff1690811561269057335f52600260205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576040515f6004548060011c90600181168015612827575b6020831081146127fa578285529081156127b8575060011461275a575b61049d8361094281850382612a61565b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b80821061279e5750909150810160200161094261274a565b919260018160209254838588010152019101909291612786565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b84019091019150610942905061274a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f169161272d565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157604051806020600d54918281520190600d5f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5905f5b8181106128ad5761049d856108ab81870382612a61565b8254845260209093019260019283019201612896565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157600c548082526020820190600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7905f5b81811061293b5761049d856108ab81870382612a61565b8254845260209093019260019283019201612924565b60206040818301928281528451809452019201905f5b8181106129745750505090565b8251845260209384019390920191600101612967565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6040810190811067ffffffffffffffff821117612a3457604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612a3457604052565b600b54811015612aba57600b5f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600f54811015612aba57600f5f5260205f2001905f90565b600c54811015612aba57600c5f5260205f2001905f90565b600d54811015612aba57600d5f5260205f2001905f90565b600654811015612aba5760065f5260205f2001905f90565b91908203918211612b5457565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b91908201809211612b5457565b81810292918115918404141715612b5457565b8115612bab570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b15612bdf57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f62616c616e6365203c2070726f746f636f6c206f7765640000000000000000006044820152fd5b60405190600a548083528260208101600a5f5260205f20925f905b806001830110612ca557612c7e945491818110612c91575b10612c80575b500383612a61565b565b60801d600f0b81526020015f612c76565b92602060019184600f0b8152019301612c70565b9160029193506040600191865480600f0b825260801d600f0b6020820152019401920185929391612c58565b90816060910312610711578051916040602083015192015190565b9190826103e8026103e881048403612b545781612d0891612b81565b90815f52600760205260405f2054938415612d2257505050565b612d2d929450613143565b915f5260076020528160405f2055565b92949394919091612d69612d518784613160565b9050612d5c86612b17565b90549060031b1c906132be565b905f82600f0b1315612e5b57612d8f918486600954600f0b612d89612c3d565b90613557565b919092612dae8394612da18197612b17565b90549060031b1c90613182565b925f92849880612e3a575b508811612ddc57612dcc612dd992612b17565b90549060031b1c906134e8565b94565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f737761703a207472616e736665722065786365656473206d61780000000000006044820152fd5b909850612e49919350846131b4565b91612e548385612b81565b975f612db9565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761703a20696e70757420746f6f20736d616c6c20616674657220666565006044820152fd5b90600a54821015612aba57600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b73ffffffffffffffffffffffffffffffffffffffff16908115612ff25773ffffffffffffffffffffffffffffffffffffffff16918215612fc657815f52600160205260405f2054818110612f9457817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f52600184520360405f2055845f526001825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff5f5416330361303e57565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b600654156130855761307b90612b2f565b90549060031b1c90565b505f90565b905f8091602081519101845af48080613130575b156130b05750506130ad6132a5565b90565b156130f75773ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b3d15613108576040513d5f823e3d90fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b503d15158061309e5750813b151561309e565b90611b5e6131536130ad93612b2f565b90549060031b1c91612b2f565b9190801561317c576131756130ad91846131b4565b8093612b47565b505f9190565b61319661318f83836134e8565b92836132be565b90600f0b90600f0b126131a65790565b60018101809111612b545790565b9080156131e7576131c491612b8e565b620f4240810190818111612b5457620f423f01908111612b5457620f4240900490565b50505f90565b905f809160208151910182855af1808061313057156130b05750506130ad6132a5565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061324e575b1561071157600f0b90565b506f7fffffffffffffffffffffffffffffff811315613243565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061324e571561071157600f0b90565b604051903d82523d5f602084013e60203d830101604052565b81156107115777ffffffffffffffffffffffffffffffffffffffffffffffff811161333657906132f09160401b612ba1565b6fffffffffffffffffffffffffffffffff8111610711576fffffffffffffffffffffffffffffffff166f7fffffffffffffffffffffffffffffff811161071157600f0b90565b60c09181831c80936401000000008210156134db575b600282620100006133d99410156134cf575b6101008110156134c3575b60108110156134b7575b60048110156134ac575b10156134a4575b8360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b612ba1565b926fffffffffffffffffffffffffffffffff8411610711578160801c8402906fffffffffffffffffffffffffffffffff8316850290809460401b9082821061347a575b5003928160801b91828510613451575b60801c036134465761343e9203612ba1565b905b016132f0565b505050600190613440565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019061342c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f61341c565b600101613384565b91810191811c61337d565b6004928301921c613373565b6008928301921c613369565b6010928301921c61335e565b505060e082811c9061334c565b81156131e757600f0b5f8112610711576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116107115760401b81198111610711570190565b8051821015612aba5760209160051b010190565b955f959194939092849290875b875189101561358f5761358760019161357d8b8b613543565b51600f0b90613210565b980197613564565b909294975097909294975f81600f0b13156139cd576135ad91613a2b565b9384600f0b80156107115770010000000000000000000000000000000005917fffffffffffffffffffffffffffffffff80000000000000000000000000000000831215806139b3575b15610711576136326136379161362d61361595600f0b9586928b613543565b51600f0b613623898c613543565b51600f0b90613268565b613a2b565b613a6b565b9280600f0b905f8213613823575b50509061365191613a2b565b80600f0b68200000000000000000811361379f577fffffffffffffffffffffffffffffffff800000000000000000000000000000001461071157613699905f03600f0b613a6b565b600f0b6801000000000000000003907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082121580613785575b15610711576136e491600f0b90613a2b565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061376b575b1561071157600f0b925f84131561375757505061373b61374192613ac8565b90613a2b565b905f82600f0b131561374f57565b5f9250829150565b9091506137649250613543565b51600f0b90565b506f7fffffffffffffffffffffffffffffff81131561371c565b506f7fffffffffffffffffffffffffffffff8213156136d2565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4c4d53523a20612f6220746f6f206c617267652028776f756c64206f7665726660448201527f6c6f7720657870290000000000000000000000000000000000000000000000006064820152fd5b84600f9a939a0b8092131561392f5781156107115760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613915575b1561071157600f0b5f8113156138b75761388561388b91613ac8565b86613a2b565b9780600f0b89600f0b125f146138ab57505061365190875b90915f613645565b613651929198506138a3565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4d53523a20726174696f3c3d300000000000000000000000000000000000006044820152fd5b506f7fffffffffffffffffffffffffffffff811315613869565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4c4d53523a206c696d69745072696365203c3d2063757272656e74207072696360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152fd5b506f7fffffffffffffffffffffffffffffff8313156135f6565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061324e571561071157600f0b90565b600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000811261308557700171547652b82fe1777d0ffda0d23a7d126130ad910260801d600f0b613bf5565b600f0b5f811315610711575f908068010000000000000000821215613be8575b806401000000006002921215613bdc575b62010000811215613bd0575b610100811215613bc4575b6010811215613bb8575b6004811215613bad575b1215613ba3575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f8313613b8757506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d90565b8002908160ff1c9182607f011c918302019160011d9190613b62565b9060010190613b2b565b92810192811d613b24565b6004938401931d613b1a565b6008938401931d613b10565b6010938401931d613b05565b6020938401931d613af9565b506040915080821d613ae8565b80600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000081126131e7576f80000000000000000000000000000000915f6780000000000000008216600f0b136147f1575b5f6740000000000000008216600f0b136147d4575b5f6720000000000000008216600f0b136147b7575b5f6710000000000000008216600f0b1361479a575b5f6708000000000000008216600f0b1361477d575b5f6704000000000000008216600f0b13614760575b5f6702000000000000008216600f0b13614743575b5f6701000000000000008216600f0b13614726575b5f66800000000000008216600f0b13614709575b5f66400000000000008216600f0b136146ec575b5f66200000000000008216600f0b136146cf575b5f66100000000000008216600f0b136146b2575b5f66080000000000008216600f0b13614695575b5f66040000000000008216600f0b13614678575b5f66020000000000008216600f0b1361465b575b5f66010000000000008216600f0b1361463e575b5f658000000000008216600f0b13614621575b5f654000000000008216600f0b13614604575b5f652000000000008216600f0b136145e7575b5f651000000000008216600f0b136145ca575b5f650800000000008216600f0b136145ad575b5f650400000000008216600f0b13614590575b5f650200000000008216600f0b13614573575b5f650100000000008216600f0b13614556575b5f6480000000008216600f0b13614539575b5f6440000000008216600f0b1361451c575b5f6420000000008216600f0b136144ff575b5f6410000000008216600f0b136144e2575b5f6408000000008216600f0b136144c5575b5f6404000000008216600f0b136144a8575b5f6402000000008216600f0b1361448b575b5f6401000000008216600f0b1361446e575b5f63800000008216600f0b13614451575b5f63400000008216600f0b13614434575b5f63200000008216600f0b13614417575b5f63100000008216600f0b136143fa575b5f63080000008216600f0b136143dd575b5f63040000008216600f0b136143c0575b5f63020000008216600f0b136143a3575b5f63010000008216600f0b13614386575b5f628000008216600f0b13614369575b5f624000008216600f0b1361434c575b5f622000008216600f0b1361432f575b5f621000008216600f0b13614312575b5f620800008216600f0b136142f5575b5f620400008216600f0b136142d8575b5f620200008216600f0b136142bb575b5f620100008216600f0b1361429e575b5f6180008216600f0b13614281575b5f6140008216600f0b13614264575b5f6120008216600f0b13614247575b5f6110008216600f0b1361422a575b5f6108008216600f0b1361420d575b5f6104008216600f0b136141f0575b5f6102008216600f0b136141d3575b5f6101008216600f0b136141b6575b5f60808216600f0b13614199575b5f60408216600f0b1361417c575b5f60208216600f0b1361415f575b5f60108216600f0b13614142575b5f60088216600f0b13614125575b5f60048216600f0b13614108575b5f60028216600f0b136140ea575b60015f9116600f0b136140cd575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161071157600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c906140a3565b7001000000000000000162e42fefa39ef35890920260801c91614095565b9170010000000000000002c5c85fdf473de6b20260801c91614087565b91700100000000000000058b90bfbe8e7bcd6d0260801c91614079565b917001000000000000000b17217f7d1cf79afa0260801c9161406b565b91700100000000000000162e42fefa39ef366f0260801c9161405d565b917001000000000000002c5c85fdf473de6eca0260801c9161404f565b9170010000000000000058b90bfbe8e7bce5440260801c91614041565b91700100000000000000b17217f7d1cf79e9490260801c91614033565b9170010000000000000162e42fefa39ef44d910260801c91614024565b91700100000000000002c5c85fdf473dea871f0260801c91614015565b917001000000000000058b90bfbe8e7bdcbe2e0260801c91614006565b9170010000000000000b17217f7d1cf7d83c1a0260801c91613ff7565b917001000000000000162e42fefa39f02b772c0260801c91613fe8565b9170010000000000002c5c85fdf473e242ea380260801c91613fd9565b91700100000000000058b90bfbe8e7cc35c3f00260801c91613fca565b917001000000000000b17217f7d1cfb72b45e10260801c91613fbb565b91700100000000000162e42fefa39fe95583c20260801c91613fab565b917001000000000002c5c85fdf4741bea6e77e0260801c91613f9b565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c91613f8b565b91700100000000000b17217f7d1d351a389d400260801c91613f7b565b9170010000000000162e42fefa3ae53369388c0260801c91613f6b565b91700100000000002c5c85fdf477b662b269450260801c91613f5b565b917001000000000058b90bfbe8f71cb4e4b33d0260801c91613f4b565b9170010000000000b17217f7d20cf927c8e94c0260801c91613f3b565b917001000000000162e42fefa494f1478fde050260801c91613f2a565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c91613f19565b91700100000000058b90bfbe9ddbac5e109cce0260801c91613f08565b917001000000000b17217f7d5a7716bba4a9ae0260801c91613ef7565b91700100000000162e42fefb2fed257559bdaa0260801c91613ee6565b917001000000002c5c85fdf84bd62ae30a74cc0260801c91613ed5565b9170010000000058b90bfbf8479bd5a81b51ad0260801c91613ec4565b91700100000000b17217f80f4ef5aadda455540260801c91613eb3565b9170010000000162e42ff0999ce3541b9fffcf0260801c91613ea1565b91700100000002c5c85fe31f35a6a30da1be500260801c91613e8f565b917001000000058b90bfcdee5acd3c1cedc8230260801c91613e7d565b9170010000000b17217fba9c739aa5819f44f90260801c91613e6b565b917001000000162e42fff037df38aa2b219f060260801c91613e59565b9170010000002c5c8601cc6b9e94213c72737a0260801c91613e47565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91613e35565b917001000000b1721835514b86e6d96efd1bfe0260801c91613e23565b91700100000162e430e5a18f6119e3c02282a50260801c91613e10565b917001000002c5c863b73f016468f6bac5ca2b0260801c91613dfd565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91613dea565b91700100000b1721bcfc99d9f890ea069117630260801c91613dd7565b9170010000162e43f4f831060e02d839a9d16d0260801c91613dc4565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c91613db1565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c91613d9e565b9170010000b17255775c040618bf4a4ade83fc0260801c91613d8b565b917001000162e525ee054754457d59952920260260801c91613d77565b9170010002c5cc37da9491d0985c348c68e7b30260801c91613d63565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91613d4f565b917001000b175effdc76ba38e31671ca9397250260801c91613d3b565b91700100162f3904051fa128bca9c55c31e5df0260801c91613d27565b917001002c605e2e8cec506d21bfc89a23a00f0260801c91613d13565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c91613cff565b91700100b1afa5abcbed6129ab13ec11dc95430260801c91613ceb565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c91613cd6565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c91613cc1565b917001059b0d31585743ae7c548eb68ca417fd0260801c91613cac565b9170010b5586cf9890f6298b92b71842a983630260801c91613c97565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c91613c82565b917001306fe0a31b7152de8d5a46305c85edec0260801c91613c6d565b6fb504f333f9de6484597d89b3754abe9f9250613c5856fea26469706673582212201f3500b860bc62657692a3183901310b4a9d587e54c35da242d2bb0118485b5364736f6c634300081e0033a2646970667358221220c1225d048f8eb2be410725b5e006860923c6057c760a4f91fa9ee56884d8281264736f6c634300081e0033","sourceMap":"957:810:52:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1459:299;;;;;;;;;;;;;;;957:810;-1:-1:-1;1459:299:52;;;957:810;1459:299;;;;;957:810;1459:299;957:810;1459:299;;;;957:810;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1459:299;;957:810;1459:299;;;;;957:810;;;;;;;;;;1459:299;957:810;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1459:299;957:810;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;957:810:52;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;957:810:52;;;;;;;;;;;:::o","linkReferences":{}},"methodIdentifiers":{"deploy(address,string,string,address[],int128,uint256[],uint256,uint256,address,address,address,address)":"6ae73ce3"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens_\",\"type\":\"address[]\"},{\"internalType\":\"int128\",\"name\":\"kappa_\",\"type\":\"int128\"},{\"internalType\":\"uint256[]\",\"name\":\"fees_\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"flashFeePpm_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolFeePpm_\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"protocolFeeAddress_\",\"type\":\"address\"},{\"internalType\":\"contract NativeWrapper\",\"name\":\"wrapper_\",\"type\":\"address\"},{\"internalType\":\"contract PartyPoolSwapImpl\",\"name\":\"swapImpl_\",\"type\":\"address\"},{\"internalType\":\"contract PartyPoolMintImpl\",\"name\":\"mintImpl_\",\"type\":\"address\"}],\"name\":\"deploy\",\"outputs\":[{\"internalType\":\"contract IPartyPool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/PartyPoolDeployer.sol\":\"PartyPoolDeployer\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/abdk-libraries-solidity/ABDKMath64x64.sol\":{\"keccak256\":\"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97\",\"license\":\"BSD-4-Clause\",\"urls\":[\"bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7\",\"dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol\":{\"keccak256\":\"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd\",\"dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashLender.sol\":{\"keccak256\":\"0x3a3549277762438ad9a38fce50493ed8995b806f78aabff02d51b4e1671ce6f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f105ec892766b8a41ece6d3b10a4e434166cc8db4ddb8451493a2de93cf7d893\",\"dweb:/ipfs/QmP5wxpX9cDzKtToA2cM5jbb928UN8DtGyV1cG4w7jPJCt\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd\",\"dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0x25f9b099413f805b4c4bbad8cc179326c10be237aec00349caf91524f8db0bbc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dcfb75af07ad33b1f8e966f793db3df8fbcfb14103ed3644c0c634658a8fd099\",\"dweb:/ipfs/QmPWamdkbcKwG3ah2G9TZtKHzQmjnunsWoPWr5KKfbrKNb\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168\",\"dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd274645d15bb7e4fcb9c833e401b2c5837404f90057f11a49118f25e0af7c76f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d38e0b997bb7aebae26d190b03d0991feb0d204c45f945e60014e1ca9175de69\",\"dweb:/ipfs/QmWzsUHHAZcjMyF8uMDEtNpMTkYZdQrfvdKPobXvwVHKo6\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x50e81a8b089e3f382b6c915aa0166773de64ea4756e8f9479d9943a5f956ddf5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bfeb96a150537222e2191c03887127499a4f21dfb5f9a7211da4d81749b52848\",\"dweb:/ipfs/QmYR75ECbsBuxSiXmGvGfNKJRLoK5MdLUZL1bd8SixzxL4\"]},\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161\",\"dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"src/ERC20External.sol\":{\"keccak256\":\"0x421f511bb3aa7258fb7121aa66b9a2e8e0b7a07b7e51c800c714f7acbfd599d3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b3fde56a83eae12a31eb4875d8952a99d18591fe0f18b6a12392c8f48f76af46\",\"dweb:/ipfs/QmeApbmGv6Z2b1JynvBxaAK1j1eWhGYpeNEP56V8XXvpcz\"]},\"src/ERC20Internal.sol\":{\"keccak256\":\"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f\",\"dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk\"]},\"src/IOwnable.sol\":{\"keccak256\":\"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1\",\"dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9\"]},\"src/IPartyFlashCallback.sol\":{\"keccak256\":\"0xff1d473d27c4dc75441a5f0db2d761916cce4a702f660e998467791efd1d9b2e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3220d69c62ed8c8106762c92857f24011284e8ddcfa5db4210e506b112fa1870\",\"dweb:/ipfs/QmYoZiGsVwoJvyPMcsSste4tq93wVBgDqCZkwPY7dvyLBJ\"]},\"src/IPartyInfo.sol\":{\"keccak256\":\"0x80e88e8c29cdf12426f16b4bf2a088397fcc31c2664564f7f26117dc85009af7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b91392cbda8adfccf9bea2e584616c4b3359d7381a18f5f3e5c9c71618786051\",\"dweb:/ipfs/QmWtWb1gVs2pzFkjwDj4mcdoCnQLPbwq4Qxbh38VEdWwAW\"]},\"src/IPartyPool.sol\":{\"keccak256\":\"0x55d3656b1a4c75801852066b7ba871212e5e807917b3b9029349349fae39375c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://009b67ccf1d28a04a2407a05ddda8f954033b7ac70f7fd5cbedbf779e867df9f\",\"dweb:/ipfs/QmS5vQcfma6PN28Q6qQwqa7KmUKu2KST72jwF8ffsj6Bw2\"]},\"src/LMSRStabilized.sol\":{\"keccak256\":\"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3\",\"dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB\"]},\"src/LMSRStabilizedBalancedPair.sol\":{\"keccak256\":\"0x782f3baf92f74152c0b93b95199abbb3a36c75c921454260c8b0237f91d7c59d\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://04d463c4fdcb6c8e2ebf9aed649ff21cca759ba73a4c93659e30c7df25e26c81\",\"dweb:/ipfs/QmUxmWytiw5VYJRUrFbSGm1oWmDPQ4q23pnkmK1q9P4apN\"]},\"src/NativeWrapper.sol\":{\"keccak256\":\"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238\",\"dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB\"]},\"src/OwnableExternal.sol\":{\"keccak256\":\"0x0a0199368ad20a31e7169b3e56449bf022c9d680e0d487c118608a7f14cb7efb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3348a063649e01acf9c6aa6b7ce2ecf62ace8c6f1467477de7d605996f08ec64\",\"dweb:/ipfs/QmSoxb35FFsNCgXgWn91CupvjpGmyM31wcfxAVpVFFPecX\"]},\"src/OwnableInternal.sol\":{\"keccak256\":\"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca\",\"dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE\"]},\"src/PartyPool.sol\":{\"keccak256\":\"0xf4af110b4cd06a00ee1ec2bd61e887662dcb26aaf6903b9910902614b50e4955\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://691fabaffecdf698601cc0696099e3bfa44ed60097b8f9b9f01cd4bf703bbb77\",\"dweb:/ipfs/QmXuPX2zu8sN9VyePDvVra4QP8LN2knNxbiGsMGzYAyS8S\"]},\"src/PartyPoolBalancedPair.sol\":{\"keccak256\":\"0x7d36ae211709da83ecafcc70f31e5fcdc1bc299243eedceebf17f26339757d7b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://91762575c367c9b1d50a633fb46ccf429a28bbaf70f76b524749ad32dc716d7a\",\"dweb:/ipfs/QmVLxjR3h2XJukjXFx56b4m8SPg6oupxqkzY5EKCK7GFHn\"]},\"src/PartyPoolBase.sol\":{\"keccak256\":\"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5\",\"dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5\"]},\"src/PartyPoolDeployer.sol\":{\"keccak256\":\"0xdf2a6a8602eba3aef625c798a0ec6525feb7520c2fd6933c30dd76fe3c4e2618\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9aa94963e0d34feddf63b3ae034874557229740be1ef80f49e87bd05694c9b50\",\"dweb:/ipfs/QmYQ6mH1mEJCJ9XNGdT3saRU3q36GZ94WuyRsn9LRWXtbM\"]},\"src/PartyPoolHelpers.sol\":{\"keccak256\":\"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5\",\"dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP\"]},\"src/PartyPoolMintImpl.sol\":{\"keccak256\":\"0xe9d9927cecd46a1f836b2c43e9d6184642b9e695c7462e5fb7c671a38aab7398\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8d821911d7982fc302929198539b27f72be100b91450c98d2e0081519f776499\",\"dweb:/ipfs/QmRChx1DPD1gKXwfD1m6aQ7pgh1aX6CvYLNX41ufdJteaJ\"]},\"src/PartyPoolSwapImpl.sol\":{\"keccak256\":\"0x71ecbd6d0fb106031baed7e4c21694ef24f0112af7d975325b98b1b0463ba5b2\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://64f8f8bae2f89ca495b9edacd012363b55e78a198f100650beb2b1238e8ef11f\",\"dweb:/ipfs/QmVfihiw9TqncuEfZKx7c6WEHiGFfRQyhtfdTGzfN7emNY\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"contract IERC20[]","name":"tokens_","type":"address[]"},{"internalType":"int128","name":"kappa_","type":"int128"},{"internalType":"uint256[]","name":"fees_","type":"uint256[]"},{"internalType":"uint256","name":"flashFeePpm_","type":"uint256"},{"internalType":"uint256","name":"protocolFeePpm_","type":"uint256"},{"internalType":"address","name":"protocolFeeAddress_","type":"address"},{"internalType":"contract NativeWrapper","name":"wrapper_","type":"address"},{"internalType":"contract PartyPoolSwapImpl","name":"swapImpl_","type":"address"},{"internalType":"contract PartyPoolMintImpl","name":"mintImpl_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deploy","outputs":[{"internalType":"contract IPartyPool","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/PartyPoolDeployer.sol":"PartyPoolDeployer"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/abdk-libraries-solidity/ABDKMath64x64.sol":{"keccak256":"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97","urls":["bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7","dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN"],"license":"BSD-4-Clause"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d","urls":["bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100","dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc","urls":["bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037","dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44","urls":["bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d","dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol":{"keccak256":"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e","urls":["bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd","dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashLender.sol":{"keccak256":"0x3a3549277762438ad9a38fce50493ed8995b806f78aabff02d51b4e1671ce6f5","urls":["bzz-raw://f105ec892766b8a41ece6d3b10a4e434166cc8db4ddb8451493a2de93cf7d893","dweb:/ipfs/QmP5wxpX9cDzKtToA2cM5jbb928UN8DtGyV1cG4w7jPJCt"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86","urls":["bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd","dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0x25f9b099413f805b4c4bbad8cc179326c10be237aec00349caf91524f8db0bbc","urls":["bzz-raw://dcfb75af07ad33b1f8e966f793db3df8fbcfb14103ed3644c0c634658a8fd099","dweb:/ipfs/QmPWamdkbcKwG3ah2G9TZtKHzQmjnunsWoPWr5KKfbrKNb"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9","urls":["bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168","dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd274645d15bb7e4fcb9c833e401b2c5837404f90057f11a49118f25e0af7c76f","urls":["bzz-raw://d38e0b997bb7aebae26d190b03d0991feb0d204c45f945e60014e1ca9175de69","dweb:/ipfs/QmWzsUHHAZcjMyF8uMDEtNpMTkYZdQrfvdKPobXvwVHKo6"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol":{"keccak256":"0x50e81a8b089e3f382b6c915aa0166773de64ea4756e8f9479d9943a5f956ddf5","urls":["bzz-raw://bfeb96a150537222e2191c03887127499a4f21dfb5f9a7211da4d81749b52848","dweb:/ipfs/QmYR75ECbsBuxSiXmGvGfNKJRLoK5MdLUZL1bd8SixzxL4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol":{"keccak256":"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0","urls":["bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161","dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"},"src/ERC20External.sol":{"keccak256":"0x421f511bb3aa7258fb7121aa66b9a2e8e0b7a07b7e51c800c714f7acbfd599d3","urls":["bzz-raw://b3fde56a83eae12a31eb4875d8952a99d18591fe0f18b6a12392c8f48f76af46","dweb:/ipfs/QmeApbmGv6Z2b1JynvBxaAK1j1eWhGYpeNEP56V8XXvpcz"],"license":"UNLICENSED"},"src/ERC20Internal.sol":{"keccak256":"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36","urls":["bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f","dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk"],"license":"UNLICENSED"},"src/IOwnable.sol":{"keccak256":"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990","urls":["bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1","dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9"],"license":"MIT"},"src/IPartyFlashCallback.sol":{"keccak256":"0xff1d473d27c4dc75441a5f0db2d761916cce4a702f660e998467791efd1d9b2e","urls":["bzz-raw://3220d69c62ed8c8106762c92857f24011284e8ddcfa5db4210e506b112fa1870","dweb:/ipfs/QmYoZiGsVwoJvyPMcsSste4tq93wVBgDqCZkwPY7dvyLBJ"],"license":"UNLICENSED"},"src/IPartyInfo.sol":{"keccak256":"0x80e88e8c29cdf12426f16b4bf2a088397fcc31c2664564f7f26117dc85009af7","urls":["bzz-raw://b91392cbda8adfccf9bea2e584616c4b3359d7381a18f5f3e5c9c71618786051","dweb:/ipfs/QmWtWb1gVs2pzFkjwDj4mcdoCnQLPbwq4Qxbh38VEdWwAW"],"license":"UNLICENSED"},"src/IPartyPool.sol":{"keccak256":"0x55d3656b1a4c75801852066b7ba871212e5e807917b3b9029349349fae39375c","urls":["bzz-raw://009b67ccf1d28a04a2407a05ddda8f954033b7ac70f7fd5cbedbf779e867df9f","dweb:/ipfs/QmS5vQcfma6PN28Q6qQwqa7KmUKu2KST72jwF8ffsj6Bw2"],"license":"UNLICENSED"},"src/LMSRStabilized.sol":{"keccak256":"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b","urls":["bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3","dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB"],"license":"UNLICENSED"},"src/LMSRStabilizedBalancedPair.sol":{"keccak256":"0x782f3baf92f74152c0b93b95199abbb3a36c75c921454260c8b0237f91d7c59d","urls":["bzz-raw://04d463c4fdcb6c8e2ebf9aed649ff21cca759ba73a4c93659e30c7df25e26c81","dweb:/ipfs/QmUxmWytiw5VYJRUrFbSGm1oWmDPQ4q23pnkmK1q9P4apN"],"license":"UNLICENSED"},"src/NativeWrapper.sol":{"keccak256":"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579","urls":["bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238","dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB"],"license":"UNLICENSED"},"src/OwnableExternal.sol":{"keccak256":"0x0a0199368ad20a31e7169b3e56449bf022c9d680e0d487c118608a7f14cb7efb","urls":["bzz-raw://3348a063649e01acf9c6aa6b7ce2ecf62ace8c6f1467477de7d605996f08ec64","dweb:/ipfs/QmSoxb35FFsNCgXgWn91CupvjpGmyM31wcfxAVpVFFPecX"],"license":"MIT"},"src/OwnableInternal.sol":{"keccak256":"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581","urls":["bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca","dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE"],"license":"MIT"},"src/PartyPool.sol":{"keccak256":"0xf4af110b4cd06a00ee1ec2bd61e887662dcb26aaf6903b9910902614b50e4955","urls":["bzz-raw://691fabaffecdf698601cc0696099e3bfa44ed60097b8f9b9f01cd4bf703bbb77","dweb:/ipfs/QmXuPX2zu8sN9VyePDvVra4QP8LN2knNxbiGsMGzYAyS8S"],"license":"UNLICENSED"},"src/PartyPoolBalancedPair.sol":{"keccak256":"0x7d36ae211709da83ecafcc70f31e5fcdc1bc299243eedceebf17f26339757d7b","urls":["bzz-raw://91762575c367c9b1d50a633fb46ccf429a28bbaf70f76b524749ad32dc716d7a","dweb:/ipfs/QmVLxjR3h2XJukjXFx56b4m8SPg6oupxqkzY5EKCK7GFHn"],"license":"UNLICENSED"},"src/PartyPoolBase.sol":{"keccak256":"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999","urls":["bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5","dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5"],"license":"UNLICENSED"},"src/PartyPoolDeployer.sol":{"keccak256":"0xdf2a6a8602eba3aef625c798a0ec6525feb7520c2fd6933c30dd76fe3c4e2618","urls":["bzz-raw://9aa94963e0d34feddf63b3ae034874557229740be1ef80f49e87bd05694c9b50","dweb:/ipfs/QmYQ6mH1mEJCJ9XNGdT3saRU3q36GZ94WuyRsn9LRWXtbM"],"license":"UNLICENSED"},"src/PartyPoolHelpers.sol":{"keccak256":"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c","urls":["bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5","dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP"],"license":"UNLICENSED"},"src/PartyPoolMintImpl.sol":{"keccak256":"0xe9d9927cecd46a1f836b2c43e9d6184642b9e695c7462e5fb7c671a38aab7398","urls":["bzz-raw://8d821911d7982fc302929198539b27f72be100b91450c98d2e0081519f776499","dweb:/ipfs/QmRChx1DPD1gKXwfD1m6aQ7pgh1aX6CvYLNX41ufdJteaJ"],"license":"UNLICENSED"},"src/PartyPoolSwapImpl.sol":{"keccak256":"0x71ecbd6d0fb106031baed7e4c21694ef24f0112af7d975325b98b1b0463ba5b2","urls":["bzz-raw://64f8f8bae2f89ca495b9edacd012363b55e78a198f100650beb2b1238e8ef11f","dweb:/ipfs/QmVfihiw9TqncuEfZKx7c6WEHiGFfRQyhtfdTGzfN7emNY"],"license":"UNLICENSED"}},"version":1},"id":52} \ No newline at end of file +{"abi":[{"type":"function","name":"deploy","inputs":[{"name":"owner_","type":"address","internalType":"address"},{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"},{"name":"tokens_","type":"address[]","internalType":"contract IERC20[]"},{"name":"kappa_","type":"int128","internalType":"int128"},{"name":"fees_","type":"uint256[]","internalType":"uint256[]"},{"name":"flashFeePpm_","type":"uint256","internalType":"uint256"},{"name":"protocolFeePpm_","type":"uint256","internalType":"uint256"},{"name":"protocolFeeAddress_","type":"address","internalType":"address"},{"name":"wrapper_","type":"address","internalType":"contract NativeWrapper"},{"name":"swapImpl_","type":"address","internalType":"contract PartyPoolSwapImpl"},{"name":"mintImpl_","type":"address","internalType":"contract PartyPoolMintImpl"}],"outputs":[{"name":"","type":"address","internalType":"contract IPartyPool"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x60808060405234601557615a61908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c636ae73ce314610024575f80fd5b34610373576101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103735760043573ffffffffffffffffffffffffffffffffffffffff81168091036103735760243567ffffffffffffffff8111610373576100959036906004016103f8565b9060443567ffffffffffffffff8111610373576100b69036906004016103f8565b6064359067ffffffffffffffff82116103735736602383011215610373578160040135916100eb6100e684610468565b6103b4565b9060208285815201906024829560051b8201019036821161037357602401915b8183106103875750505060843580600f0b8091036103735760a43567ffffffffffffffff81116103735736602382011215610373578060040135946101526100e687610468565b91602083888152016024819860051b8301019136831161037357602401905b82821061037757505050610104359173ffffffffffffffffffffffffffffffffffffffff831680930361037357610124359373ffffffffffffffffffffffffffffffffffffffff851680950361037357610144359573ffffffffffffffffffffffffffffffffffffffff871680970361037357610164359773ffffffffffffffffffffffffffffffffffffffff8916809903610373576040519b8c9b8c926155688094019e8f9081109067ffffffffffffffff1017610346576102528f92938f94602096610260966104c49039845261018086850152610180840190610480565b916040818403910152610480565b8c810360608e01529151808352910193905f5b81811061031a575050509060209160808b015289830360a08b015251918281520195905f5b81811061030457505050918596916101609360c43560c085015260e43560e0850152610100840152610120830152610140820152015203905ff080156102f95760209073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b6040513d5f823e3d90fd5b8251885260209788019790920191600101610298565b825173ffffffffffffffffffffffffffffffffffffffff16865260209586019590920191600101610273565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f80fd5b8135815260209182019101610171565b823573ffffffffffffffffffffffffffffffffffffffff811681036103735781526020928301920161010b565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff82111761034657604052565b81601f820112156103735780359067ffffffffffffffff82116103465761044660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116016103b4565b928284526020838301011161037357815f926020809301838601378301015290565b67ffffffffffffffff81116103465760051b60200190565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f858286010152011601019056fe610140604052346106ee576155688038038061001a81610a6a565b9283398101610180828203126106ee5761003382610a8f565b60208301516001600160401b0381116106ee5782610052918501610aa3565b60408401519091906001600160401b0381116106ee5783610074918601610aa3565b60608501519094906001600160401b0381116106ee5781019284601f850112156106ee578351956100ac6100a788610af4565b610a6a565b9460208689815201906020829960051b820101908882116106ee57602001915b818310610a4a57505050608083015180600f0b81036106ee5760a08401516001600160401b0381116106ee5784019680601f890112156106ee5787516101146100a782610af4565b986020808b848152019260051b8201019283116106ee57602001905b828210610a3a5750505060c08401519760e0850151926101536101008701610a8f565b610120870151979095906001600160a01b03891689036106ee57610140880151976001600160a01b03891689036106ee576101600151986001600160a01b038a168a036106ee5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00556080526001600160a01b03168015610a27575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a38051906001600160401b0382116106335760045490600182811c92168015610a1d575b60208310146109405781601f8493116109cf575b50602090601f8311600114610969575f9261095e575b50508160011b915f199060031b1c1916176004555b8051906001600160401b0382116106335760055490600182811c92168015610954575b60208310146109405781601f849311610904575b50602090601f831160011461089e575f92610893575b50508160011b915f199060031b1c1916176005555b60018751111561084e578651906001600160401b0382116106335768010000000000000000821161063357600b5482600b55808310610814575b50600b5f5260205f205f5b8381106107f7575050505060a05285518551036107be5761033a8651610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600654836006558084106107a2575b500160065f5260205f205f5b83811061078e57505050505f5b86518110156104185761271061039c8289610b49565b5110156103e1576103ad8188610b49565b51906006548110156103cd5760019160065f528160205f20015501610386565b634e487b7160e01b5f52603260045260245ffd5b60405162461bcd60e51b815260206004820152600f60248201526e506f6f6c3a20666565203e3d20312560881b6044820152606490fd5b50866127108110156107495760c05262061a8081101561070457801580156106f2575b156106ee5760e052601080546001600160a01b0319166001600160a01b039290921691909117905561012052610100528051905f5b8281106106a7578261048181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600d5483600d5580841061068b575b5001600d5f5260205f205f5b83811061067757846104d181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600f5483600f5580841061065b575b5001600f5f5260205f205f5b8381106106475761052085610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600c5483600c55808410610617575b500190600c5f5260205f20915f5b82811061060357604051614a0a9081610b5e8239608051818181611ac301528181611d1401528181612067015261278a015260a051818181610f130152610f7f015260c05181818161134801526116a6015260e0518181816105ac01528181610c550152818161105d0152818161136e015281816114be0152611b9d01526101005181818161031701526105f70152610120518181816108050152610a720152f35b600190602083519301928186015501610561565b61062d90600c5f5284845f209182019101610b0b565b83610553565b634e487b7160e01b5f52604160045260245ffd5b600190602084519401938184015501610510565b61067190600f5f5284845f209182019101610b0b565b84610504565b6001906020845194019381840155016104c0565b6106a190600d5f5284845f209182019101610b0b565b846104b4565b60018101908181116106da576001600160a01b03906106c69084610b49565b51165f52600e6020528060405f2055610470565b634e487b7160e01b5f52601160045260245ffd5b5f80fd5b506001600160a01b038216151561043b565b60405162461bcd60e51b815260206004820152601960248201527f506f6f6c3a2070726f746f636f6c20666565203e3d20343025000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601560248201527f506f6f6c3a20666c61736820666565203e3d20312500000000000000000000006044820152606490fd5b600190602084519401938184015501610379565b6107b89060065f5284845f209182019101610b0b565b5f61036d565b60405162461bcd60e51b81526020600482015260116024820152700a0deded87440cccacae640d8cadccee8d607b1b6044820152606490fd5b82516001600160a01b031681830155602090920191600101610319565b600b5f52610848907f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9908101908401610b0b565b5f61030e565b60405162461bcd60e51b815260206004820152601360248201527f506f6f6c3a206e656564203e31206173736574000000000000000000000000006044820152606490fd5b015190505f806102bf565b60055f9081528281209350601f198516905b8181106108ec57509084600195949392106108d4575b505050811b016005556102d4565b01515f1960f88460031b161c191690555f80806108c6565b929360206001819287860151815501950193016108b0565b6109309060055f5260205f20601f850160051c81019160208610610936575b601f0160051c0190610b0b565b5f6102a9565b9091508190610923565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610295565b015190505f8061025d565b60045f9081528281209350601f198516905b8181106109b7575090846001959493921061099f575b505050811b01600455610272565b01515f1960f88460031b161c191690555f8080610991565b9293602060018192878601518155019501930161097b565b60045f52610a17907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f850160051c8101916020861061093657601f0160051c0190610b0b565b5f610247565b91607f1691610233565b631e4fbdf760e01b5f525f60045260245ffd5b8151815260209182019101610130565b82516001600160a01b03811681036106ee578152602092830192016100cc565b6040519190601f01601f191682016001600160401b0381118382101761063357604052565b51906001600160a01b03821682036106ee57565b81601f820112156106ee578051906001600160401b03821161063357610ad2601f8301601f1916602001610a6a565b92828452602083830101116106ee57815f9260208093018386015e8301015290565b6001600160401b0381116106335760051b60200190565b818110610b16575050565b5f8155600101610b0b565b90610b2e6100a783610af4565b8281528092610b3f601f1991610af4565b0190602036910137565b80518210156103cd5760209160051b01019056fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c908163017504b614612a8e57508063017cf661146129fc57806306fdde03146128b3578063095ea7b3146127ae5780630d246214146127405780630eeee6271461191757806318160ddd146118db5780631f3a0e411461189a57806323b872dd14611703578063313ce567146116c957806331596a6a1461167057806341c0e1b5146115da578063476e44b614611519578063491e7998146113f15780635cffe9de146112115780636863f5bc146110805780636b4082d1146110275780636b7b911214610fa55780636bba3f2f14610f495780636d8d0ff314610e8e5780636ff97f1d14610d8e57806370a0823114610d2b578063715018a614610c8f57806379a68d5314610b6b5780638da5cb5b14610b1a5780638e499bcf14610ade578063939f5ea414610a965780639517606614610a2757806395d89b41146108cd5780639af1d35a1461082e578063a1af5b9a14610765578063a9059cbb14610715578063b3f1c93d14610648578063cb717f3a146104f3578063cce516b7146104a1578063d516b8c614610416578063dd62ed3e1461039d578063e4b50cb81461033b578063f0d1ae4f146102cc5763f2fde38b0361000f57346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610228612b9d565b6102306131e9565b16801561029d5773ffffffffffffffffffffffffffffffffffffffff8254827fffffffffffffffffffffffff00000000000000000000000000000000000000008216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b6024827f1e4fbdf700000000000000000000000000000000000000000000000000000000815280600452fd5b80fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff61038d600435612c6d565b90549060031b1c16604051908152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff60406103ec612b9d565b92826103f6612bc0565b9416815260026020522091165f52602052602060405f2054604051908152f35b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043590602435916064359182600f0b83036102c95761049d61047985858561046f838261330e565b9260443591612f08565b92505050604093919351938493846040919493926060820195825260208201520152565b0390f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff60105416604051908152f35b5060a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761049d61062b61061c61052f612b9d565b610537612bc0565b60443573ffffffffffffffffffffffffffffffffffffffff61055882613235565b9281604051957f3dd3c8050000000000000000000000000000000000000000000000000000000060208801521660248601521660448401526064830152606435608483015260843560a483015260c48201527f000000000000000000000000000000000000000000000000000000000000000060e482015260e481526105e061010482612c2c565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016613255565b60208082518301019101612e9c565b604080519384526020840192909252908201529081906060820190565b5060807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f161067e612b9d565b73ffffffffffffffffffffffffffffffffffffffff61069b612bc0565b81604051937fb3f1c93d00000000000000000000000000000000000000000000000000000000602086015216602484015216604482015260443560648201526064356084820152608481526105e060a482612c2c565b602081519181808201938492010103126107115760209051604051908152f35b5f80fd5b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761075a610750612b9d565b60243590336130c4565b602060405160018152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761082a73ffffffffffffffffffffffffffffffffffffffff60105416604051907f2a54db010000000000000000000000000000000000000000000000000000000060208301526024820152602481526107ee604482612c2c565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016613255565b5080f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760405180916020600654928381520191600682527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f915b8181106108b75761049d856108ab81870382612c2c565b60405191829182612b1c565b8254845260209093019260019283019201610894565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576040519080600554908160011c91600181168015610a1d575b6020841081146109f0578386529081156109ab575060011461094e575b61049d8461094281860382612c2c565b60405191829182612b55565b600581527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0939250905b8082106109915750909150810160200161094282610932565b919260018160209254838588010152019101909291610978565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208087019190915292151560051b850190920192506109429150839050610932565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b92607f1692610915565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020610ad660243560043561330e565b604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600b54604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b5060e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610b9e612b9d565b90610ba7612bc0565b906044356064356084359182600f0b809303610c8b5760c435938415158095036102c95761049d61062b61061c89898989898973ffffffffffffffffffffffffffffffffffffffff610bf98383612eb7565b9581604051987f8a3d858d0000000000000000000000000000000000000000000000000000000060208b01521660248901521660448701526064860152608485015260a484015260a43560c484015260e48301526101048201527f000000000000000000000000000000000000000000000000000000000000000061012482015261012481526107ee61014482612c2c565b8380fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610cc66131e9565b8073ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604060209173ffffffffffffffffffffffffffffffffffffffff610d7d612b9d565b168152600183522054604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604051806020600b5491828152018091600b85527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db990855b818110610e625750505082610e0b910383612c2c565b604051928392602084019060208552518091526040840192915b818110610e33575050500390f35b825173ffffffffffffffffffffffffffffffffffffffff16845285945060209384019390920191600101610e25565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610df5565b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f1610ec4612b9d565b73ffffffffffffffffffffffffffffffffffffffff604051917fc5eabfb900000000000000000000000000000000000000000000000000000000602084015216602482015260243560448201527f0000000000000000000000000000000000000000000000000000000000000000600f0b6064820152606481526105e0608482612c2c565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f0000000000000000000000000000000000000000000000000000000000000000600f0b8152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610ff2612b9d565b610ffa6131e9565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000601054161760105580f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c95760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576110b8612b9d565b6110c0612bc0565b90608435801515809103610c8b5773ffffffffffffffffffffffffffffffffffffffff6111429381604051947f6863f5bc0000000000000000000000000000000000000000000000000000000060208701521660248501521660448301526044356064830152606435608483015260a482015260a481526105e060c482612c2c565b805181019060208181840193031261120d5760208101519067ffffffffffffffff8211610c8b57019181603f840112156102c95760208301519267ffffffffffffffff84116111e0578360051b91604051946111a16020850187612c2c565b855260208080870194840101019384116102c95750604001905b8282106111d0576040518061049d8682612b1c565b81518152602091820191016111bb565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8280fd5b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043573ffffffffffffffffffffffffffffffffffffffff81168091036113e95761126a612bc0565b60643567ffffffffffffffff8111610c8b5736602382011215610c8b5780600401359067ffffffffffffffff82116113ed5736602483830101116113ed576113c3937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f846107ee9560246101049673ffffffffffffffffffffffffffffffffffffffff6040519a8b987fe49cd4750000000000000000000000000000000000000000000000000000000060208b0152848a0152166044880152604435606488015260c060848801528260e48801520186860137888582860101527f000000000000000000000000000000000000000000000000000000000000000060a48501527f000000000000000000000000000000000000000000000000000000000000000060c48501520116810103017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612c2c565b6020818051810103126113e957602001518015158091036113e957602090604051908152f35b5080fd5b8480fd5b50346102c95760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957611429612b9d565b611431612bc0565b906064359160a4358015158091036113ed578373ffffffffffffffffffffffffffffffffffffffff6114656114f496613235565b9381604051967f8d01fa440000000000000000000000000000000000000000000000000000000060208901521660248701521660448501526044356064850152608484015260843560a484015260c483015260e48201527f000000000000000000000000000000000000000000000000000000000000000061010482015261010481526105e061012482612c2c565b6040818051810103126113e95780604060208193015191015182519182526020820152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576060602060405161155881612be3565b838152015260405161156981612be3565b600954600f0b8152611579612e08565b906020810191825260405192839260208452606084019251600f0b6020850152519160408085015282518091526020608085019301915b8181106115be575050500390f35b8251600f0b8452859450602093840193909201916001016115b0565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576116116131e9565b60085460ff811615611621575080f35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001176008557f0f8eeedbc400fd6686703559f58d1e6143fdaed533f19a86c93d67a2fe4fb3318180a180f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405160128152f35b50346102c95760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761173b612b9d565b611743612bc0565b6044359173ffffffffffffffffffffffffffffffffffffffff811680855260026020526040852073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f2054907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82106117c0575b505061075a93506130c4565b84821061186657801561183a57331561180e578560409161075a975260026020522073ffffffffffffffffffffffffffffffffffffffff33165f526020528360405f20910390555f806117b4565b6024867f94280d6200000000000000000000000000000000000000000000000000000000815280600452fd5b6024867fe602df0500000000000000000000000000000000000000000000000000000000815280600452fd5b60648686847ffb8f41b200000000000000000000000000000000000000000000000000000000835233600452602452604452fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060ff600854166040519015158152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600354604051908152f35b506101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107115761194b612b9d565b602435917fffffffff00000000000000000000000000000000000000000000000000000000831690818403610711576044359173ffffffffffffffffffffffffffffffffffffffff83169485840361071157606435956084359560c4359687600f0b9687890361071157610104359860e4358a15158b036107115760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146127185760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005560ff600854166126ba5780159081156126af575b501561265157611a4690611a3b848d612eb7565b9060a435858e612f08565b9c859e95979392949f915073ffffffffffffffffffffffffffffffffffffffff611a6f83612c6d565b90549060031b1c169a73ffffffffffffffffffffffffffffffffffffffff611a9686612c6d565b90549060031b1c169c80155f146122df57505050878a73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001698898214806122d5575b156121fe57505050863b15610711575f8e976004604051809a81937fd0e30db00000000000000000000000000000000000000000000000000000000083525af19687156121f3578f908f908f996121dc575b50611b76611b98915b611b71611b5486612cb2565b90549060031b1c611b6487612cca565b90549060031b1c90612d4c565b612d4c565b91611b93611b8387612cb2565b90549060031b1c611b6488612cca565b612d12565b908d987f000000000000000000000000000000000000000000000000000000000000000090811515806121d3575b61214a575b5050611c6991611c4b611c0c611c6093611bf6611be788612cca565b90549060031b1c821015612da3565b611bff87612cca565b90549060031b1c90612d12565b611c1586612cb2565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b611c57611be787612cca565b611bff86612cca565b611c1585612cb2565b8b82600f0b13156120ec578b84600f0b131561208e57611cf293611cda82611cb2611cac611cb296611c9d611cac97613084565b90549060031b1c600f0b6133db565b91613084565b9091906fffffffffffffffffffffffffffffffff83549160031b928116831b921b1916179055565b611ce384613084565b90549060031b1c600f0b613433565b8061204f575b15611f895773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b15611f855787809160248d60405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af18015611f7a579188918c93611f5c575b5081809381925af13d15611f57573d67ffffffffffffffff8111611f2a5760405190611dd760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160183612c2c565b81528760203d92013e5b15611ecc577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a0915b611e16818a612d12565b73ffffffffffffffffffffffffffffffffffffffff604051931683528a60208401528b604084015260608301526080820152a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015611e9b575b50505061049d90604051938493846040919493926060820195825260208201520152565b8280809381938290611ec3575b3390f115611eb7578080611e77565b604051903d90823e3d90fd5b506108fc611ea8565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b611de1565b611f699193508290612c2c565b611f7657868a915f611d83565b8680fd5b6040513d8a823e3d90fd5b8780fd5b506040517fa9059cbb0000000000000000000000000000000000000000000000000000000087528360045289602452602087604481808a5af190600188511482161561202e575b60405215612002577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a091611e0c565b602486867f5274afe7000000000000000000000000000000000000000000000000000000008252600452fd5b90600181151661204657863b15153d15161690611fd0565b503d87823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168614611cf8565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a20616d6f756e744f7574203c3d20300000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4d53523a20616d6f756e74496e203c3d2030000000000000000000000000006044820152fd5b611c60929a50611c0c620f4240612168611c699694611c4b94612d59565b049b8c61217b575b93505050918f611bcb565b6121ce8d61219a61218b8a612cca565b91909283548360031b1c612d4c565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b612170565b50801515611bc6565b6121e9919e505f90612c2c565b5f9c611b76611b3f565b6040513d5f823e3d90fd5b60209293949596979899505f80809360649373ffffffffffffffffffffffffffffffffffffffff604051987f23b872dd00000000000000000000000000000000000000000000000000000000855216600452306024526044525af19060015f51148216156122b4575b6040525f6060521561228857908b95949392918e611b988f611b7690611b48565b887f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9060018115166122cc578a3b15153d15161690612267565b503d5f823e3d90fd5b5080341015611aed565b92985090917c0100000000000000000000000000000000000000000000000000000000036124a55750612421576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526020816024818d5afa80156121f3578e915f916123ea575b50612377906123716123618a612cb2565b90549060031b1c611b648b612cca565b90612d12565b0361238c578b958e611b988f611b7690611b48565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496e636f72726563742070726566756e64696e6720616d6f756e7400000000006044820152fd5b9150506020813d602011612419575b8161240660209383612c2c565b8101031261071157518d90612377612350565b3d91506123f9565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f50726566756e64696e672063616e6e6f7420626520757365642077697468206160448201527f206c696d697420707269636500000000000000000000000000000000000000006064820152fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015291506020826024818e5afa9182156121f3578f905f93612619575b506024929161251d916040519160208301528d85830152604482015260448152612517606482612c2c565b8a6133b8565b5060208b604051938480927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa80156121f3578f925f916125e0575b509061256d91612d12565b03612582578b958e611b988f611b7690611b48565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e742066756e647300000000000000000000000000006044820152fd5b919250506020813d602011612611575b816125fd60209383612c2c565b8101031261071157518e919061256d612562565b3d91506125f0565b9250506020823d602011612649575b8161263560209383612c2c565b81010312610711579051908e61251d6124ec565b3d9150612628565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f737761703a20646561646c696e652065786365656465640000000000000000006044820152fd5b90504211155f611a27565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346107115760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576127e5612b9d565b6024359033156128875773ffffffffffffffffffffffffffffffffffffffff1690811561285b57335f52600260205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576040515f6004548060011c906001811680156129f2575b6020831081146129c5578285529081156129835750600114612925575b61049d8361094281850382612c2c565b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b80821061296957509091508101602001610942612915565b919260018160209254838588010152019101909291612951565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b840190910191506109429050612915565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916128f8565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157604051806020600d54918281520190600d5f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5905f5b818110612a785761049d856108ab81870382612c2c565b8254845260209093019260019283019201612a61565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157600c548082526020820190600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7905f5b818110612b065761049d856108ab81870382612c2c565b8254845260209093019260019283019201612aef565b60206040818301928281528451809452019201905f5b818110612b3f5750505090565b8251845260209384019390920191600101612b32565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6040810190811067ffffffffffffffff821117612bff57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612bff57604052565b600b54811015612c8557600b5f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600f54811015612c8557600f5f5260205f2001905f90565b600c54811015612c8557600c5f5260205f2001905f90565b600d54811015612c8557600d5f5260205f2001905f90565b600654811015612c855760065f5260205f2001905f90565b91908203918211612d1f57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b91908201809211612d1f57565b81810292918115918404141715612d1f57565b8115612d76570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b15612daa57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f62616c616e6365203c2070726f746f636f6c206f7765640000000000000000006044820152fd5b60405190600a548083528260208101600a5f5260205f20925f905b806001830110612e7057612e49945491818110612e5c575b10612e4b575b500383612c2c565b565b60801d600f0b81526020015f612e41565b92602060019184600f0b8152019301612e3b565b9160029193506040600191865480600f0b825260801d600f0b6020820152019401920185929391612e23565b90816060910312610711578051916040602083015192015190565b9190826103e8026103e881048403612d1f5781612ed391612d4c565b90815f52600760205260405f2054938415612eed57505050565b612ef892945061330e565b915f5260076020528160405f2055565b92949394919091612f34612f1c878461332b565b9050612f2786612ce2565b90549060031b1c90613489565b905f82600f0b131561302657612f5a918486600954600f0b612f54612e08565b90613722565b919092612f798394612f6c8197612ce2565b90549060031b1c9061334d565b925f92849880613005575b508811612fa757612f97612fa492612ce2565b90549060031b1c906136b3565b94565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f737761703a207472616e736665722065786365656473206d61780000000000006044820152fd5b9098506130149193508461337f565b9161301f8385612d4c565b975f612f84565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761703a20696e70757420746f6f20736d616c6c20616674657220666565006044820152fd5b90600a54821015612c8557600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b73ffffffffffffffffffffffffffffffffffffffff169081156131bd5773ffffffffffffffffffffffffffffffffffffffff1691821561319157815f52600160205260405f205481811061315f57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f52600184520360405f2055845f526001825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff5f5416330361320957565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b600654156132505761324690612cfa565b90549060031b1c90565b505f90565b905f8091602081519101845af480806132fb575b1561327b575050613278613470565b90565b156132c25773ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b3d156132d3576040513d5f823e3d90fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b503d1515806132695750813b1515613269565b90611b6461331e61327893612cfa565b90549060031b1c91612cfa565b9190801561334757613340613278918461337f565b8093612d12565b505f9190565b61336161335a83836136b3565b9283613489565b90600f0b90600f0b126133715790565b60018101809111612d1f5790565b9080156133b25761338f91612d59565b620f4240810190818111612d1f57620f423f01908111612d1f57620f4240900490565b50505f90565b905f809160208151910182855af180806132fb571561327b575050613278613470565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613419575b1561071157600f0b90565b506f7fffffffffffffffffffffffffffffff81131561340e565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613419571561071157600f0b90565b604051903d82523d5f602084013e60203d830101604052565b81156107115777ffffffffffffffffffffffffffffffffffffffffffffffff811161350157906134bb9160401b612d6c565b6fffffffffffffffffffffffffffffffff8111610711576fffffffffffffffffffffffffffffffff166f7fffffffffffffffffffffffffffffff811161071157600f0b90565b60c09181831c80936401000000008210156136a6575b600282620100006135a494101561369a575b61010081101561368e575b6010811015613682575b6004811015613677575b101561366f575b8360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b612d6c565b926fffffffffffffffffffffffffffffffff8411610711578160801c8402906fffffffffffffffffffffffffffffffff8316850290809460401b90828210613645575b5003928160801b9182851061361c575b60801c03613611576136099203612d6c565b905b016134bb565b50505060019061360b565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906135f7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f6135e7565b60010161354f565b91810191811c613548565b6004928301921c61353e565b6008928301921c613534565b6010928301921c613529565b505060e082811c90613517565b81156133b257600f0b5f8112610711576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116107115760401b81198111610711570190565b8051821015612c855760209160051b010190565b955f959194939092849290875b875189101561375a576137526001916137488b8b61370e565b51600f0b906133db565b98019761372f565b909294975097909294975f81600f0b1315613b985761377891613bf6565b9384600f0b80156107115770010000000000000000000000000000000005917fffffffffffffffffffffffffffffffff8000000000000000000000000000000083121580613b7e575b15610711576137fd613802916137f86137e095600f0b9586928b61370e565b51600f0b6137ee898c61370e565b51600f0b90613433565b613bf6565b613c36565b9280600f0b905f82136139ee575b50509061381c91613bf6565b80600f0b68200000000000000000811361396a577fffffffffffffffffffffffffffffffff800000000000000000000000000000001461071157613864905f03600f0b613c36565b600f0b6801000000000000000003907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082121580613950575b15610711576138af91600f0b90613bf6565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613936575b1561071157600f0b925f84131561392257505061390661390c92613c93565b90613bf6565b905f82600f0b131561391a57565b5f9250829150565b90915061392f925061370e565b51600f0b90565b506f7fffffffffffffffffffffffffffffff8113156138e7565b506f7fffffffffffffffffffffffffffffff82131561389d565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4c4d53523a20612f6220746f6f206c617267652028776f756c64206f7665726660448201527f6c6f7720657870290000000000000000000000000000000000000000000000006064820152fd5b84600f9a939a0b80921315613afa5781156107115760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613ae0575b1561071157600f0b5f811315613a8257613a50613a5691613c93565b86613bf6565b9780600f0b89600f0b125f14613a7657505061381c90875b90915f613810565b61381c92919850613a6e565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4d53523a20726174696f3c3d300000000000000000000000000000000000006044820152fd5b506f7fffffffffffffffffffffffffffffff811315613a34565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4c4d53523a206c696d69745072696365203c3d2063757272656e74207072696360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152fd5b506f7fffffffffffffffffffffffffffffff8313156137c1565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613419571561071157600f0b90565b600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000811261325057700171547652b82fe1777d0ffda0d23a7d12613278910260801d600f0b613dc0565b600f0b5f811315610711575f908068010000000000000000821215613db3575b806401000000006002921215613da7575b62010000811215613d9b575b610100811215613d8f575b6010811215613d83575b6004811215613d78575b1215613d6e575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f8313613d5257506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d90565b8002908160ff1c9182607f011c918302019160011d9190613d2d565b9060010190613cf6565b92810192811d613cef565b6004938401931d613ce5565b6008938401931d613cdb565b6010938401931d613cd0565b6020938401931d613cc4565b506040915080821d613cb3565b80600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000081126133b2576f80000000000000000000000000000000915f6780000000000000008216600f0b136149bc575b5f6740000000000000008216600f0b1361499f575b5f6720000000000000008216600f0b13614982575b5f6710000000000000008216600f0b13614965575b5f6708000000000000008216600f0b13614948575b5f6704000000000000008216600f0b1361492b575b5f6702000000000000008216600f0b1361490e575b5f6701000000000000008216600f0b136148f1575b5f66800000000000008216600f0b136148d4575b5f66400000000000008216600f0b136148b7575b5f66200000000000008216600f0b1361489a575b5f66100000000000008216600f0b1361487d575b5f66080000000000008216600f0b13614860575b5f66040000000000008216600f0b13614843575b5f66020000000000008216600f0b13614826575b5f66010000000000008216600f0b13614809575b5f658000000000008216600f0b136147ec575b5f654000000000008216600f0b136147cf575b5f652000000000008216600f0b136147b2575b5f651000000000008216600f0b13614795575b5f650800000000008216600f0b13614778575b5f650400000000008216600f0b1361475b575b5f650200000000008216600f0b1361473e575b5f650100000000008216600f0b13614721575b5f6480000000008216600f0b13614704575b5f6440000000008216600f0b136146e7575b5f6420000000008216600f0b136146ca575b5f6410000000008216600f0b136146ad575b5f6408000000008216600f0b13614690575b5f6404000000008216600f0b13614673575b5f6402000000008216600f0b13614656575b5f6401000000008216600f0b13614639575b5f63800000008216600f0b1361461c575b5f63400000008216600f0b136145ff575b5f63200000008216600f0b136145e2575b5f63100000008216600f0b136145c5575b5f63080000008216600f0b136145a8575b5f63040000008216600f0b1361458b575b5f63020000008216600f0b1361456e575b5f63010000008216600f0b13614551575b5f628000008216600f0b13614534575b5f624000008216600f0b13614517575b5f622000008216600f0b136144fa575b5f621000008216600f0b136144dd575b5f620800008216600f0b136144c0575b5f620400008216600f0b136144a3575b5f620200008216600f0b13614486575b5f620100008216600f0b13614469575b5f6180008216600f0b1361444c575b5f6140008216600f0b1361442f575b5f6120008216600f0b13614412575b5f6110008216600f0b136143f5575b5f6108008216600f0b136143d8575b5f6104008216600f0b136143bb575b5f6102008216600f0b1361439e575b5f6101008216600f0b13614381575b5f60808216600f0b13614364575b5f60408216600f0b13614347575b5f60208216600f0b1361432a575b5f60108216600f0b1361430d575b5f60088216600f0b136142f0575b5f60048216600f0b136142d3575b5f60028216600f0b136142b5575b60015f9116600f0b13614298575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161071157600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c9061426e565b7001000000000000000162e42fefa39ef35890920260801c91614260565b9170010000000000000002c5c85fdf473de6b20260801c91614252565b91700100000000000000058b90bfbe8e7bcd6d0260801c91614244565b917001000000000000000b17217f7d1cf79afa0260801c91614236565b91700100000000000000162e42fefa39ef366f0260801c91614228565b917001000000000000002c5c85fdf473de6eca0260801c9161421a565b9170010000000000000058b90bfbe8e7bce5440260801c9161420c565b91700100000000000000b17217f7d1cf79e9490260801c916141fe565b9170010000000000000162e42fefa39ef44d910260801c916141ef565b91700100000000000002c5c85fdf473dea871f0260801c916141e0565b917001000000000000058b90bfbe8e7bdcbe2e0260801c916141d1565b9170010000000000000b17217f7d1cf7d83c1a0260801c916141c2565b917001000000000000162e42fefa39f02b772c0260801c916141b3565b9170010000000000002c5c85fdf473e242ea380260801c916141a4565b91700100000000000058b90bfbe8e7cc35c3f00260801c91614195565b917001000000000000b17217f7d1cfb72b45e10260801c91614186565b91700100000000000162e42fefa39fe95583c20260801c91614176565b917001000000000002c5c85fdf4741bea6e77e0260801c91614166565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c91614156565b91700100000000000b17217f7d1d351a389d400260801c91614146565b9170010000000000162e42fefa3ae53369388c0260801c91614136565b91700100000000002c5c85fdf477b662b269450260801c91614126565b917001000000000058b90bfbe8f71cb4e4b33d0260801c91614116565b9170010000000000b17217f7d20cf927c8e94c0260801c91614106565b917001000000000162e42fefa494f1478fde050260801c916140f5565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c916140e4565b91700100000000058b90bfbe9ddbac5e109cce0260801c916140d3565b917001000000000b17217f7d5a7716bba4a9ae0260801c916140c2565b91700100000000162e42fefb2fed257559bdaa0260801c916140b1565b917001000000002c5c85fdf84bd62ae30a74cc0260801c916140a0565b9170010000000058b90bfbf8479bd5a81b51ad0260801c9161408f565b91700100000000b17217f80f4ef5aadda455540260801c9161407e565b9170010000000162e42ff0999ce3541b9fffcf0260801c9161406c565b91700100000002c5c85fe31f35a6a30da1be500260801c9161405a565b917001000000058b90bfcdee5acd3c1cedc8230260801c91614048565b9170010000000b17217fba9c739aa5819f44f90260801c91614036565b917001000000162e42fff037df38aa2b219f060260801c91614024565b9170010000002c5c8601cc6b9e94213c72737a0260801c91614012565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91614000565b917001000000b1721835514b86e6d96efd1bfe0260801c91613fee565b91700100000162e430e5a18f6119e3c02282a50260801c91613fdb565b917001000002c5c863b73f016468f6bac5ca2b0260801c91613fc8565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91613fb5565b91700100000b1721bcfc99d9f890ea069117630260801c91613fa2565b9170010000162e43f4f831060e02d839a9d16d0260801c91613f8f565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c91613f7c565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c91613f69565b9170010000b17255775c040618bf4a4ade83fc0260801c91613f56565b917001000162e525ee054754457d59952920260260801c91613f42565b9170010002c5cc37da9491d0985c348c68e7b30260801c91613f2e565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91613f1a565b917001000b175effdc76ba38e31671ca9397250260801c91613f06565b91700100162f3904051fa128bca9c55c31e5df0260801c91613ef2565b917001002c605e2e8cec506d21bfc89a23a00f0260801c91613ede565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c91613eca565b91700100b1afa5abcbed6129ab13ec11dc95430260801c91613eb6565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c91613ea1565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c91613e8c565b917001059b0d31585743ae7c548eb68ca417fd0260801c91613e77565b9170010b5586cf9890f6298b92b71842a983630260801c91613e62565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c91613e4d565b917001306fe0a31b7152de8d5a46305c85edec0260801c91613e38565b6fb504f333f9de6484597d89b3754abe9f9250613e2356fea2646970667358221220eb055801e8ab9805a5a63034ae9b30d67850f64e3702721cdac9d52abc57ce0e64736f6c634300081e0033a26469706673582212206dc297f42e3884778d7b51bde94442ad2fcc13a1f26383968fa598a51672449264736f6c634300081e0033","sourceMap":"957:810:51:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c636ae73ce314610024575f80fd5b34610373576101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103735760043573ffffffffffffffffffffffffffffffffffffffff81168091036103735760243567ffffffffffffffff8111610373576100959036906004016103f8565b9060443567ffffffffffffffff8111610373576100b69036906004016103f8565b6064359067ffffffffffffffff82116103735736602383011215610373578160040135916100eb6100e684610468565b6103b4565b9060208285815201906024829560051b8201019036821161037357602401915b8183106103875750505060843580600f0b8091036103735760a43567ffffffffffffffff81116103735736602382011215610373578060040135946101526100e687610468565b91602083888152016024819860051b8301019136831161037357602401905b82821061037757505050610104359173ffffffffffffffffffffffffffffffffffffffff831680930361037357610124359373ffffffffffffffffffffffffffffffffffffffff851680950361037357610144359573ffffffffffffffffffffffffffffffffffffffff871680970361037357610164359773ffffffffffffffffffffffffffffffffffffffff8916809903610373576040519b8c9b8c926155688094019e8f9081109067ffffffffffffffff1017610346576102528f92938f94602096610260966104c49039845261018086850152610180840190610480565b916040818403910152610480565b8c810360608e01529151808352910193905f5b81811061031a575050509060209160808b015289830360a08b015251918281520195905f5b81811061030457505050918596916101609360c43560c085015260e43560e0850152610100840152610120830152610140820152015203905ff080156102f95760209073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b6040513d5f823e3d90fd5b8251885260209788019790920191600101610298565b825173ffffffffffffffffffffffffffffffffffffffff16865260209586019590920191600101610273565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f80fd5b8135815260209182019101610171565b823573ffffffffffffffffffffffffffffffffffffffff811681036103735781526020928301920161010b565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff82111761034657604052565b81601f820112156103735780359067ffffffffffffffff82116103465761044660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116016103b4565b928284526020838301011161037357815f926020809301838601378301015290565b67ffffffffffffffff81116103465760051b60200190565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f858286010152011601019056fe610140604052346106ee576155688038038061001a81610a6a565b9283398101610180828203126106ee5761003382610a8f565b60208301516001600160401b0381116106ee5782610052918501610aa3565b60408401519091906001600160401b0381116106ee5783610074918601610aa3565b60608501519094906001600160401b0381116106ee5781019284601f850112156106ee578351956100ac6100a788610af4565b610a6a565b9460208689815201906020829960051b820101908882116106ee57602001915b818310610a4a57505050608083015180600f0b81036106ee5760a08401516001600160401b0381116106ee5784019680601f890112156106ee5787516101146100a782610af4565b986020808b848152019260051b8201019283116106ee57602001905b828210610a3a5750505060c08401519760e0850151926101536101008701610a8f565b610120870151979095906001600160a01b03891689036106ee57610140880151976001600160a01b03891689036106ee576101600151986001600160a01b038a168a036106ee5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00556080526001600160a01b03168015610a27575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a38051906001600160401b0382116106335760045490600182811c92168015610a1d575b60208310146109405781601f8493116109cf575b50602090601f8311600114610969575f9261095e575b50508160011b915f199060031b1c1916176004555b8051906001600160401b0382116106335760055490600182811c92168015610954575b60208310146109405781601f849311610904575b50602090601f831160011461089e575f92610893575b50508160011b915f199060031b1c1916176005555b60018751111561084e578651906001600160401b0382116106335768010000000000000000821161063357600b5482600b55808310610814575b50600b5f5260205f205f5b8381106107f7575050505060a05285518551036107be5761033a8651610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600654836006558084106107a2575b500160065f5260205f205f5b83811061078e57505050505f5b86518110156104185761271061039c8289610b49565b5110156103e1576103ad8188610b49565b51906006548110156103cd5760019160065f528160205f20015501610386565b634e487b7160e01b5f52603260045260245ffd5b60405162461bcd60e51b815260206004820152600f60248201526e506f6f6c3a20666565203e3d20312560881b6044820152606490fd5b50866127108110156107495760c05262061a8081101561070457801580156106f2575b156106ee5760e052601080546001600160a01b0319166001600160a01b039290921691909117905561012052610100528051905f5b8281106106a7578261048181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600d5483600d5580841061068b575b5001600d5f5260205f205f5b83811061067757846104d181610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600f5483600f5580841061065b575b5001600f5f5260205f205f5b8381106106475761052085610b21565b8051906001600160401b0382116106335768010000000000000000821161063357602090600c5483600c55808410610617575b500190600c5f5260205f20915f5b82811061060357604051614a0a9081610b5e8239608051818181611ac301528181611d1401528181612067015261278a015260a051818181610f130152610f7f015260c05181818161134801526116a6015260e0518181816105ac01528181610c550152818161105d0152818161136e015281816114be0152611b9d01526101005181818161031701526105f70152610120518181816108050152610a720152f35b600190602083519301928186015501610561565b61062d90600c5f5284845f209182019101610b0b565b83610553565b634e487b7160e01b5f52604160045260245ffd5b600190602084519401938184015501610510565b61067190600f5f5284845f209182019101610b0b565b84610504565b6001906020845194019381840155016104c0565b6106a190600d5f5284845f209182019101610b0b565b846104b4565b60018101908181116106da576001600160a01b03906106c69084610b49565b51165f52600e6020528060405f2055610470565b634e487b7160e01b5f52601160045260245ffd5b5f80fd5b506001600160a01b038216151561043b565b60405162461bcd60e51b815260206004820152601960248201527f506f6f6c3a2070726f746f636f6c20666565203e3d20343025000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601560248201527f506f6f6c3a20666c61736820666565203e3d20312500000000000000000000006044820152606490fd5b600190602084519401938184015501610379565b6107b89060065f5284845f209182019101610b0b565b5f61036d565b60405162461bcd60e51b81526020600482015260116024820152700a0deded87440cccacae640d8cadccee8d607b1b6044820152606490fd5b82516001600160a01b031681830155602090920191600101610319565b600b5f52610848907f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9908101908401610b0b565b5f61030e565b60405162461bcd60e51b815260206004820152601360248201527f506f6f6c3a206e656564203e31206173736574000000000000000000000000006044820152606490fd5b015190505f806102bf565b60055f9081528281209350601f198516905b8181106108ec57509084600195949392106108d4575b505050811b016005556102d4565b01515f1960f88460031b161c191690555f80806108c6565b929360206001819287860151815501950193016108b0565b6109309060055f5260205f20601f850160051c81019160208610610936575b601f0160051c0190610b0b565b5f6102a9565b9091508190610923565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610295565b015190505f8061025d565b60045f9081528281209350601f198516905b8181106109b7575090846001959493921061099f575b505050811b01600455610272565b01515f1960f88460031b161c191690555f8080610991565b9293602060018192878601518155019501930161097b565b60045f52610a17907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f850160051c8101916020861061093657601f0160051c0190610b0b565b5f610247565b91607f1691610233565b631e4fbdf760e01b5f525f60045260245ffd5b8151815260209182019101610130565b82516001600160a01b03811681036106ee578152602092830192016100cc565b6040519190601f01601f191682016001600160401b0381118382101761063357604052565b51906001600160a01b03821682036106ee57565b81601f820112156106ee578051906001600160401b03821161063357610ad2601f8301601f1916602001610a6a565b92828452602083830101116106ee57815f9260208093018386015e8301015290565b6001600160401b0381116106335760051b60200190565b818110610b16575050565b5f8155600101610b0b565b90610b2e6100a783610af4565b8281528092610b3f601f1991610af4565b0190602036910137565b80518210156103cd5760209160051b01019056fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c908163017504b614612a8e57508063017cf661146129fc57806306fdde03146128b3578063095ea7b3146127ae5780630d246214146127405780630eeee6271461191757806318160ddd146118db5780631f3a0e411461189a57806323b872dd14611703578063313ce567146116c957806331596a6a1461167057806341c0e1b5146115da578063476e44b614611519578063491e7998146113f15780635cffe9de146112115780636863f5bc146110805780636b4082d1146110275780636b7b911214610fa55780636bba3f2f14610f495780636d8d0ff314610e8e5780636ff97f1d14610d8e57806370a0823114610d2b578063715018a614610c8f57806379a68d5314610b6b5780638da5cb5b14610b1a5780638e499bcf14610ade578063939f5ea414610a965780639517606614610a2757806395d89b41146108cd5780639af1d35a1461082e578063a1af5b9a14610765578063a9059cbb14610715578063b3f1c93d14610648578063cb717f3a146104f3578063cce516b7146104a1578063d516b8c614610416578063dd62ed3e1461039d578063e4b50cb81461033b578063f0d1ae4f146102cc5763f2fde38b0361000f57346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610228612b9d565b6102306131e9565b16801561029d5773ffffffffffffffffffffffffffffffffffffffff8254827fffffffffffffffffffffffff00000000000000000000000000000000000000008216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b6024827f1e4fbdf700000000000000000000000000000000000000000000000000000000815280600452fd5b80fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff61038d600435612c6d565b90549060031b1c16604051908152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff60406103ec612b9d565b92826103f6612bc0565b9416815260026020522091165f52602052602060405f2054604051908152f35b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043590602435916064359182600f0b83036102c95761049d61047985858561046f838261330e565b9260443591612f08565b92505050604093919351938493846040919493926060820195825260208201520152565b0390f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602073ffffffffffffffffffffffffffffffffffffffff60105416604051908152f35b5060a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761049d61062b61061c61052f612b9d565b610537612bc0565b60443573ffffffffffffffffffffffffffffffffffffffff61055882613235565b9281604051957f3dd3c8050000000000000000000000000000000000000000000000000000000060208801521660248601521660448401526064830152606435608483015260843560a483015260c48201527f000000000000000000000000000000000000000000000000000000000000000060e482015260e481526105e061010482612c2c565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016613255565b60208082518301019101612e9c565b604080519384526020840192909252908201529081906060820190565b5060807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f161067e612b9d565b73ffffffffffffffffffffffffffffffffffffffff61069b612bc0565b81604051937fb3f1c93d00000000000000000000000000000000000000000000000000000000602086015216602484015216604482015260443560648201526064356084820152608481526105e060a482612c2c565b602081519181808201938492010103126107115760209051604051908152f35b5f80fd5b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761075a610750612b9d565b60243590336130c4565b602060405160018152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761082a73ffffffffffffffffffffffffffffffffffffffff60105416604051907f2a54db010000000000000000000000000000000000000000000000000000000060208301526024820152602481526107ee604482612c2c565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016613255565b5080f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760405180916020600654928381520191600682527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f915b8181106108b75761049d856108ab81870382612c2c565b60405191829182612b1c565b8254845260209093019260019283019201610894565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576040519080600554908160011c91600181168015610a1d575b6020841081146109f0578386529081156109ab575060011461094e575b61049d8461094281860382612c2c565b60405191829182612b55565b600581527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0939250905b8082106109915750909150810160200161094282610932565b919260018160209254838588010152019101909291610978565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208087019190915292151560051b850190920192506109429150839050610932565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b92607f1692610915565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102c95760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020610ad660243560043561330e565b604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600b54604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b5060e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610b9e612b9d565b90610ba7612bc0565b906044356064356084359182600f0b809303610c8b5760c435938415158095036102c95761049d61062b61061c89898989898973ffffffffffffffffffffffffffffffffffffffff610bf98383612eb7565b9581604051987f8a3d858d0000000000000000000000000000000000000000000000000000000060208b01521660248901521660448701526064860152608485015260a484015260a43560c484015260e48301526101048201527f000000000000000000000000000000000000000000000000000000000000000061012482015261012481526107ee61014482612c2c565b8380fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957610cc66131e9565b8073ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604060209173ffffffffffffffffffffffffffffffffffffffff610d7d612b9d565b168152600183522054604051908152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957604051806020600b5491828152018091600b85527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db990855b818110610e625750505082610e0b910383612c2c565b604051928392602084019060208552518091526040840192915b818110610e33575050500390f35b825173ffffffffffffffffffffffffffffffffffffffff16845285945060209384019390920191600101610e25565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610df5565b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576106f1610ec4612b9d565b73ffffffffffffffffffffffffffffffffffffffff604051917fc5eabfb900000000000000000000000000000000000000000000000000000000602084015216602482015260243560448201527f0000000000000000000000000000000000000000000000000000000000000000600f0b6064820152606481526105e0608482612c2c565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f0000000000000000000000000000000000000000000000000000000000000000600f0b8152f35b50346102c95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95773ffffffffffffffffffffffffffffffffffffffff610ff2612b9d565b610ffa6131e9565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000601054161760105580f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c95760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576110b8612b9d565b6110c0612bc0565b90608435801515809103610c8b5773ffffffffffffffffffffffffffffffffffffffff6111429381604051947f6863f5bc0000000000000000000000000000000000000000000000000000000060208701521660248501521660448301526044356064830152606435608483015260a482015260a481526105e060c482612c2c565b805181019060208181840193031261120d5760208101519067ffffffffffffffff8211610c8b57019181603f840112156102c95760208301519267ffffffffffffffff84116111e0578360051b91604051946111a16020850187612c2c565b855260208080870194840101019384116102c95750604001905b8282106111d0576040518061049d8682612b1c565b81518152602091820191016111bb565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8280fd5b50346102c95760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760043573ffffffffffffffffffffffffffffffffffffffff81168091036113e95761126a612bc0565b60643567ffffffffffffffff8111610c8b5736602382011215610c8b5780600401359067ffffffffffffffff82116113ed5736602483830101116113ed576113c3937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f846107ee9560246101049673ffffffffffffffffffffffffffffffffffffffff6040519a8b987fe49cd4750000000000000000000000000000000000000000000000000000000060208b0152848a0152166044880152604435606488015260c060848801528260e48801520186860137888582860101527f000000000000000000000000000000000000000000000000000000000000000060a48501527f000000000000000000000000000000000000000000000000000000000000000060c48501520116810103017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612c2c565b6020818051810103126113e957602001518015158091036113e957602090604051908152f35b5080fd5b8480fd5b50346102c95760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957611429612b9d565b611431612bc0565b906064359160a4358015158091036113ed578373ffffffffffffffffffffffffffffffffffffffff6114656114f496613235565b9381604051967f8d01fa440000000000000000000000000000000000000000000000000000000060208901521660248701521660448501526044356064850152608484015260843560a484015260c483015260e48201527f000000000000000000000000000000000000000000000000000000000000000061010482015261010481526105e061012482612c2c565b6040818051810103126113e95780604060208193015191015182519182526020820152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576060602060405161155881612be3565b838152015260405161156981612be3565b600954600f0b8152611579612e08565b906020810191825260405192839260208452606084019251600f0b6020850152519160408085015282518091526020608085019301915b8181106115be575050500390f35b8251600f0b8452859450602093840193909201916001016115b0565b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576116116131e9565b60085460ff811615611621575080f35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001176008557f0f8eeedbc400fd6686703559f58d1e6143fdaed533f19a86c93d67a2fe4fb3318180a180f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060405160128152f35b50346102c95760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c95761173b612b9d565b611743612bc0565b6044359173ffffffffffffffffffffffffffffffffffffffff811680855260026020526040852073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f2054907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82106117c0575b505061075a93506130c4565b84821061186657801561183a57331561180e578560409161075a975260026020522073ffffffffffffffffffffffffffffffffffffffff33165f526020528360405f20910390555f806117b4565b6024867f94280d6200000000000000000000000000000000000000000000000000000000815280600452fd5b6024867fe602df0500000000000000000000000000000000000000000000000000000000815280600452fd5b60648686847ffb8f41b200000000000000000000000000000000000000000000000000000000835233600452602452604452fd5b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c957602060ff600854166040519015158152f35b50346102c957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102c9576020600354604051908152f35b506101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107115761194b612b9d565b602435917fffffffff00000000000000000000000000000000000000000000000000000000831690818403610711576044359173ffffffffffffffffffffffffffffffffffffffff83169485840361071157606435956084359560c4359687600f0b9687890361071157610104359860e4358a15158b036107115760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146127185760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005560ff600854166126ba5780159081156126af575b501561265157611a4690611a3b848d612eb7565b9060a435858e612f08565b9c859e95979392949f915073ffffffffffffffffffffffffffffffffffffffff611a6f83612c6d565b90549060031b1c169a73ffffffffffffffffffffffffffffffffffffffff611a9686612c6d565b90549060031b1c169c80155f146122df57505050878a73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001698898214806122d5575b156121fe57505050863b15610711575f8e976004604051809a81937fd0e30db00000000000000000000000000000000000000000000000000000000083525af19687156121f3578f908f908f996121dc575b50611b76611b98915b611b71611b5486612cb2565b90549060031b1c611b6487612cca565b90549060031b1c90612d4c565b612d4c565b91611b93611b8387612cb2565b90549060031b1c611b6488612cca565b612d12565b908d987f000000000000000000000000000000000000000000000000000000000000000090811515806121d3575b61214a575b5050611c6991611c4b611c0c611c6093611bf6611be788612cca565b90549060031b1c821015612da3565b611bff87612cca565b90549060031b1c90612d12565b611c1586612cb2565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b611c57611be787612cca565b611bff86612cca565b611c1585612cb2565b8b82600f0b13156120ec578b84600f0b131561208e57611cf293611cda82611cb2611cac611cb296611c9d611cac97613084565b90549060031b1c600f0b6133db565b91613084565b9091906fffffffffffffffffffffffffffffffff83549160031b928116831b921b1916179055565b611ce384613084565b90549060031b1c600f0b613433565b8061204f575b15611f895773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b15611f855787809160248d60405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af18015611f7a579188918c93611f5c575b5081809381925af13d15611f57573d67ffffffffffffffff8111611f2a5760405190611dd760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160183612c2c565b81528760203d92013e5b15611ecc577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a0915b611e16818a612d12565b73ffffffffffffffffffffffffffffffffffffffff604051931683528a60208401528b604084015260608301526080820152a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015611e9b575b50505061049d90604051938493846040919493926060820195825260208201520152565b8280809381938290611ec3575b3390f115611eb7578080611e77565b604051903d90823e3d90fd5b506108fc611ea8565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b611de1565b611f699193508290612c2c565b611f7657868a915f611d83565b8680fd5b6040513d8a823e3d90fd5b8780fd5b506040517fa9059cbb0000000000000000000000000000000000000000000000000000000087528360045289602452602087604481808a5af190600188511482161561202e575b60405215612002577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c9160a091611e0c565b602486867f5274afe7000000000000000000000000000000000000000000000000000000008252600452fd5b90600181151661204657863b15153d15161690611fd0565b503d87823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168614611cf8565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a20616d6f756e744f7574203c3d20300000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4d53523a20616d6f756e74496e203c3d2030000000000000000000000000006044820152fd5b611c60929a50611c0c620f4240612168611c699694611c4b94612d59565b049b8c61217b575b93505050918f611bcb565b6121ce8d61219a61218b8a612cca565b91909283548360031b1c612d4c565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b612170565b50801515611bc6565b6121e9919e505f90612c2c565b5f9c611b76611b3f565b6040513d5f823e3d90fd5b60209293949596979899505f80809360649373ffffffffffffffffffffffffffffffffffffffff604051987f23b872dd00000000000000000000000000000000000000000000000000000000855216600452306024526044525af19060015f51148216156122b4575b6040525f6060521561228857908b95949392918e611b988f611b7690611b48565b887f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9060018115166122cc578a3b15153d15161690612267565b503d5f823e3d90fd5b5080341015611aed565b92985090917c0100000000000000000000000000000000000000000000000000000000036124a55750612421576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526020816024818d5afa80156121f3578e915f916123ea575b50612377906123716123618a612cb2565b90549060031b1c611b648b612cca565b90612d12565b0361238c578b958e611b988f611b7690611b48565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496e636f72726563742070726566756e64696e6720616d6f756e7400000000006044820152fd5b9150506020813d602011612419575b8161240660209383612c2c565b8101031261071157518d90612377612350565b3d91506123f9565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f50726566756e64696e672063616e6e6f7420626520757365642077697468206160448201527f206c696d697420707269636500000000000000000000000000000000000000006064820152fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015291506020826024818e5afa9182156121f3578f905f93612619575b506024929161251d916040519160208301528d85830152604482015260448152612517606482612c2c565b8a6133b8565b5060208b604051938480927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa80156121f3578f925f916125e0575b509061256d91612d12565b03612582578b958e611b988f611b7690611b48565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e742066756e647300000000000000000000000000006044820152fd5b919250506020813d602011612611575b816125fd60209383612c2c565b8101031261071157518e919061256d612562565b3d91506125f0565b9250506020823d602011612649575b8161263560209383612c2c565b81010312610711579051908e61251d6124ec565b3d9150612628565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f737761703a20646561646c696e652065786365656465640000000000000000006044820152fd5b90504211155f611a27565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346107115760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576127e5612b9d565b6024359033156128875773ffffffffffffffffffffffffffffffffffffffff1690811561285b57335f52600260205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610711576040515f6004548060011c906001811680156129f2575b6020831081146129c5578285529081156129835750600114612925575b61049d8361094281850382612c2c565b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b80821061296957509091508101602001610942612915565b919260018160209254838588010152019101909291612951565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b840190910191506109429050612915565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916128f8565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157604051806020600d54918281520190600d5f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5905f5b818110612a785761049d856108ab81870382612c2c565b8254845260209093019260019283019201612a61565b34610711575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261071157600c548082526020820190600c5f527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7905f5b818110612b065761049d856108ab81870382612c2c565b8254845260209093019260019283019201612aef565b60206040818301928281528451809452019201905f5b818110612b3f5750505090565b8251845260209384019390920191600101612b32565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361071157565b6040810190811067ffffffffffffffff821117612bff57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612bff57604052565b600b54811015612c8557600b5f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600f54811015612c8557600f5f5260205f2001905f90565b600c54811015612c8557600c5f5260205f2001905f90565b600d54811015612c8557600d5f5260205f2001905f90565b600654811015612c855760065f5260205f2001905f90565b91908203918211612d1f57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b91908201809211612d1f57565b81810292918115918404141715612d1f57565b8115612d76570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b15612daa57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f62616c616e6365203c2070726f746f636f6c206f7765640000000000000000006044820152fd5b60405190600a548083528260208101600a5f5260205f20925f905b806001830110612e7057612e49945491818110612e5c575b10612e4b575b500383612c2c565b565b60801d600f0b81526020015f612e41565b92602060019184600f0b8152019301612e3b565b9160029193506040600191865480600f0b825260801d600f0b6020820152019401920185929391612e23565b90816060910312610711578051916040602083015192015190565b9190826103e8026103e881048403612d1f5781612ed391612d4c565b90815f52600760205260405f2054938415612eed57505050565b612ef892945061330e565b915f5260076020528160405f2055565b92949394919091612f34612f1c878461332b565b9050612f2786612ce2565b90549060031b1c90613489565b905f82600f0b131561302657612f5a918486600954600f0b612f54612e08565b90613722565b919092612f798394612f6c8197612ce2565b90549060031b1c9061334d565b925f92849880613005575b508811612fa757612f97612fa492612ce2565b90549060031b1c906136b3565b94565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f737761703a207472616e736665722065786365656473206d61780000000000006044820152fd5b9098506130149193508461337f565b9161301f8385612d4c565b975f612f84565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761703a20696e70757420746f6f20736d616c6c20616674657220666565006044820152fd5b90600a54821015612c8557600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b73ffffffffffffffffffffffffffffffffffffffff169081156131bd5773ffffffffffffffffffffffffffffffffffffffff1691821561319157815f52600160205260405f205481811061315f57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f52600184520360405f2055845f526001825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff5f5416330361320957565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b600654156132505761324690612cfa565b90549060031b1c90565b505f90565b905f8091602081519101845af480806132fb575b1561327b575050613278613470565b90565b156132c25773ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b3d156132d3576040513d5f823e3d90fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b503d1515806132695750813b1515613269565b90611b6461331e61327893612cfa565b90549060031b1c91612cfa565b9190801561334757613340613278918461337f565b8093612d12565b505f9190565b61336161335a83836136b3565b9283613489565b90600f0b90600f0b126133715790565b60018101809111612d1f5790565b9080156133b25761338f91612d59565b620f4240810190818111612d1f57620f423f01908111612d1f57620f4240900490565b50505f90565b905f809160208151910182855af180806132fb571561327b575050613278613470565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613419575b1561071157600f0b90565b506f7fffffffffffffffffffffffffffffff81131561340e565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613419571561071157600f0b90565b604051903d82523d5f602084013e60203d830101604052565b81156107115777ffffffffffffffffffffffffffffffffffffffffffffffff811161350157906134bb9160401b612d6c565b6fffffffffffffffffffffffffffffffff8111610711576fffffffffffffffffffffffffffffffff166f7fffffffffffffffffffffffffffffff811161071157600f0b90565b60c09181831c80936401000000008210156136a6575b600282620100006135a494101561369a575b61010081101561368e575b6010811015613682575b6004811015613677575b101561366f575b8360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b612d6c565b926fffffffffffffffffffffffffffffffff8411610711578160801c8402906fffffffffffffffffffffffffffffffff8316850290809460401b90828210613645575b5003928160801b9182851061361c575b60801c03613611576136099203612d6c565b905b016134bb565b50505060019061360b565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906135f7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f6135e7565b60010161354f565b91810191811c613548565b6004928301921c61353e565b6008928301921c613534565b6010928301921c613529565b505060e082811c90613517565b81156133b257600f0b5f8112610711576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116107115760401b81198111610711570190565b8051821015612c855760209160051b010190565b955f959194939092849290875b875189101561375a576137526001916137488b8b61370e565b51600f0b906133db565b98019761372f565b909294975097909294975f81600f0b1315613b985761377891613bf6565b9384600f0b80156107115770010000000000000000000000000000000005917fffffffffffffffffffffffffffffffff8000000000000000000000000000000083121580613b7e575b15610711576137fd613802916137f86137e095600f0b9586928b61370e565b51600f0b6137ee898c61370e565b51600f0b90613433565b613bf6565b613c36565b9280600f0b905f82136139ee575b50509061381c91613bf6565b80600f0b68200000000000000000811361396a577fffffffffffffffffffffffffffffffff800000000000000000000000000000001461071157613864905f03600f0b613c36565b600f0b6801000000000000000003907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082121580613950575b15610711576138af91600f0b90613bf6565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613936575b1561071157600f0b925f84131561392257505061390661390c92613c93565b90613bf6565b905f82600f0b131561391a57565b5f9250829150565b90915061392f925061370e565b51600f0b90565b506f7fffffffffffffffffffffffffffffff8113156138e7565b506f7fffffffffffffffffffffffffffffff82131561389d565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4c4d53523a20612f6220746f6f206c617267652028776f756c64206f7665726660448201527f6c6f7720657870290000000000000000000000000000000000000000000000006064820152fd5b84600f9a939a0b80921315613afa5781156107115760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613ae0575b1561071157600f0b5f811315613a8257613a50613a5691613c93565b86613bf6565b9780600f0b89600f0b125f14613a7657505061381c90875b90915f613810565b61381c92919850613a6e565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4c4d53523a20726174696f3c3d300000000000000000000000000000000000006044820152fd5b506f7fffffffffffffffffffffffffffffff811315613a34565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4c4d53523a206c696d69745072696365203c3d2063757272656e74207072696360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152fd5b506f7fffffffffffffffffffffffffffffff8313156137c1565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613419571561071157600f0b90565b600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000811261325057700171547652b82fe1777d0ffda0d23a7d12613278910260801d600f0b613dc0565b600f0b5f811315610711575f908068010000000000000000821215613db3575b806401000000006002921215613da7575b62010000811215613d9b575b610100811215613d8f575b6010811215613d83575b6004811215613d78575b1215613d6e575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f8313613d5257506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d90565b8002908160ff1c9182607f011c918302019160011d9190613d2d565b9060010190613cf6565b92810192811d613cef565b6004938401931d613ce5565b6008938401931d613cdb565b6010938401931d613cd0565b6020938401931d613cc4565b506040915080821d613cb3565b80600f0b68400000000000000000811215610711577fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000081126133b2576f80000000000000000000000000000000915f6780000000000000008216600f0b136149bc575b5f6740000000000000008216600f0b1361499f575b5f6720000000000000008216600f0b13614982575b5f6710000000000000008216600f0b13614965575b5f6708000000000000008216600f0b13614948575b5f6704000000000000008216600f0b1361492b575b5f6702000000000000008216600f0b1361490e575b5f6701000000000000008216600f0b136148f1575b5f66800000000000008216600f0b136148d4575b5f66400000000000008216600f0b136148b7575b5f66200000000000008216600f0b1361489a575b5f66100000000000008216600f0b1361487d575b5f66080000000000008216600f0b13614860575b5f66040000000000008216600f0b13614843575b5f66020000000000008216600f0b13614826575b5f66010000000000008216600f0b13614809575b5f658000000000008216600f0b136147ec575b5f654000000000008216600f0b136147cf575b5f652000000000008216600f0b136147b2575b5f651000000000008216600f0b13614795575b5f650800000000008216600f0b13614778575b5f650400000000008216600f0b1361475b575b5f650200000000008216600f0b1361473e575b5f650100000000008216600f0b13614721575b5f6480000000008216600f0b13614704575b5f6440000000008216600f0b136146e7575b5f6420000000008216600f0b136146ca575b5f6410000000008216600f0b136146ad575b5f6408000000008216600f0b13614690575b5f6404000000008216600f0b13614673575b5f6402000000008216600f0b13614656575b5f6401000000008216600f0b13614639575b5f63800000008216600f0b1361461c575b5f63400000008216600f0b136145ff575b5f63200000008216600f0b136145e2575b5f63100000008216600f0b136145c5575b5f63080000008216600f0b136145a8575b5f63040000008216600f0b1361458b575b5f63020000008216600f0b1361456e575b5f63010000008216600f0b13614551575b5f628000008216600f0b13614534575b5f624000008216600f0b13614517575b5f622000008216600f0b136144fa575b5f621000008216600f0b136144dd575b5f620800008216600f0b136144c0575b5f620400008216600f0b136144a3575b5f620200008216600f0b13614486575b5f620100008216600f0b13614469575b5f6180008216600f0b1361444c575b5f6140008216600f0b1361442f575b5f6120008216600f0b13614412575b5f6110008216600f0b136143f5575b5f6108008216600f0b136143d8575b5f6104008216600f0b136143bb575b5f6102008216600f0b1361439e575b5f6101008216600f0b13614381575b5f60808216600f0b13614364575b5f60408216600f0b13614347575b5f60208216600f0b1361432a575b5f60108216600f0b1361430d575b5f60088216600f0b136142f0575b5f60048216600f0b136142d3575b5f60028216600f0b136142b5575b60015f9116600f0b13614298575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161071157600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c9061426e565b7001000000000000000162e42fefa39ef35890920260801c91614260565b9170010000000000000002c5c85fdf473de6b20260801c91614252565b91700100000000000000058b90bfbe8e7bcd6d0260801c91614244565b917001000000000000000b17217f7d1cf79afa0260801c91614236565b91700100000000000000162e42fefa39ef366f0260801c91614228565b917001000000000000002c5c85fdf473de6eca0260801c9161421a565b9170010000000000000058b90bfbe8e7bce5440260801c9161420c565b91700100000000000000b17217f7d1cf79e9490260801c916141fe565b9170010000000000000162e42fefa39ef44d910260801c916141ef565b91700100000000000002c5c85fdf473dea871f0260801c916141e0565b917001000000000000058b90bfbe8e7bdcbe2e0260801c916141d1565b9170010000000000000b17217f7d1cf7d83c1a0260801c916141c2565b917001000000000000162e42fefa39f02b772c0260801c916141b3565b9170010000000000002c5c85fdf473e242ea380260801c916141a4565b91700100000000000058b90bfbe8e7cc35c3f00260801c91614195565b917001000000000000b17217f7d1cfb72b45e10260801c91614186565b91700100000000000162e42fefa39fe95583c20260801c91614176565b917001000000000002c5c85fdf4741bea6e77e0260801c91614166565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c91614156565b91700100000000000b17217f7d1d351a389d400260801c91614146565b9170010000000000162e42fefa3ae53369388c0260801c91614136565b91700100000000002c5c85fdf477b662b269450260801c91614126565b917001000000000058b90bfbe8f71cb4e4b33d0260801c91614116565b9170010000000000b17217f7d20cf927c8e94c0260801c91614106565b917001000000000162e42fefa494f1478fde050260801c916140f5565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c916140e4565b91700100000000058b90bfbe9ddbac5e109cce0260801c916140d3565b917001000000000b17217f7d5a7716bba4a9ae0260801c916140c2565b91700100000000162e42fefb2fed257559bdaa0260801c916140b1565b917001000000002c5c85fdf84bd62ae30a74cc0260801c916140a0565b9170010000000058b90bfbf8479bd5a81b51ad0260801c9161408f565b91700100000000b17217f80f4ef5aadda455540260801c9161407e565b9170010000000162e42ff0999ce3541b9fffcf0260801c9161406c565b91700100000002c5c85fe31f35a6a30da1be500260801c9161405a565b917001000000058b90bfcdee5acd3c1cedc8230260801c91614048565b9170010000000b17217fba9c739aa5819f44f90260801c91614036565b917001000000162e42fff037df38aa2b219f060260801c91614024565b9170010000002c5c8601cc6b9e94213c72737a0260801c91614012565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91614000565b917001000000b1721835514b86e6d96efd1bfe0260801c91613fee565b91700100000162e430e5a18f6119e3c02282a50260801c91613fdb565b917001000002c5c863b73f016468f6bac5ca2b0260801c91613fc8565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91613fb5565b91700100000b1721bcfc99d9f890ea069117630260801c91613fa2565b9170010000162e43f4f831060e02d839a9d16d0260801c91613f8f565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c91613f7c565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c91613f69565b9170010000b17255775c040618bf4a4ade83fc0260801c91613f56565b917001000162e525ee054754457d59952920260260801c91613f42565b9170010002c5cc37da9491d0985c348c68e7b30260801c91613f2e565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91613f1a565b917001000b175effdc76ba38e31671ca9397250260801c91613f06565b91700100162f3904051fa128bca9c55c31e5df0260801c91613ef2565b917001002c605e2e8cec506d21bfc89a23a00f0260801c91613ede565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c91613eca565b91700100b1afa5abcbed6129ab13ec11dc95430260801c91613eb6565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c91613ea1565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c91613e8c565b917001059b0d31585743ae7c548eb68ca417fd0260801c91613e77565b9170010b5586cf9890f6298b92b71842a983630260801c91613e62565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c91613e4d565b917001306fe0a31b7152de8d5a46305c85edec0260801c91613e38565b6fb504f333f9de6484597d89b3754abe9f9250613e2356fea2646970667358221220eb055801e8ab9805a5a63034ae9b30d67850f64e3702721cdac9d52abc57ce0e64736f6c634300081e0033a26469706673582212206dc297f42e3884778d7b51bde94442ad2fcc13a1f26383968fa598a51672449264736f6c634300081e0033","sourceMap":"957:810:51:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1459:299;;;;;;;;;;;;;;;957:810;-1:-1:-1;1459:299:51;;;957:810;1459:299;;;;;957:810;1459:299;957:810;1459:299;;;;957:810;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1459:299;;957:810;1459:299;;;;;957:810;;;;;;;;;;1459:299;957:810;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1459:299;957:810;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;957:810:51;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;957:810:51;;;;;;;;;;;:::o","linkReferences":{}},"methodIdentifiers":{"deploy(address,string,string,address[],int128,uint256[],uint256,uint256,address,address,address,address)":"6ae73ce3"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens_\",\"type\":\"address[]\"},{\"internalType\":\"int128\",\"name\":\"kappa_\",\"type\":\"int128\"},{\"internalType\":\"uint256[]\",\"name\":\"fees_\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"flashFeePpm_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolFeePpm_\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"protocolFeeAddress_\",\"type\":\"address\"},{\"internalType\":\"contract NativeWrapper\",\"name\":\"wrapper_\",\"type\":\"address\"},{\"internalType\":\"contract PartyPoolSwapImpl\",\"name\":\"swapImpl_\",\"type\":\"address\"},{\"internalType\":\"contract PartyPoolMintImpl\",\"name\":\"mintImpl_\",\"type\":\"address\"}],\"name\":\"deploy\",\"outputs\":[{\"internalType\":\"contract IPartyPool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/PartyPoolDeployer.sol\":\"PartyPoolDeployer\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/abdk-libraries-solidity/ABDKMath64x64.sol\":{\"keccak256\":\"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97\",\"license\":\"BSD-4-Clause\",\"urls\":[\"bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7\",\"dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol\":{\"keccak256\":\"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd\",\"dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd\",\"dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168\",\"dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd274645d15bb7e4fcb9c833e401b2c5837404f90057f11a49118f25e0af7c76f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d38e0b997bb7aebae26d190b03d0991feb0d204c45f945e60014e1ca9175de69\",\"dweb:/ipfs/QmWzsUHHAZcjMyF8uMDEtNpMTkYZdQrfvdKPobXvwVHKo6\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x50e81a8b089e3f382b6c915aa0166773de64ea4756e8f9479d9943a5f956ddf5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bfeb96a150537222e2191c03887127499a4f21dfb5f9a7211da4d81749b52848\",\"dweb:/ipfs/QmYR75ECbsBuxSiXmGvGfNKJRLoK5MdLUZL1bd8SixzxL4\"]},\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161\",\"dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"src/ERC20External.sol\":{\"keccak256\":\"0x421f511bb3aa7258fb7121aa66b9a2e8e0b7a07b7e51c800c714f7acbfd599d3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b3fde56a83eae12a31eb4875d8952a99d18591fe0f18b6a12392c8f48f76af46\",\"dweb:/ipfs/QmeApbmGv6Z2b1JynvBxaAK1j1eWhGYpeNEP56V8XXvpcz\"]},\"src/ERC20Internal.sol\":{\"keccak256\":\"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f\",\"dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk\"]},\"src/Funding.sol\":{\"keccak256\":\"0x1d505b256d221cec151157083f8441193bbf7859d13873353429a7ca5342381d\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6871ab97d81ddffc56845142601408e974b7b0c619a2107aacd6b17eafb3330c\",\"dweb:/ipfs/QmU5EKjGN2vDPgXhSsr4qvesq2T5eR5Ybeg25bHrcJyP2y\"]},\"src/IOwnable.sol\":{\"keccak256\":\"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1\",\"dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9\"]},\"src/IPartyPool.sol\":{\"keccak256\":\"0x74b9531bdf2200f256cac6c2cd54c0efad7c1bdfbe694ee910df75448ffe93f4\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://aadd161d7e197b48e6be4198b0f4f81a10016b9904d024e0a361bf2d7f941475\",\"dweb:/ipfs/QmYuGyPZCigmt8va11oAHXPTpHFyF3d7ARDNacyr2jsDfa\"]},\"src/LMSRStabilized.sol\":{\"keccak256\":\"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3\",\"dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB\"]},\"src/LMSRStabilizedBalancedPair.sol\":{\"keccak256\":\"0x782f3baf92f74152c0b93b95199abbb3a36c75c921454260c8b0237f91d7c59d\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://04d463c4fdcb6c8e2ebf9aed649ff21cca759ba73a4c93659e30c7df25e26c81\",\"dweb:/ipfs/QmUxmWytiw5VYJRUrFbSGm1oWmDPQ4q23pnkmK1q9P4apN\"]},\"src/NativeWrapper.sol\":{\"keccak256\":\"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238\",\"dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB\"]},\"src/OwnableExternal.sol\":{\"keccak256\":\"0x0a0199368ad20a31e7169b3e56449bf022c9d680e0d487c118608a7f14cb7efb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3348a063649e01acf9c6aa6b7ce2ecf62ace8c6f1467477de7d605996f08ec64\",\"dweb:/ipfs/QmSoxb35FFsNCgXgWn91CupvjpGmyM31wcfxAVpVFFPecX\"]},\"src/OwnableInternal.sol\":{\"keccak256\":\"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca\",\"dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE\"]},\"src/PartyPool.sol\":{\"keccak256\":\"0xaf921e5a5c32ee53fc1991d20fe030ec0a9572d0a8d112e717476ee4af0b8ab4\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b4bc13e889ec6fb214ac3538203328abede9e316bf617a7f7593b3b0c9ea40f0\",\"dweb:/ipfs/QmWx12PuyFqpy9MyxqJkRvTGkzYAYHajCYps3htgwe3YrX\"]},\"src/PartyPoolBalancedPair.sol\":{\"keccak256\":\"0x7d36ae211709da83ecafcc70f31e5fcdc1bc299243eedceebf17f26339757d7b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://91762575c367c9b1d50a633fb46ccf429a28bbaf70f76b524749ad32dc716d7a\",\"dweb:/ipfs/QmVLxjR3h2XJukjXFx56b4m8SPg6oupxqkzY5EKCK7GFHn\"]},\"src/PartyPoolBase.sol\":{\"keccak256\":\"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5\",\"dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5\"]},\"src/PartyPoolDeployer.sol\":{\"keccak256\":\"0xdf2a6a8602eba3aef625c798a0ec6525feb7520c2fd6933c30dd76fe3c4e2618\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9aa94963e0d34feddf63b3ae034874557229740be1ef80f49e87bd05694c9b50\",\"dweb:/ipfs/QmYQ6mH1mEJCJ9XNGdT3saRU3q36GZ94WuyRsn9LRWXtbM\"]},\"src/PartyPoolHelpers.sol\":{\"keccak256\":\"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5\",\"dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP\"]},\"src/PartyPoolMintImpl.sol\":{\"keccak256\":\"0xe9d9927cecd46a1f836b2c43e9d6184642b9e695c7462e5fb7c671a38aab7398\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8d821911d7982fc302929198539b27f72be100b91450c98d2e0081519f776499\",\"dweb:/ipfs/QmRChx1DPD1gKXwfD1m6aQ7pgh1aX6CvYLNX41ufdJteaJ\"]},\"src/PartyPoolSwapImpl.sol\":{\"keccak256\":\"0x71ecbd6d0fb106031baed7e4c21694ef24f0112af7d975325b98b1b0463ba5b2\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://64f8f8bae2f89ca495b9edacd012363b55e78a198f100650beb2b1238e8ef11f\",\"dweb:/ipfs/QmVfihiw9TqncuEfZKx7c6WEHiGFfRQyhtfdTGzfN7emNY\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"contract IERC20[]","name":"tokens_","type":"address[]"},{"internalType":"int128","name":"kappa_","type":"int128"},{"internalType":"uint256[]","name":"fees_","type":"uint256[]"},{"internalType":"uint256","name":"flashFeePpm_","type":"uint256"},{"internalType":"uint256","name":"protocolFeePpm_","type":"uint256"},{"internalType":"address","name":"protocolFeeAddress_","type":"address"},{"internalType":"contract NativeWrapper","name":"wrapper_","type":"address"},{"internalType":"contract PartyPoolSwapImpl","name":"swapImpl_","type":"address"},{"internalType":"contract PartyPoolMintImpl","name":"mintImpl_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deploy","outputs":[{"internalType":"contract IPartyPool","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/PartyPoolDeployer.sol":"PartyPoolDeployer"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/abdk-libraries-solidity/ABDKMath64x64.sol":{"keccak256":"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97","urls":["bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7","dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN"],"license":"BSD-4-Clause"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d","urls":["bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100","dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc","urls":["bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037","dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44","urls":["bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d","dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol":{"keccak256":"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e","urls":["bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd","dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86","urls":["bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd","dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9","urls":["bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168","dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd274645d15bb7e4fcb9c833e401b2c5837404f90057f11a49118f25e0af7c76f","urls":["bzz-raw://d38e0b997bb7aebae26d190b03d0991feb0d204c45f945e60014e1ca9175de69","dweb:/ipfs/QmWzsUHHAZcjMyF8uMDEtNpMTkYZdQrfvdKPobXvwVHKo6"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/LowLevelCall.sol":{"keccak256":"0x50e81a8b089e3f382b6c915aa0166773de64ea4756e8f9479d9943a5f956ddf5","urls":["bzz-raw://bfeb96a150537222e2191c03887127499a4f21dfb5f9a7211da4d81749b52848","dweb:/ipfs/QmYR75ECbsBuxSiXmGvGfNKJRLoK5MdLUZL1bd8SixzxL4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol":{"keccak256":"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0","urls":["bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161","dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"},"src/ERC20External.sol":{"keccak256":"0x421f511bb3aa7258fb7121aa66b9a2e8e0b7a07b7e51c800c714f7acbfd599d3","urls":["bzz-raw://b3fde56a83eae12a31eb4875d8952a99d18591fe0f18b6a12392c8f48f76af46","dweb:/ipfs/QmeApbmGv6Z2b1JynvBxaAK1j1eWhGYpeNEP56V8XXvpcz"],"license":"UNLICENSED"},"src/ERC20Internal.sol":{"keccak256":"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36","urls":["bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f","dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk"],"license":"UNLICENSED"},"src/Funding.sol":{"keccak256":"0x1d505b256d221cec151157083f8441193bbf7859d13873353429a7ca5342381d","urls":["bzz-raw://6871ab97d81ddffc56845142601408e974b7b0c619a2107aacd6b17eafb3330c","dweb:/ipfs/QmU5EKjGN2vDPgXhSsr4qvesq2T5eR5Ybeg25bHrcJyP2y"],"license":"UNLICENSED"},"src/IOwnable.sol":{"keccak256":"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990","urls":["bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1","dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9"],"license":"MIT"},"src/IPartyPool.sol":{"keccak256":"0x74b9531bdf2200f256cac6c2cd54c0efad7c1bdfbe694ee910df75448ffe93f4","urls":["bzz-raw://aadd161d7e197b48e6be4198b0f4f81a10016b9904d024e0a361bf2d7f941475","dweb:/ipfs/QmYuGyPZCigmt8va11oAHXPTpHFyF3d7ARDNacyr2jsDfa"],"license":"UNLICENSED"},"src/LMSRStabilized.sol":{"keccak256":"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b","urls":["bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3","dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB"],"license":"UNLICENSED"},"src/LMSRStabilizedBalancedPair.sol":{"keccak256":"0x782f3baf92f74152c0b93b95199abbb3a36c75c921454260c8b0237f91d7c59d","urls":["bzz-raw://04d463c4fdcb6c8e2ebf9aed649ff21cca759ba73a4c93659e30c7df25e26c81","dweb:/ipfs/QmUxmWytiw5VYJRUrFbSGm1oWmDPQ4q23pnkmK1q9P4apN"],"license":"UNLICENSED"},"src/NativeWrapper.sol":{"keccak256":"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579","urls":["bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238","dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB"],"license":"UNLICENSED"},"src/OwnableExternal.sol":{"keccak256":"0x0a0199368ad20a31e7169b3e56449bf022c9d680e0d487c118608a7f14cb7efb","urls":["bzz-raw://3348a063649e01acf9c6aa6b7ce2ecf62ace8c6f1467477de7d605996f08ec64","dweb:/ipfs/QmSoxb35FFsNCgXgWn91CupvjpGmyM31wcfxAVpVFFPecX"],"license":"MIT"},"src/OwnableInternal.sol":{"keccak256":"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581","urls":["bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca","dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE"],"license":"MIT"},"src/PartyPool.sol":{"keccak256":"0xaf921e5a5c32ee53fc1991d20fe030ec0a9572d0a8d112e717476ee4af0b8ab4","urls":["bzz-raw://b4bc13e889ec6fb214ac3538203328abede9e316bf617a7f7593b3b0c9ea40f0","dweb:/ipfs/QmWx12PuyFqpy9MyxqJkRvTGkzYAYHajCYps3htgwe3YrX"],"license":"UNLICENSED"},"src/PartyPoolBalancedPair.sol":{"keccak256":"0x7d36ae211709da83ecafcc70f31e5fcdc1bc299243eedceebf17f26339757d7b","urls":["bzz-raw://91762575c367c9b1d50a633fb46ccf429a28bbaf70f76b524749ad32dc716d7a","dweb:/ipfs/QmVLxjR3h2XJukjXFx56b4m8SPg6oupxqkzY5EKCK7GFHn"],"license":"UNLICENSED"},"src/PartyPoolBase.sol":{"keccak256":"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999","urls":["bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5","dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5"],"license":"UNLICENSED"},"src/PartyPoolDeployer.sol":{"keccak256":"0xdf2a6a8602eba3aef625c798a0ec6525feb7520c2fd6933c30dd76fe3c4e2618","urls":["bzz-raw://9aa94963e0d34feddf63b3ae034874557229740be1ef80f49e87bd05694c9b50","dweb:/ipfs/QmYQ6mH1mEJCJ9XNGdT3saRU3q36GZ94WuyRsn9LRWXtbM"],"license":"UNLICENSED"},"src/PartyPoolHelpers.sol":{"keccak256":"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c","urls":["bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5","dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP"],"license":"UNLICENSED"},"src/PartyPoolMintImpl.sol":{"keccak256":"0xe9d9927cecd46a1f836b2c43e9d6184642b9e695c7462e5fb7c671a38aab7398","urls":["bzz-raw://8d821911d7982fc302929198539b27f72be100b91450c98d2e0081519f776499","dweb:/ipfs/QmRChx1DPD1gKXwfD1m6aQ7pgh1aX6CvYLNX41ufdJteaJ"],"license":"UNLICENSED"},"src/PartyPoolSwapImpl.sol":{"keccak256":"0x71ecbd6d0fb106031baed7e4c21694ef24f0112af7d975325b98b1b0463ba5b2","urls":["bzz-raw://64f8f8bae2f89ca495b9edacd012363b55e78a198f100650beb2b1238e8ef11f","dweb:/ipfs/QmVfihiw9TqncuEfZKx7c6WEHiGFfRQyhtfdTGzfN7emNY"],"license":"UNLICENSED"}},"version":1},"id":51} \ No newline at end of file diff --git a/deployment/11155111/v1/out/PartyPoolHelpers.sol/PartyPoolHelpers.json b/deployment/11155111/v1/out/PartyPoolHelpers.sol/PartyPoolHelpers.json index 7fb9974..9253343 100644 --- a/deployment/11155111/v1/out/PartyPoolHelpers.sol/PartyPoolHelpers.json +++ b/deployment/11155111/v1/out/PartyPoolHelpers.sol/PartyPoolHelpers.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/PartyPoolHelpers.sol\":\"PartyPoolHelpers\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/abdk-libraries-solidity/ABDKMath64x64.sol\":{\"keccak256\":\"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97\",\"license\":\"BSD-4-Clause\",\"urls\":[\"bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7\",\"dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN\"]},\"src/PartyPoolHelpers.sol\":{\"keccak256\":\"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5\",\"dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/PartyPoolHelpers.sol":"PartyPoolHelpers"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/abdk-libraries-solidity/ABDKMath64x64.sol":{"keccak256":"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97","urls":["bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7","dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN"],"license":"BSD-4-Clause"},"src/PartyPoolHelpers.sol":{"keccak256":"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c","urls":["bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5","dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP"],"license":"UNLICENSED"}},"version":1},"id":53} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/PartyPoolHelpers.sol\":\"PartyPoolHelpers\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/abdk-libraries-solidity/ABDKMath64x64.sol\":{\"keccak256\":\"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97\",\"license\":\"BSD-4-Clause\",\"urls\":[\"bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7\",\"dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN\"]},\"src/PartyPoolHelpers.sol\":{\"keccak256\":\"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5\",\"dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/PartyPoolHelpers.sol":"PartyPoolHelpers"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/abdk-libraries-solidity/ABDKMath64x64.sol":{"keccak256":"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97","urls":["bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7","dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN"],"license":"BSD-4-Clause"},"src/PartyPoolHelpers.sol":{"keccak256":"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c","urls":["bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5","dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP"],"license":"UNLICENSED"}},"version":1},"id":52} \ No newline at end of file diff --git a/deployment/11155111/v1/out/PartyPoolMintImpl.sol/PartyPoolMintImpl.json b/deployment/11155111/v1/out/PartyPoolMintImpl.sol/PartyPoolMintImpl.json index 3f6e51d..3d3bde7 100644 --- a/deployment/11155111/v1/out/PartyPoolMintImpl.sol/PartyPoolMintImpl.json +++ b/deployment/11155111/v1/out/PartyPoolMintImpl.sol/PartyPoolMintImpl.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"wrapper_","type":"address","internalType":"contract NativeWrapper"}],"stateMutability":"nonpayable"},{"type":"function","name":"burn","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"lpAmount","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"unwrap","type":"bool","internalType":"bool"}],"outputs":[{"name":"withdrawAmounts","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"burnAmounts","inputs":[{"name":"lpTokenAmount","type":"uint256","internalType":"uint256"},{"name":"totalSupply","type":"uint256","internalType":"uint256"},{"name":"cachedUintBalances","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"withdrawAmounts","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"pure"},{"type":"function","name":"burnSwap","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"lpAmount","type":"uint256","internalType":"uint256"},{"name":"outputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"unwrap","type":"bool","internalType":"bool"},{"name":"swapFeePpm","type":"uint256","internalType":"uint256"},{"name":"protocolFeePpm","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"outFee","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"burnSwapAmounts","inputs":[{"name":"lpAmount","type":"uint256","internalType":"uint256"},{"name":"outputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"swapFeePpm","type":"uint256","internalType":"uint256"},{"name":"lmsrState","type":"tuple","internalType":"struct LMSRStabilized.State","components":[{"name":"kappa","type":"int128","internalType":"int128"},{"name":"qInternal","type":"int128[]","internalType":"int128[]"}]},{"name":"bases_","type":"uint256[]","internalType":"uint256[]"},{"name":"totalSupply_","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"outFee","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"initialMint","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"lpTokens","type":"uint256","internalType":"uint256"},{"name":"KAPPA","type":"int128","internalType":"int128"}],"outputs":[{"name":"lpMinted","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"mint","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"lpTokenAmount","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"lpMinted","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"mintAmounts","inputs":[{"name":"lpTokenAmount","type":"uint256","internalType":"uint256"},{"name":"totalSupply","type":"uint256","internalType":"uint256"},{"name":"cachedUintBalances","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"depositAmounts","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"pure"},{"type":"function","name":"swapMint","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"inputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"maxAmountIn","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"swapFeePpm","type":"uint256","internalType":"uint256"},{"name":"protocolFeePpm","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"lpMinted","type":"uint256","internalType":"uint256"},{"name":"inFee","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"swapMintAmounts","inputs":[{"name":"inputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"maxAmountIn","type":"uint256","internalType":"uint256"},{"name":"swapFeePpm","type":"uint256","internalType":"uint256"},{"name":"lmsrState","type":"tuple","internalType":"struct LMSRStabilized.State","components":[{"name":"kappa","type":"int128","internalType":"int128"},{"name":"qInternal","type":"int128[]","internalType":"int128[]"}]},{"name":"bases_","type":"uint256[]","internalType":"uint256[]"},{"name":"totalSupply_","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"lpMinted","type":"uint256","internalType":"uint256"},{"name":"inFee","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Burn","inputs":[{"name":"payer","type":"address","indexed":false,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"amounts","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"lpBurned","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BurnSwap","inputs":[{"name":"payer","type":"address","indexed":true,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"tokenOut","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lpFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Mint","inputs":[{"name":"payer","type":"address","indexed":false,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"amounts","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"lpMinted","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SwapMint","inputs":[{"name":"payer","type":"address","indexed":true,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"tokenIn","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lpFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60a03461009c57601f61553838819003918201601f19168301916001600160401b038311848410176100a05780849260209460405283398101031261009c57516001600160a01b038116810361009c5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005560805260405161548390816100b58239608051818181612cd6015281816131e7015261343f0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c8063228fa850146124535780633dd3c80514611d5c5780636863f5bc146119a55780638d01fa4414611483578063b3f1c93d14611009578063c5eabfb914610831578063cdc2468b14610803578063e9f317f0146102285763f16b7c261461007c575f80fd5b346102245761008a366125fe565b94919080949394518410156101c657821561016857851561010a576100dc846100d46100e3946100fd976100c360409b6100ea99613689565b9160208151600f0b910151906141fe565b939050612798565b5190612e7c565b9283612c31565b50826100f882809511612abd565b61295c565b9082519182526020820152f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6275726e53776170416d6f756e74733a20656d70747920737570706c790000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6275726e53776170416d6f756e74733a207a65726f206c7000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6275726e53776170416d6f756e74733a206964780000000000000000000000006044820152fd5b5f80fd5b3461022457610236366125fe565b925f9594959291925082518510156107a5578515610747576020820191825151156106e9578115159387856106b8575b61027b906102748984612798565b5190613689565b5f81600f0b13156106345761029e6102a691896102ad9551600f0b88519061397d565b989092612798565b51906141c9565b9081156105b0575f9361055b575b50826102c69161294f565b948515159081610550575b50156104cc5751935f92835b8651851015610308576103006001916102f6878a612798565b51600f0b90612f34565b9401936102dd565b90855f83600f0b131561046e5761032b6103309161032585612e62565b94612f34565b612e62565b91816103c3575050915b82156103655761036190604051938493846040919493926060820195825260208201520152565b0390f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761704d696e74416d6f756e74733a207a65726f204c50206d696e746564006044820152fd5b90918115610410578180821115610407576103dd9161295c565b915b82156103fd576103f7926103f2916127d9565b6127ec565b9161033a565b5050505f9161033a565b50505f916103df565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761704d696e74416d6f756e74733a206f6c645363616c6564207a65726f006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f737761704d696e74416d6f756e74733a207a65726f20746f74616c00000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f737761704d696e74416d6f756e74733a207472616e736665722065786365656460448201527f73206d61780000000000000000000000000000000000000000000000000000006064820152fd5b9050851115866102d1565b816105679294506127d9565b620f423f810180911161058357620f42409004916102c66102bb565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f737761704d696e74416d6f756e74733a20696e707574207a65726f206166746560448201527f7220696e7465726e616c20636f6e76657273696f6e00000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f737761704d696e74416d6f756e74733a20696e70757420746f6f20736d616c6c60448201527f20616674657220666565000000000000000000000000000000000000000000006064820152fd5b506106c383896127d9565b620f423f8101809111610583576106e2620f424061027b92048a61295c565b9050610266565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f737761704d696e74416d6f756e74733a20756e696e697420706f6f6c000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f737761704d696e74416d6f756e74733a20696e707574207a65726f00000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f737761704d696e74416d6f756e74733a206964780000000000000000000000006044820152fd5b346102245761036161081d61081736612523565b91612b22565b604051918291602083526020830190612577565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610224576108636125aa565b602435906044359081600f0b82036102245761088460ff600854161561288a565b61088c612bba565b600b5490600354158015610fff575b15610f7b576108a982612749565b936108b383612749565b925f5b818110610d54575050600a548551809103610b5e575b505f5b855181101561092457806108e560019288612798565b51600f0b61091c6108f5836129fd565b81939154906fffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b9055016108cf565b50835f610937610932612969565b612e37565b600f0b1315610b00577fffffffffffffffffffffffffffffffff0000000000000000000000000000000060095416906fffffffffffffffffffffffffffffffff16176009555f600954600f0b1315610aa25780610a7757507f6bc0553967b8bb727947c938555c0e061c3f96b629935c8f82a43b558dfb1c576109f3670de0b6b3a7640000935b84610a68575b73ffffffffffffffffffffffffffffffffffffffff6040519283925f8452606060208501526060840190612577565b9486604084015216930390a260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015610a38575b602083604051908152f35b5f80809381938290610a5f575b3390f115610a54578180610a2d565b6040513d5f823e3d90fd5b506108fc610a45565b610a72858561312a565b6109c4565b6109f37f6bc0553967b8bb727947c938555c0e061c3f96b629935c8f82a43b558dfb1c5791936109be565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4c4d53523a206b617070613e30000000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4c4d53523a20746f74616c207a65726f000000000000000000000000000000006044820152fd5b610b6790612749565b80519067ffffffffffffffff8211610d2757680100000000000000008211610d2757600a5482600a55808310610c90575b5060200190600a5f5260205f208160011c915f5b838110610c4257507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8116900380610be7575b5050506108cc565b925f935f5b818110610c0157505050015585808080610bdf565b9091946020610c386001928851600f0b908560041b6fffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b9601929101610bec565b5f5f5b60028110610c5a575083820155600101610bac565b86519096916001916020916fffffffffffffffffffffffffffffffff60078b901b81811b199092169216901b1792019601610c45565b600a5f5260205f206001808501811c8201920160011c019060108460041b1680610ccf575b505b818110610cc45750610b98565b5f8155600101610cb7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82549160200360031b1c16905589610cb5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6024602073ffffffffffffffffffffffffffffffffffffffff610d7684612907565b90549060031b1c16604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa908115610a54575f91610f4a575b508015610ec65780610e3b91610dd48489612798565b52610e1881610de285612937565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b610e2581610de2856128ef565b610e2e836128ef565b90549060031b1c90613689565b610e458289612798565b90600f0b90525f610e568289612798565b51600f0b1315610e68576001016108b6565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f696e697469616c4d696e743a207a65726f20696e7465726e616c2071000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f696e697469616c4d696e743a207a65726f20696e697469616c2062616c616e6360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152fd5b90506020813d8211610f73575b81610f646020938361246d565b81010312610224575188610dbe565b3d9150610f57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f696e697469616c4d696e743a20706f6f6c20616c726561647920696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152fd5b50600a541561089b565b60807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102245761103b6125aa565b6110436125cd565b906044359160643561105a60ff600854161561288a565b611062612bba565b8015908115611478575b501561141a57600b5460035480158015611410575b61138c57841561132e576110ac61109c61032b610932612969565b916110a5612a3d565b9087612b22565b915f5b8181106112d557506110c081612749565b905f5b81811061128857505061032b816109326110dc93613047565b818082111561127f576110ee9161295c565b905b8115611276576103f2611105926003546127d9565b935b8415611218576201869f81029081046201869f0361058357620186a0900484106111ba578161117f8573ffffffffffffffffffffffffffffffffffffffff93611171827f6bc0553967b8bb727947c938555c0e061c3f96b629935c8f82a43b558dfb1c579761312a565b604051948594169684612a85565b0390a260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015610a3857602083604051908152f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6d696e743a20696e73756666696369656e74204c50206d696e746564000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6d696e743a207a65726f204c50206d696e7465640000000000000000000000006044820152fd5b50505f93611107565b50505f906110f0565b806112bf6112b261129a600194612937565b90549060031b1c6112ab848a612798565b519061294f565b610e2581610de285612937565b6112c98286612798565b90600f0b9052016110c3565b806112e260019286612798565b516112ee575b016110af565b61132973ffffffffffffffffffffffffffffffffffffffff61130f83612907565b90549060031b1c166113218388612798565b519089612cbe565b6112e8565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6d696e743a207a65726f204c5020616d6f756e740000000000000000000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f6d696e743a2075736520696e697469616c4d696e7420666f7220706f6f6c206960448201527f6e697469616c697a6174696f6e000000000000000000000000000000000000006064820152fd5b50600a5415611081565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f6d696e743a20646561646c696e652065786365656465640000000000000000006044820152fd5b90504211158461106c565b34610224576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610224576114bb6125aa565b6114c36125cd565b9060443591606435916084359360a4359182151583036102245760e435936114e9612bba565b6114f860ff600854161561288a565b600b5496878710156119475783156118e95780159081156118de575b5015611880576003548015611822576115486115336115609286613689565b88600954600f0b611542612969565b906141fe565b9050611553886128ef565b90549060031b1c90612e7c565b9461157e61157060c43588612c31565b50876100f882809a11612abd565b965f9180151580611819575b6117a5575b506115b88573ffffffffffffffffffffffffffffffffffffffff861695863303611760576135b1565b6115ea73ffffffffffffffffffffffffffffffffffffffff6115d983612907565b90549060031b1c16968985896131c1565b6115f389612749565b905f5b8a81106117075750506001985f5b8181106116ca575b50509161168973ffffffffffffffffffffffffffffffffffffffff927f8c012c6148e8ecc34b864721470dcc1e938d162c498b7d28961a8a78238cfe139460409b5f146116bc575061165c61347c565b611666818a61295c565b8b51978852602088018b9052604088015260608701529116939081906080820190565b0390a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005582519182526020820152f35b6116c590613047565b61165c565b6116d48184612798565b51600f0b6116e457600101611604565b505f9950611689905073ffffffffffffffffffffffffffffffffffffffff61160c565b80611736611716600193612937565b90549060031b1c868d86851461174c575b5050610e2581610de285612937565b6117408286612798565b90600f0b9052016115f6565b6100f8906117599361295c565b868d611727565b865f52600260205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f526020526117a06117998360405f205461295c565b33836134dc565b6135b1565b620f42409192506117b690886127d9565b0490816117c4575b8961158f565b6118146117d08261291f565b6117e08583548360031b1c61294f565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b6117be565b5087151561158a565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6275726e537761703a20656d70747920737570706c79000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6275726e537761703a20646561646c696e6500000000000000000000000000006044820152fd5b905042111588611514565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6275726e537761703a207a65726f206c700000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6275726e537761703a20696478000000000000000000000000000000000000006044820152fd5b346102245760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610224576119dc6125aa565b6119e46125cd565b6084359160443591606435841515850361022457611a00612bba565b8015908115611d51575b5015611cf357600b54928015611c95576003548015611c3757611a3990611a32969596612a3d565b9083612823565b935f5b868110611bd8575050611a4e85612749565b5f5b868110611b9257506001955f5b818110611b55575b505091611adb73ffffffffffffffffffffffffffffffffffffffff927f3f84ed8aa11ed632de380466083280b4c5da668f12695b08636d7848eaf896b494610361985f14611b475750611ab661347c565b838616803303611b16575b50611acc81876135b1565b86604051948594169684612a85565b0390a260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055604051918291602083526020830190612577565b5f52600260205260405f208433165f52602052611b41611b3a8260405f205461295c565b33886134dc565b88611ac1565b611b5090613047565b611ab6565b611b5f8184612798565b51600f0b611b6f57600101611a5d565b505f9650611adb905073ffffffffffffffffffffffffffffffffffffffff611a65565b80611bbf6112b2611ba76001949a999a612937565b90549060031b1c611bb8848c612798565b519061295c565b611bc98285612798565b90600f0b905201959495611a50565b80611be7600192889998612798565b51611bf6575b01959495611a3c565b611c328373ffffffffffffffffffffffffffffffffffffffff611c1884612907565b90549060031b1c1687611c2b858d612798565b51916131c1565b611bed565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6275726e3a20656d70747920737570706c7900000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6275726e3a207a65726f206c70000000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f6275726e3a20646561646c696e652065786365656465640000000000000000006044820152fd5b905042111585611a0a565b60e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022457611d8e6125aa565b611d966125cd565b604435606435916084359360a4359360c43592611db860ff600854161561288a565b611dc0612bba565b600b5496878610156123f557821561239757801590811561238c575b501561232e57600a54156122d057611e02611df78784612c31565b9050610e2e876128ef565b945f86600f0b131561224c57611e2a611e429682600954600f0b611e24612969565b9061397d565b9690611e35836128ef565b90549060031b1c90612c53565b9687156121c857611e539088612c85565b95611e5e878961294f565b9384151590816121bd575b501561215f57611e9f8473ffffffffffffffffffffffffffffffffffffffff611e9185612907565b90549060031b1c1687612cbe565b5f9580151580612156575b612116575b50611ed8611ebd878661295c565b6117e0611ec985612937565b91909283548360031b1c61294f565b611ee3610932612969565b98611ef7611ef08b612e62565b928b612f34565b91611f0183612e62565b6003549091816120d4575050995b8a1561207657611f1e82612749565b925f5b838110612038575050505091611fbf73ffffffffffffffffffffffffffffffffffffffff611f838194611f747fcbf41a060d7827197acec8e5ef3abf36d633e77060f7aec03943608d1cd84ebe97613047565b611f7e8d8661312a565b612907565b90549060031b1c1696611f96818a61295c565b8b8560405196879616991697859094939260609260808301968352602083015260408201520152565b0390a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015612013575b505061036190604051938493846040919493926060820195825260208201520152565b5f8080938193829061202f575b3390f115610a54578380611ff0565b506108fc612020565b806120608461205b8561204c6001966129fd565b90549060031b1c600f0b612f71565b613001565b61206a8288612798565b90600f0b905201611f21565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f737761704d696e743a207a65726f204c50206d696e74656400000000000000006044820152fd5b9091818082111561210d576120e89161295c565b915b8215612103576120fd926103f2916127d9565b99611f0f565b5050505f99611f0f565b50505f916120ea565b620f424091965061212790886127d9565b049485612135575b89611eaf565b6121516121418361291f565b6117e08983548360031b1c61294f565b61212f565b50871515611eaa565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f737761704d696e743a207472616e736665722065786365656473206d617800006044820152fd5b90508411158a611e69565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f737761704d696e743a20696e707574207a65726f20616674657220696e74657260448201527f6e616c20636f6e76657273696f6e0000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f737761704d696e743a20696e70757420746f6f20736d616c6c2061667465722060448201527f66656500000000000000000000000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f737761704d696e743a20756e696e697420706f6f6c00000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f737761704d696e743a20646561646c696e6500000000000000000000000000006044820152fd5b905042111588611ddc565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f737761704d696e743a20696e707574207a65726f0000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f737761704d696e743a20696478000000000000000000000000000000000000006044820152fd5b346102245761036161081d61246736612523565b91612823565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610d2757604052565b67ffffffffffffffff8111610d275760051b60200190565b9080601f830112156102245781356124dd816124ae565b926124eb604051948561246d565b81845260208085019260051b82010192831161022457602001905b8282106125135750505090565b8135815260209182019101612506565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102245760043591602435916044359067ffffffffffffffff821161022457612574916004016124c6565b90565b90602080835192838152019201905f5b8181106125945750505090565b8251845260209384019390920191600101612587565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361022457565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361022457565b359081600f0b820361022457565b60c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102245760043591602435916044359160643567ffffffffffffffff81116102245760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc828503011261022457604051906040820182811067ffffffffffffffff821117610d275760405261269c816004016125f0565b825260248101359067ffffffffffffffff8211610224570183602382011215610224576004810135906126ce826124ae565b916126dc604051938461246d565b808352602060048185019260051b840101019186831161022457602401905b828210612731575050506020820152916084359067ffffffffffffffff82116102245761272a916004016124c6565b9060a43590565b6020809161273e846125f0565b8152019101906126fb565b90612753826124ae565b612760604051918261246d565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061278e82946124ae565b0190602036910137565b80518210156127ac5760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8181029291811591840414171561058357565b81156127f6570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b9082519161283083612749565b9382158015612882575b61287b575f5b84811061284f57505050505090565b8061286a856103f261286360019587612798565b51876127d9565b6128748289612798565b5201612840565b5050505090565b50831561283a565b1561289157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b600d548110156127ac57600d5f5260205f2001905f90565b600b548110156127ac57600b5f5260205f2001905f90565b600c548110156127ac57600c5f5260205f2001905f90565b600f548110156127ac57600f5f5260205f2001905f90565b9190820180921161058357565b9190820391821161058357565b60405190600a548083528260208101600a5f5260205f20925f905b8060018301106129d1576129aa9454918181106129bd575b106129ac575b50038361246d565b565b60801d600f0b81526020015f6129a2565b92602060019184600f0b815201930161299c565b9160029193506040600191865480600f0b825260801d600f0b6020820152019401920185929391612984565b90600a548210156127ac57600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b60405190600f548083528260208101600f5f5260205f20925f5b818110612a6c5750506129aa9250038361246d565b8454835260019485019487945060209093019201612a57565b939291612ab89073ffffffffffffffffffffffffffffffffffffffff604093168652606060208701526060860190612577565b930152565b15612ac457565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6275726e53776170416d6f756e74733a206f7574707574207a65726f000000006044820152fd5b825190612b2e82612749565b9383158015612bb2575b61287b575f5b838110612b4d57505050505090565b612b6a85612b65612b5e8486612798565b51866127d9565b61294f565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820191821161058357612ba1866001936127ec565b612bab8289612798565b5201612b3e565b508215612b38565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005414612c095760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b91908015612c4d57612c466125749184612c85565b809361295c565b505f9190565b612c67612c608383612e7c565b9283613689565b90600f0b90600f0b12612c775790565b600181018091116105835790565b908015612cb857612c95916127d9565b620f424081019081811161058357620f423f0190811161058357620f4240900490565b50505f90565b9073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169173ffffffffffffffffffffffffffffffffffffffff82169183831480612e2d575b15612d6e57505050803b15610224575f906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af18015610a5457612d645750565b5f6129aa9161246d565b919390925073ffffffffffffffffffffffffffffffffffffffff604051937f23b872dd000000000000000000000000000000000000000000000000000000005f52166004523060245260445260205f60648180855af19060015f5114821615612e0e575b50906040525f60605215612de35750565b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6001821516612e24573b15153d1516165f612dd2565b823d5f823e3d90fd5b5084341015612d18565b5f90815b8151831015612e5c57612e546001916102f68585612798565b920191612e3b565b91505090565b600f0b5f811261022457670de0b6b3a76400000260401c90565b8115612cb857600f0b5f8112610224576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116102245760401b81198111610224570190565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a575b1561022457600f0b90565b506f7fffffffffffffffffffffffffffffff811315612f0f565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b600f0b801561022457700100000000000000000000000000000000057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b90600f0b9081156102245760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b5f61305182612e37565b600f0b13156130cc578051600a915f5b82811061306e5750505050565b6130788183612798565b51600f0b9084548110156127ac57600191855f526130c460205f2083851c019160108460041b168354906fffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b905501613061565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a206e657720746f74616c207a65726f0000000000000000000000006044820152fd5b73ffffffffffffffffffffffffffffffffffffffff16908115613195577fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6020826131785f9460035461294f565b6003558484526001825260408420818154019055604051908152a3565b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b90919280613427575b1561335d575073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b15610224576040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081525f816024818380978960048401525af18015610a5457613348575b508180809481935af1903d15613342573d9067ffffffffffffffff821161331557604051916132a760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116018461246d565b825260203d92013e5b156132b757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526041600452fd5b506132b0565b6133559192505f9061246d565b5f905f613250565b9173ffffffffffffffffffffffffffffffffffffffff604051927fa9059cbb000000000000000000000000000000000000000000000000000000005f521660045260245260205f60448180865af19060015f5114821615613406575b604052156133c45750565b73ffffffffffffffffffffffffffffffffffffffff907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b90600181151661341e57823b15153d151616906133b9565b503d5f823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8216146131ca565b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000060095416600955600a545f600a55806134b35750565b600a5f52600160205f20910160011c8101905b8181106134d1575050565b5f81556001016134c6565b73ffffffffffffffffffffffffffffffffffffffff169081156135855773ffffffffffffffffffffffffffffffffffffffff169182156135595760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591835f526002825260405f20855f5282528060405f2055604051908152a3565b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b90919073ffffffffffffffffffffffffffffffffffffffff16801561365d57805f52600160205260405f205483811061362a576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef93858752600184520360408620558060035403600355604051908152a3565b91507fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b81156102245777ffffffffffffffffffffffffffffffffffffffffffffffff811161370157906136bb9160401b6127ec565b6fffffffffffffffffffffffffffffffff8111610224576fffffffffffffffffffffffffffffffff166f7fffffffffffffffffffffffffffffff811161022457600f0b90565b60c09181831c80936401000000008210156138a6575b600282620100006137a494101561389a575b61010081101561388e575b6010811015613882575b6004811015613877575b101561386f575b8360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b6127ec565b926fffffffffffffffffffffffffffffffff8411610224578160801c8402906fffffffffffffffffffffffffffffffff8316850290809460401b90828210613845575b5003928160801b9182851061381c575b60801c036138115761380992036127ec565b905b016136bb565b50505060019061380b565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906137f7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f6137e7565b60010161374f565b91810191811c613748565b6004928301921c61373e565b6008928301921c613734565b6010928301921c613729565b505060e082811c90613717565b156138ba57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b1561391f57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4c4d53523a20623c3d30000000000000000000000000000000000000000000006044820152fd5b90919392938251928382101561416b575f86600f0b131561410d576139a181612e37565b936139bb855f81600f0b13956139b6876138b3565b612f71565b906139ca5f83600f0b13613918565b6139d382612fb1565b916139dd82612749565b955f5b8381106140c357506510c6f7a0b5ed905f901561406557613a01898c613001565b916801000000000000000083600f0b12614054575b5f5b60408110613e39575b505f9b5f935b60408510613c09575b50505050505f955f935f5b848110613b05575b5050505050613af95791613a6b613a61613a7093613a769695612798565b51600f0b87612f71565b612f34565b93612f71565b915f83600f0b13801590613aec575b613a8d579190565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4c4d53523a207a65726f206f75747075740000000000000000000000000000006044820152606490fd5b505f81600f0b1315613a85565b5050505090505f905f90565b878103613b15575b600101613a3b565b613b2c613b228289612798565b51600f0b8d612f71565b5f81600f0b13613b3d575b50613b0d565b82613b4a919a929a612f71565b6820000000000000000081600f0b13613bf557613b69613b84916146aa565b613b7f613b768c87612798565b51600f0b612ed7565b614655565b5f81600f0b1315613bf557613ba690613b9d8b86612798565b51600f0b613001565b5f81600f0b1315613bf557613bbd613bc39161470c565b85612f71565b905f82600f0b12613be157600191613bda91612f34565b9890613b37565b985050505050505060015f80808080613a43565b509750505050505060015f80808080613a43565b68020000000000000000613c1d8286612f34565b60401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613e1f575b1561022457600f0b90898c8c5f915f905f905b8d8210613d01575b505015613ce2575050506f7fffffffffffffffffffffffffffffff5b83600f0b90600f0b135f14613cd95750935b82613ca28587614655565b600f0b1315613cc757603f8114613cbd575b60010193613a27565b929c508c92613cb4565b50505091995050975f80808080613a30565b94935092613c97565b613cf2613a6b91613cfc94612798565b51600f0b85612f71565b613c85565b9092839592949503613d1f575b50506001018c92918f918f92613c61565b8d613d37613d2d8585612798565b51600f0b89612f71565b5f81600f0b13613d49575b5050613d0e565b90613d5691969496612f71565b6820000000000000000081600f0b13613e0f57613d75613d82916146aa565b613b7f613b768885612798565b915f83600f0b1315613dff575090613b9d85613d9d93612798565b8d5f82600f0b1315613df05750613db6613dbc9161470c565b8b612f71565b908d5f83600f0b12613de15750600191613dd591612f34565b9290508c8f8d5f613d42565b93509150508c60018f80613c69565b93505090508c60018f80613c69565b9450505090508c60018f80613c69565b5050925090508c60018f80613c69565b506f7fffffffffffffffffffffffffffffff811315613c4e565b925f5f5f5b888110613f36575b5015613f1657506f7fffffffffffffffffffffffffffffff5b8d600f0b90600f0b12801590613efe575b613ef857600f0b60411b60401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613ede575b1561022457600f0b926a10000000000000000000008413613ecb575b600101613a18565b6a10000000000000000000009350613ec3565b506f7fffffffffffffffffffffffffffffff811315613ea7565b92613a21565b506a100000000000000000000081600f0b1215613e70565b613f3190613a6b613f278c8c612798565b51600f0b84612f71565b613e5f565b839e9c9a98969f9d9b9980989695948b8303613f65575b50506001019e9597999b9d92939496989a9c9e613e3e565b613f7d90613f73848d612798565b51600f0b90612f71565b5f81600f0b13613f8f575b508f613f4d565b90613f9c91949294612f71565b6820000000000000000081600f0b1361403a578b613b7f613b7686613fc3613fc9956146aa565b93612798565b5f81600f0b131561403a57613fe290613b9d858e612798565b5f81600f0b131561403a57613ff9613fff9161470c565b87612f71565b905f82600f0b126140205760019161401691612f34565b929050875f613f88565b9250505060019d9496989a9c9192939597999b9d5f613e46565b5091505060019d9496989a9c9192939597999b9d5f613e46565b680100000000000000009250613a16565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4c4d53523a20737761704d696e7420646567656e6572617465000000000000006044820152fd5b6001906140f76140f2876139b66140da8c8c612798565b51600f0b6140e8868d612798565b51600f0b90614655565b6146aa565b614101828b612798565b90600f0b9052016139e0565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4c4d53523a20616d6f756e74203c3d20300000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4c4d53523a2069647800000000000000000000000000000000000000000000006044820152fd5b6141ee6141df6141d98484612e7c565b93614692565b6141e884614692565b92612f71565b90600f0b90600f0b13612c775790565b93919383600f0b5f8113156145b55768010000000000000000126145575761423861422883612e37565b80926139b65f83600f0b136138b3565b906142475f83600f0b13613918565b61425082612fb1565b61425c84519287612f71565b9661426683612749565b935f5b84811061451e575061427e613d2d8388612798565b975f89600f0b13965f5b8681106142b25750505050505050501580156142a5575b613a8d57565b505f82600f0b131561429f565b8481036142c5575b600101955b95614288565b6142d2613f278284612798565b5f81600f0b136142e3575b506142ba565b6142f387829d949d9b939b612f71565b9182600f0b926820000000000000000084136144f2577fffffffffffffffffffffffffffffffff8000000000000000000000000000000061434e6140f28b8f8f6140e88e6143446139b69484612798565b51600f0b92612798565b94146102245761436d614368614373925f03600f0b6146aa565b614613565b84612f71565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580614504575b1561022457600f0b5f8113156144f257613ff96143c79161470c565b9288888c6143d58282612798565b51600f0b87600f0b1361444a576144049450614440979593506143fb92508e9150612798565b51600f0b612f34565b61440e8b8b612798565b90600f0b905261442b82614422888c612798565b51600f0b614655565b614435878b612798565b90600f0b9052612f34565b98600197886142dd565b61447694965061446d9395506140f2929161446491612798565b51600f0b612f71565b613b7f83612ed7565b915f83600f0b13156144e157506144a561449f61449a6144c995946144af94613001565b61470c565b86612f71565b6143fb8b8b612798565b6144b98a8a612798565b90600f0b90526102f68589612798565b985f6144d58589612798565b526001809801956142bf565b999050600191509a919a01956142bf565b50999050600191509a919a01956142bf565b506f7fffffffffffffffffffffffffffffff8113156143ab565b8061454161452e6001938a612798565b51600f0b61453b8c614613565b90612f71565b61454b8289612798565b90600f0b905201614269565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4275726e20746f6f206c617267650000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4275726e20746f6f20736d616c6c0000000000000000000000000000000000006044820152fd5b600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b677fffffffffffffff81116102245760401b600f0b90565b600f0b68400000000000000000811215610224577fffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000811261470757700171547652b82fe1777d0ffda0d23a7d12612574910260801d600f0b614839565b505f90565b600f0b5f811315610224575f90806801000000000000000082121561482c575b806401000000006002921215614820575b62010000811215614814575b610100811215614808575b60108112156147fc575b60048112156147f1575b12156147e7575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f83136147cb57506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d90565b8002908160ff1c9182607f011c918302019160011d91906147a6565b906001019061476f565b92810192811d614768565b6004938401931d61475e565b6008938401931d614754565b6010938401931d614749565b6020938401931d61473d565b506040915080821d61472c565b80600f0b68400000000000000000811215610224577fffffffffffffffffffffffffffffffffffffffffffffffc000000000000000008112612cb8576f80000000000000000000000000000000915f6780000000000000008216600f0b13615435575b5f6740000000000000008216600f0b13615418575b5f6720000000000000008216600f0b136153fb575b5f6710000000000000008216600f0b136153de575b5f6708000000000000008216600f0b136153c1575b5f6704000000000000008216600f0b136153a4575b5f6702000000000000008216600f0b13615387575b5f6701000000000000008216600f0b1361536a575b5f66800000000000008216600f0b1361534d575b5f66400000000000008216600f0b13615330575b5f66200000000000008216600f0b13615313575b5f66100000000000008216600f0b136152f6575b5f66080000000000008216600f0b136152d9575b5f66040000000000008216600f0b136152bc575b5f66020000000000008216600f0b1361529f575b5f66010000000000008216600f0b13615282575b5f658000000000008216600f0b13615265575b5f654000000000008216600f0b13615248575b5f652000000000008216600f0b1361522b575b5f651000000000008216600f0b1361520e575b5f650800000000008216600f0b136151f1575b5f650400000000008216600f0b136151d4575b5f650200000000008216600f0b136151b7575b5f650100000000008216600f0b1361519a575b5f6480000000008216600f0b1361517d575b5f6440000000008216600f0b13615160575b5f6420000000008216600f0b13615143575b5f6410000000008216600f0b13615126575b5f6408000000008216600f0b13615109575b5f6404000000008216600f0b136150ec575b5f6402000000008216600f0b136150cf575b5f6401000000008216600f0b136150b2575b5f63800000008216600f0b13615095575b5f63400000008216600f0b13615078575b5f63200000008216600f0b1361505b575b5f63100000008216600f0b1361503e575b5f63080000008216600f0b13615021575b5f63040000008216600f0b13615004575b5f63020000008216600f0b13614fe7575b5f63010000008216600f0b13614fca575b5f628000008216600f0b13614fad575b5f624000008216600f0b13614f90575b5f622000008216600f0b13614f73575b5f621000008216600f0b13614f56575b5f620800008216600f0b13614f39575b5f620400008216600f0b13614f1c575b5f620200008216600f0b13614eff575b5f620100008216600f0b13614ee2575b5f6180008216600f0b13614ec5575b5f6140008216600f0b13614ea8575b5f6120008216600f0b13614e8b575b5f6110008216600f0b13614e6e575b5f6108008216600f0b13614e51575b5f6104008216600f0b13614e34575b5f6102008216600f0b13614e17575b5f6101008216600f0b13614dfa575b5f60808216600f0b13614ddd575b5f60408216600f0b13614dc0575b5f60208216600f0b13614da3575b5f60108216600f0b13614d86575b5f60088216600f0b13614d69575b5f60048216600f0b13614d4c575b5f60028216600f0b13614d2e575b60015f9116600f0b13614d11575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161022457600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c90614ce7565b7001000000000000000162e42fefa39ef35890920260801c91614cd9565b9170010000000000000002c5c85fdf473de6b20260801c91614ccb565b91700100000000000000058b90bfbe8e7bcd6d0260801c91614cbd565b917001000000000000000b17217f7d1cf79afa0260801c91614caf565b91700100000000000000162e42fefa39ef366f0260801c91614ca1565b917001000000000000002c5c85fdf473de6eca0260801c91614c93565b9170010000000000000058b90bfbe8e7bce5440260801c91614c85565b91700100000000000000b17217f7d1cf79e9490260801c91614c77565b9170010000000000000162e42fefa39ef44d910260801c91614c68565b91700100000000000002c5c85fdf473dea871f0260801c91614c59565b917001000000000000058b90bfbe8e7bdcbe2e0260801c91614c4a565b9170010000000000000b17217f7d1cf7d83c1a0260801c91614c3b565b917001000000000000162e42fefa39f02b772c0260801c91614c2c565b9170010000000000002c5c85fdf473e242ea380260801c91614c1d565b91700100000000000058b90bfbe8e7cc35c3f00260801c91614c0e565b917001000000000000b17217f7d1cfb72b45e10260801c91614bff565b91700100000000000162e42fefa39fe95583c20260801c91614bef565b917001000000000002c5c85fdf4741bea6e77e0260801c91614bdf565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c91614bcf565b91700100000000000b17217f7d1d351a389d400260801c91614bbf565b9170010000000000162e42fefa3ae53369388c0260801c91614baf565b91700100000000002c5c85fdf477b662b269450260801c91614b9f565b917001000000000058b90bfbe8f71cb4e4b33d0260801c91614b8f565b9170010000000000b17217f7d20cf927c8e94c0260801c91614b7f565b917001000000000162e42fefa494f1478fde050260801c91614b6e565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c91614b5d565b91700100000000058b90bfbe9ddbac5e109cce0260801c91614b4c565b917001000000000b17217f7d5a7716bba4a9ae0260801c91614b3b565b91700100000000162e42fefb2fed257559bdaa0260801c91614b2a565b917001000000002c5c85fdf84bd62ae30a74cc0260801c91614b19565b9170010000000058b90bfbf8479bd5a81b51ad0260801c91614b08565b91700100000000b17217f80f4ef5aadda455540260801c91614af7565b9170010000000162e42ff0999ce3541b9fffcf0260801c91614ae5565b91700100000002c5c85fe31f35a6a30da1be500260801c91614ad3565b917001000000058b90bfcdee5acd3c1cedc8230260801c91614ac1565b9170010000000b17217fba9c739aa5819f44f90260801c91614aaf565b917001000000162e42fff037df38aa2b219f060260801c91614a9d565b9170010000002c5c8601cc6b9e94213c72737a0260801c91614a8b565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91614a79565b917001000000b1721835514b86e6d96efd1bfe0260801c91614a67565b91700100000162e430e5a18f6119e3c02282a50260801c91614a54565b917001000002c5c863b73f016468f6bac5ca2b0260801c91614a41565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91614a2e565b91700100000b1721bcfc99d9f890ea069117630260801c91614a1b565b9170010000162e43f4f831060e02d839a9d16d0260801c91614a08565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c916149f5565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c916149e2565b9170010000b17255775c040618bf4a4ade83fc0260801c916149cf565b917001000162e525ee054754457d59952920260260801c916149bb565b9170010002c5cc37da9491d0985c348c68e7b30260801c916149a7565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91614993565b917001000b175effdc76ba38e31671ca9397250260801c9161497f565b91700100162f3904051fa128bca9c55c31e5df0260801c9161496b565b917001002c605e2e8cec506d21bfc89a23a00f0260801c91614957565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c91614943565b91700100b1afa5abcbed6129ab13ec11dc95430260801c9161492f565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c9161491a565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c91614905565b917001059b0d31585743ae7c548eb68ca417fd0260801c916148f0565b9170010b5586cf9890f6298b92b71842a983630260801c916148db565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c916148c6565b917001306fe0a31b7152de8d5a46305c85edec0260801c916148b1565b6fb504f333f9de6484597d89b3754abe9f925061489c56fea2646970667358221220467f854c2026e7b4a953423ce7e4a2a365f7727509b2ab675bcdc27887fb74c664736f6c634300081e0033","sourceMap":"962:27112:54:-:0;;;;;;;;;;;;;-1:-1:-1;;962:27112:54;;;;-1:-1:-1;;;;;962:27112:54;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;962:27112:54;;;;;;2365:1:31;1505:66;2365:1;1149:24:51;;962:27112:54;;;;;;;;1149:24:51;962:27112:54;;;;;;;;;;;;;;;;;-1:-1:-1;962:27112:54;;;;;;-1:-1:-1;962:27112:54;;;;;-1:-1:-1;962:27112:54","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c8063228fa850146124535780633dd3c80514611d5c5780636863f5bc146119a55780638d01fa4414611483578063b3f1c93d14611009578063c5eabfb914610831578063cdc2468b14610803578063e9f317f0146102285763f16b7c261461007c575f80fd5b346102245761008a366125fe565b94919080949394518410156101c657821561016857851561010a576100dc846100d46100e3946100fd976100c360409b6100ea99613689565b9160208151600f0b910151906141fe565b939050612798565b5190612e7c565b9283612c31565b50826100f882809511612abd565b61295c565b9082519182526020820152f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6275726e53776170416d6f756e74733a20656d70747920737570706c790000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6275726e53776170416d6f756e74733a207a65726f206c7000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6275726e53776170416d6f756e74733a206964780000000000000000000000006044820152fd5b5f80fd5b3461022457610236366125fe565b925f9594959291925082518510156107a5578515610747576020820191825151156106e9578115159387856106b8575b61027b906102748984612798565b5190613689565b5f81600f0b13156106345761029e6102a691896102ad9551600f0b88519061397d565b989092612798565b51906141c9565b9081156105b0575f9361055b575b50826102c69161294f565b948515159081610550575b50156104cc5751935f92835b8651851015610308576103006001916102f6878a612798565b51600f0b90612f34565b9401936102dd565b90855f83600f0b131561046e5761032b6103309161032585612e62565b94612f34565b612e62565b91816103c3575050915b82156103655761036190604051938493846040919493926060820195825260208201520152565b0390f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761704d696e74416d6f756e74733a207a65726f204c50206d696e746564006044820152fd5b90918115610410578180821115610407576103dd9161295c565b915b82156103fd576103f7926103f2916127d9565b6127ec565b9161033a565b5050505f9161033a565b50505f916103df565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761704d696e74416d6f756e74733a206f6c645363616c6564207a65726f006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f737761704d696e74416d6f756e74733a207a65726f20746f74616c00000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f737761704d696e74416d6f756e74733a207472616e736665722065786365656460448201527f73206d61780000000000000000000000000000000000000000000000000000006064820152fd5b9050851115866102d1565b816105679294506127d9565b620f423f810180911161058357620f42409004916102c66102bb565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f737761704d696e74416d6f756e74733a20696e707574207a65726f206166746560448201527f7220696e7465726e616c20636f6e76657273696f6e00000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f737761704d696e74416d6f756e74733a20696e70757420746f6f20736d616c6c60448201527f20616674657220666565000000000000000000000000000000000000000000006064820152fd5b506106c383896127d9565b620f423f8101809111610583576106e2620f424061027b92048a61295c565b9050610266565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f737761704d696e74416d6f756e74733a20756e696e697420706f6f6c000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f737761704d696e74416d6f756e74733a20696e707574207a65726f00000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f737761704d696e74416d6f756e74733a206964780000000000000000000000006044820152fd5b346102245761036161081d61081736612523565b91612b22565b604051918291602083526020830190612577565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610224576108636125aa565b602435906044359081600f0b82036102245761088460ff600854161561288a565b61088c612bba565b600b5490600354158015610fff575b15610f7b576108a982612749565b936108b383612749565b925f5b818110610d54575050600a548551809103610b5e575b505f5b855181101561092457806108e560019288612798565b51600f0b61091c6108f5836129fd565b81939154906fffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b9055016108cf565b50835f610937610932612969565b612e37565b600f0b1315610b00577fffffffffffffffffffffffffffffffff0000000000000000000000000000000060095416906fffffffffffffffffffffffffffffffff16176009555f600954600f0b1315610aa25780610a7757507f6bc0553967b8bb727947c938555c0e061c3f96b629935c8f82a43b558dfb1c576109f3670de0b6b3a7640000935b84610a68575b73ffffffffffffffffffffffffffffffffffffffff6040519283925f8452606060208501526060840190612577565b9486604084015216930390a260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015610a38575b602083604051908152f35b5f80809381938290610a5f575b3390f115610a54578180610a2d565b6040513d5f823e3d90fd5b506108fc610a45565b610a72858561312a565b6109c4565b6109f37f6bc0553967b8bb727947c938555c0e061c3f96b629935c8f82a43b558dfb1c5791936109be565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4c4d53523a206b617070613e30000000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4c4d53523a20746f74616c207a65726f000000000000000000000000000000006044820152fd5b610b6790612749565b80519067ffffffffffffffff8211610d2757680100000000000000008211610d2757600a5482600a55808310610c90575b5060200190600a5f5260205f208160011c915f5b838110610c4257507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8116900380610be7575b5050506108cc565b925f935f5b818110610c0157505050015585808080610bdf565b9091946020610c386001928851600f0b908560041b6fffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b9601929101610bec565b5f5f5b60028110610c5a575083820155600101610bac565b86519096916001916020916fffffffffffffffffffffffffffffffff60078b901b81811b199092169216901b1792019601610c45565b600a5f5260205f206001808501811c8201920160011c019060108460041b1680610ccf575b505b818110610cc45750610b98565b5f8155600101610cb7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82549160200360031b1c16905589610cb5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6024602073ffffffffffffffffffffffffffffffffffffffff610d7684612907565b90549060031b1c16604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa908115610a54575f91610f4a575b508015610ec65780610e3b91610dd48489612798565b52610e1881610de285612937565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b610e2581610de2856128ef565b610e2e836128ef565b90549060031b1c90613689565b610e458289612798565b90600f0b90525f610e568289612798565b51600f0b1315610e68576001016108b6565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f696e697469616c4d696e743a207a65726f20696e7465726e616c2071000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f696e697469616c4d696e743a207a65726f20696e697469616c2062616c616e6360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152fd5b90506020813d8211610f73575b81610f646020938361246d565b81010312610224575188610dbe565b3d9150610f57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f696e697469616c4d696e743a20706f6f6c20616c726561647920696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152fd5b50600a541561089b565b60807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102245761103b6125aa565b6110436125cd565b906044359160643561105a60ff600854161561288a565b611062612bba565b8015908115611478575b501561141a57600b5460035480158015611410575b61138c57841561132e576110ac61109c61032b610932612969565b916110a5612a3d565b9087612b22565b915f5b8181106112d557506110c081612749565b905f5b81811061128857505061032b816109326110dc93613047565b818082111561127f576110ee9161295c565b905b8115611276576103f2611105926003546127d9565b935b8415611218576201869f81029081046201869f0361058357620186a0900484106111ba578161117f8573ffffffffffffffffffffffffffffffffffffffff93611171827f6bc0553967b8bb727947c938555c0e061c3f96b629935c8f82a43b558dfb1c579761312a565b604051948594169684612a85565b0390a260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015610a3857602083604051908152f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6d696e743a20696e73756666696369656e74204c50206d696e746564000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6d696e743a207a65726f204c50206d696e7465640000000000000000000000006044820152fd5b50505f93611107565b50505f906110f0565b806112bf6112b261129a600194612937565b90549060031b1c6112ab848a612798565b519061294f565b610e2581610de285612937565b6112c98286612798565b90600f0b9052016110c3565b806112e260019286612798565b516112ee575b016110af565b61132973ffffffffffffffffffffffffffffffffffffffff61130f83612907565b90549060031b1c166113218388612798565b519089612cbe565b6112e8565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6d696e743a207a65726f204c5020616d6f756e740000000000000000000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f6d696e743a2075736520696e697469616c4d696e7420666f7220706f6f6c206960448201527f6e697469616c697a6174696f6e000000000000000000000000000000000000006064820152fd5b50600a5415611081565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f6d696e743a20646561646c696e652065786365656465640000000000000000006044820152fd5b90504211158461106c565b34610224576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610224576114bb6125aa565b6114c36125cd565b9060443591606435916084359360a4359182151583036102245760e435936114e9612bba565b6114f860ff600854161561288a565b600b5496878710156119475783156118e95780159081156118de575b5015611880576003548015611822576115486115336115609286613689565b88600954600f0b611542612969565b906141fe565b9050611553886128ef565b90549060031b1c90612e7c565b9461157e61157060c43588612c31565b50876100f882809a11612abd565b965f9180151580611819575b6117a5575b506115b88573ffffffffffffffffffffffffffffffffffffffff861695863303611760576135b1565b6115ea73ffffffffffffffffffffffffffffffffffffffff6115d983612907565b90549060031b1c16968985896131c1565b6115f389612749565b905f5b8a81106117075750506001985f5b8181106116ca575b50509161168973ffffffffffffffffffffffffffffffffffffffff927f8c012c6148e8ecc34b864721470dcc1e938d162c498b7d28961a8a78238cfe139460409b5f146116bc575061165c61347c565b611666818a61295c565b8b51978852602088018b9052604088015260608701529116939081906080820190565b0390a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005582519182526020820152f35b6116c590613047565b61165c565b6116d48184612798565b51600f0b6116e457600101611604565b505f9950611689905073ffffffffffffffffffffffffffffffffffffffff61160c565b80611736611716600193612937565b90549060031b1c868d86851461174c575b5050610e2581610de285612937565b6117408286612798565b90600f0b9052016115f6565b6100f8906117599361295c565b868d611727565b865f52600260205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f526020526117a06117998360405f205461295c565b33836134dc565b6135b1565b620f42409192506117b690886127d9565b0490816117c4575b8961158f565b6118146117d08261291f565b6117e08583548360031b1c61294f565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b6117be565b5087151561158a565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6275726e537761703a20656d70747920737570706c79000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6275726e537761703a20646561646c696e6500000000000000000000000000006044820152fd5b905042111588611514565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6275726e537761703a207a65726f206c700000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6275726e537761703a20696478000000000000000000000000000000000000006044820152fd5b346102245760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610224576119dc6125aa565b6119e46125cd565b6084359160443591606435841515850361022457611a00612bba565b8015908115611d51575b5015611cf357600b54928015611c95576003548015611c3757611a3990611a32969596612a3d565b9083612823565b935f5b868110611bd8575050611a4e85612749565b5f5b868110611b9257506001955f5b818110611b55575b505091611adb73ffffffffffffffffffffffffffffffffffffffff927f3f84ed8aa11ed632de380466083280b4c5da668f12695b08636d7848eaf896b494610361985f14611b475750611ab661347c565b838616803303611b16575b50611acc81876135b1565b86604051948594169684612a85565b0390a260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055604051918291602083526020830190612577565b5f52600260205260405f208433165f52602052611b41611b3a8260405f205461295c565b33886134dc565b88611ac1565b611b5090613047565b611ab6565b611b5f8184612798565b51600f0b611b6f57600101611a5d565b505f9650611adb905073ffffffffffffffffffffffffffffffffffffffff611a65565b80611bbf6112b2611ba76001949a999a612937565b90549060031b1c611bb8848c612798565b519061295c565b611bc98285612798565b90600f0b905201959495611a50565b80611be7600192889998612798565b51611bf6575b01959495611a3c565b611c328373ffffffffffffffffffffffffffffffffffffffff611c1884612907565b90549060031b1c1687611c2b858d612798565b51916131c1565b611bed565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6275726e3a20656d70747920737570706c7900000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6275726e3a207a65726f206c70000000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f6275726e3a20646561646c696e652065786365656465640000000000000000006044820152fd5b905042111585611a0a565b60e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022457611d8e6125aa565b611d966125cd565b604435606435916084359360a4359360c43592611db860ff600854161561288a565b611dc0612bba565b600b5496878610156123f557821561239757801590811561238c575b501561232e57600a54156122d057611e02611df78784612c31565b9050610e2e876128ef565b945f86600f0b131561224c57611e2a611e429682600954600f0b611e24612969565b9061397d565b9690611e35836128ef565b90549060031b1c90612c53565b9687156121c857611e539088612c85565b95611e5e878961294f565b9384151590816121bd575b501561215f57611e9f8473ffffffffffffffffffffffffffffffffffffffff611e9185612907565b90549060031b1c1687612cbe565b5f9580151580612156575b612116575b50611ed8611ebd878661295c565b6117e0611ec985612937565b91909283548360031b1c61294f565b611ee3610932612969565b98611ef7611ef08b612e62565b928b612f34565b91611f0183612e62565b6003549091816120d4575050995b8a1561207657611f1e82612749565b925f5b838110612038575050505091611fbf73ffffffffffffffffffffffffffffffffffffffff611f838194611f747fcbf41a060d7827197acec8e5ef3abf36d633e77060f7aec03943608d1cd84ebe97613047565b611f7e8d8661312a565b612907565b90549060031b1c1696611f96818a61295c565b8b8560405196879616991697859094939260609260808301968352602083015260408201520152565b0390a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015612013575b505061036190604051938493846040919493926060820195825260208201520152565b5f8080938193829061202f575b3390f115610a54578380611ff0565b506108fc612020565b806120608461205b8561204c6001966129fd565b90549060031b1c600f0b612f71565b613001565b61206a8288612798565b90600f0b905201611f21565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f737761704d696e743a207a65726f204c50206d696e74656400000000000000006044820152fd5b9091818082111561210d576120e89161295c565b915b8215612103576120fd926103f2916127d9565b99611f0f565b5050505f99611f0f565b50505f916120ea565b620f424091965061212790886127d9565b049485612135575b89611eaf565b6121516121418361291f565b6117e08983548360031b1c61294f565b61212f565b50871515611eaa565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f737761704d696e743a207472616e736665722065786365656473206d617800006044820152fd5b90508411158a611e69565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f737761704d696e743a20696e707574207a65726f20616674657220696e74657260448201527f6e616c20636f6e76657273696f6e0000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f737761704d696e743a20696e70757420746f6f20736d616c6c2061667465722060448201527f66656500000000000000000000000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f737761704d696e743a20756e696e697420706f6f6c00000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f737761704d696e743a20646561646c696e6500000000000000000000000000006044820152fd5b905042111588611ddc565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f737761704d696e743a20696e707574207a65726f0000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f737761704d696e743a20696478000000000000000000000000000000000000006044820152fd5b346102245761036161081d61246736612523565b91612823565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610d2757604052565b67ffffffffffffffff8111610d275760051b60200190565b9080601f830112156102245781356124dd816124ae565b926124eb604051948561246d565b81845260208085019260051b82010192831161022457602001905b8282106125135750505090565b8135815260209182019101612506565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102245760043591602435916044359067ffffffffffffffff821161022457612574916004016124c6565b90565b90602080835192838152019201905f5b8181106125945750505090565b8251845260209384019390920191600101612587565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361022457565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361022457565b359081600f0b820361022457565b60c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102245760043591602435916044359160643567ffffffffffffffff81116102245760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc828503011261022457604051906040820182811067ffffffffffffffff821117610d275760405261269c816004016125f0565b825260248101359067ffffffffffffffff8211610224570183602382011215610224576004810135906126ce826124ae565b916126dc604051938461246d565b808352602060048185019260051b840101019186831161022457602401905b828210612731575050506020820152916084359067ffffffffffffffff82116102245761272a916004016124c6565b9060a43590565b6020809161273e846125f0565b8152019101906126fb565b90612753826124ae565b612760604051918261246d565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061278e82946124ae565b0190602036910137565b80518210156127ac5760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8181029291811591840414171561058357565b81156127f6570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b9082519161283083612749565b9382158015612882575b61287b575f5b84811061284f57505050505090565b8061286a856103f261286360019587612798565b51876127d9565b6128748289612798565b5201612840565b5050505090565b50831561283a565b1561289157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b600d548110156127ac57600d5f5260205f2001905f90565b600b548110156127ac57600b5f5260205f2001905f90565b600c548110156127ac57600c5f5260205f2001905f90565b600f548110156127ac57600f5f5260205f2001905f90565b9190820180921161058357565b9190820391821161058357565b60405190600a548083528260208101600a5f5260205f20925f905b8060018301106129d1576129aa9454918181106129bd575b106129ac575b50038361246d565b565b60801d600f0b81526020015f6129a2565b92602060019184600f0b815201930161299c565b9160029193506040600191865480600f0b825260801d600f0b6020820152019401920185929391612984565b90600a548210156127ac57600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b60405190600f548083528260208101600f5f5260205f20925f5b818110612a6c5750506129aa9250038361246d565b8454835260019485019487945060209093019201612a57565b939291612ab89073ffffffffffffffffffffffffffffffffffffffff604093168652606060208701526060860190612577565b930152565b15612ac457565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6275726e53776170416d6f756e74733a206f7574707574207a65726f000000006044820152fd5b825190612b2e82612749565b9383158015612bb2575b61287b575f5b838110612b4d57505050505090565b612b6a85612b65612b5e8486612798565b51866127d9565b61294f565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820191821161058357612ba1866001936127ec565b612bab8289612798565b5201612b3e565b508215612b38565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005414612c095760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b91908015612c4d57612c466125749184612c85565b809361295c565b505f9190565b612c67612c608383612e7c565b9283613689565b90600f0b90600f0b12612c775790565b600181018091116105835790565b908015612cb857612c95916127d9565b620f424081019081811161058357620f423f0190811161058357620f4240900490565b50505f90565b9073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169173ffffffffffffffffffffffffffffffffffffffff82169183831480612e2d575b15612d6e57505050803b15610224575f906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af18015610a5457612d645750565b5f6129aa9161246d565b919390925073ffffffffffffffffffffffffffffffffffffffff604051937f23b872dd000000000000000000000000000000000000000000000000000000005f52166004523060245260445260205f60648180855af19060015f5114821615612e0e575b50906040525f60605215612de35750565b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6001821516612e24573b15153d1516165f612dd2565b823d5f823e3d90fd5b5084341015612d18565b5f90815b8151831015612e5c57612e546001916102f68585612798565b920191612e3b565b91505090565b600f0b5f811261022457670de0b6b3a76400000260401c90565b8115612cb857600f0b5f8112610224576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116102245760401b81198111610224570190565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a575b1561022457600f0b90565b506f7fffffffffffffffffffffffffffffff811315612f0f565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b600f0b801561022457700100000000000000000000000000000000057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b90600f0b9081156102245760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b5f61305182612e37565b600f0b13156130cc578051600a915f5b82811061306e5750505050565b6130788183612798565b51600f0b9084548110156127ac57600191855f526130c460205f2083851c019160108460041b168354906fffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b905501613061565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a206e657720746f74616c207a65726f0000000000000000000000006044820152fd5b73ffffffffffffffffffffffffffffffffffffffff16908115613195577fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6020826131785f9460035461294f565b6003558484526001825260408420818154019055604051908152a3565b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b90919280613427575b1561335d575073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b15610224576040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081525f816024818380978960048401525af18015610a5457613348575b508180809481935af1903d15613342573d9067ffffffffffffffff821161331557604051916132a760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116018461246d565b825260203d92013e5b156132b757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526041600452fd5b506132b0565b6133559192505f9061246d565b5f905f613250565b9173ffffffffffffffffffffffffffffffffffffffff604051927fa9059cbb000000000000000000000000000000000000000000000000000000005f521660045260245260205f60448180865af19060015f5114821615613406575b604052156133c45750565b73ffffffffffffffffffffffffffffffffffffffff907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b90600181151661341e57823b15153d151616906133b9565b503d5f823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8216146131ca565b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000060095416600955600a545f600a55806134b35750565b600a5f52600160205f20910160011c8101905b8181106134d1575050565b5f81556001016134c6565b73ffffffffffffffffffffffffffffffffffffffff169081156135855773ffffffffffffffffffffffffffffffffffffffff169182156135595760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591835f526002825260405f20855f5282528060405f2055604051908152a3565b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b90919073ffffffffffffffffffffffffffffffffffffffff16801561365d57805f52600160205260405f205483811061362a576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef93858752600184520360408620558060035403600355604051908152a3565b91507fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b81156102245777ffffffffffffffffffffffffffffffffffffffffffffffff811161370157906136bb9160401b6127ec565b6fffffffffffffffffffffffffffffffff8111610224576fffffffffffffffffffffffffffffffff166f7fffffffffffffffffffffffffffffff811161022457600f0b90565b60c09181831c80936401000000008210156138a6575b600282620100006137a494101561389a575b61010081101561388e575b6010811015613882575b6004811015613877575b101561386f575b8360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b6127ec565b926fffffffffffffffffffffffffffffffff8411610224578160801c8402906fffffffffffffffffffffffffffffffff8316850290809460401b90828210613845575b5003928160801b9182851061381c575b60801c036138115761380992036127ec565b905b016136bb565b50505060019061380b565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906137f7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f6137e7565b60010161374f565b91810191811c613748565b6004928301921c61373e565b6008928301921c613734565b6010928301921c613729565b505060e082811c90613717565b156138ba57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b1561391f57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4c4d53523a20623c3d30000000000000000000000000000000000000000000006044820152fd5b90919392938251928382101561416b575f86600f0b131561410d576139a181612e37565b936139bb855f81600f0b13956139b6876138b3565b612f71565b906139ca5f83600f0b13613918565b6139d382612fb1565b916139dd82612749565b955f5b8381106140c357506510c6f7a0b5ed905f901561406557613a01898c613001565b916801000000000000000083600f0b12614054575b5f5b60408110613e39575b505f9b5f935b60408510613c09575b50505050505f955f935f5b848110613b05575b5050505050613af95791613a6b613a61613a7093613a769695612798565b51600f0b87612f71565b612f34565b93612f71565b915f83600f0b13801590613aec575b613a8d579190565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4c4d53523a207a65726f206f75747075740000000000000000000000000000006044820152606490fd5b505f81600f0b1315613a85565b5050505090505f905f90565b878103613b15575b600101613a3b565b613b2c613b228289612798565b51600f0b8d612f71565b5f81600f0b13613b3d575b50613b0d565b82613b4a919a929a612f71565b6820000000000000000081600f0b13613bf557613b69613b84916146aa565b613b7f613b768c87612798565b51600f0b612ed7565b614655565b5f81600f0b1315613bf557613ba690613b9d8b86612798565b51600f0b613001565b5f81600f0b1315613bf557613bbd613bc39161470c565b85612f71565b905f82600f0b12613be157600191613bda91612f34565b9890613b37565b985050505050505060015f80808080613a43565b509750505050505060015f80808080613a43565b68020000000000000000613c1d8286612f34565b60401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613e1f575b1561022457600f0b90898c8c5f915f905f905b8d8210613d01575b505015613ce2575050506f7fffffffffffffffffffffffffffffff5b83600f0b90600f0b135f14613cd95750935b82613ca28587614655565b600f0b1315613cc757603f8114613cbd575b60010193613a27565b929c508c92613cb4565b50505091995050975f80808080613a30565b94935092613c97565b613cf2613a6b91613cfc94612798565b51600f0b85612f71565b613c85565b9092839592949503613d1f575b50506001018c92918f918f92613c61565b8d613d37613d2d8585612798565b51600f0b89612f71565b5f81600f0b13613d49575b5050613d0e565b90613d5691969496612f71565b6820000000000000000081600f0b13613e0f57613d75613d82916146aa565b613b7f613b768885612798565b915f83600f0b1315613dff575090613b9d85613d9d93612798565b8d5f82600f0b1315613df05750613db6613dbc9161470c565b8b612f71565b908d5f83600f0b12613de15750600191613dd591612f34565b9290508c8f8d5f613d42565b93509150508c60018f80613c69565b93505090508c60018f80613c69565b9450505090508c60018f80613c69565b5050925090508c60018f80613c69565b506f7fffffffffffffffffffffffffffffff811315613c4e565b925f5f5f5b888110613f36575b5015613f1657506f7fffffffffffffffffffffffffffffff5b8d600f0b90600f0b12801590613efe575b613ef857600f0b60411b60401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613ede575b1561022457600f0b926a10000000000000000000008413613ecb575b600101613a18565b6a10000000000000000000009350613ec3565b506f7fffffffffffffffffffffffffffffff811315613ea7565b92613a21565b506a100000000000000000000081600f0b1215613e70565b613f3190613a6b613f278c8c612798565b51600f0b84612f71565b613e5f565b839e9c9a98969f9d9b9980989695948b8303613f65575b50506001019e9597999b9d92939496989a9c9e613e3e565b613f7d90613f73848d612798565b51600f0b90612f71565b5f81600f0b13613f8f575b508f613f4d565b90613f9c91949294612f71565b6820000000000000000081600f0b1361403a578b613b7f613b7686613fc3613fc9956146aa565b93612798565b5f81600f0b131561403a57613fe290613b9d858e612798565b5f81600f0b131561403a57613ff9613fff9161470c565b87612f71565b905f82600f0b126140205760019161401691612f34565b929050875f613f88565b9250505060019d9496989a9c9192939597999b9d5f613e46565b5091505060019d9496989a9c9192939597999b9d5f613e46565b680100000000000000009250613a16565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4c4d53523a20737761704d696e7420646567656e6572617465000000000000006044820152fd5b6001906140f76140f2876139b66140da8c8c612798565b51600f0b6140e8868d612798565b51600f0b90614655565b6146aa565b614101828b612798565b90600f0b9052016139e0565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4c4d53523a20616d6f756e74203c3d20300000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4c4d53523a2069647800000000000000000000000000000000000000000000006044820152fd5b6141ee6141df6141d98484612e7c565b93614692565b6141e884614692565b92612f71565b90600f0b90600f0b13612c775790565b93919383600f0b5f8113156145b55768010000000000000000126145575761423861422883612e37565b80926139b65f83600f0b136138b3565b906142475f83600f0b13613918565b61425082612fb1565b61425c84519287612f71565b9661426683612749565b935f5b84811061451e575061427e613d2d8388612798565b975f89600f0b13965f5b8681106142b25750505050505050501580156142a5575b613a8d57565b505f82600f0b131561429f565b8481036142c5575b600101955b95614288565b6142d2613f278284612798565b5f81600f0b136142e3575b506142ba565b6142f387829d949d9b939b612f71565b9182600f0b926820000000000000000084136144f2577fffffffffffffffffffffffffffffffff8000000000000000000000000000000061434e6140f28b8f8f6140e88e6143446139b69484612798565b51600f0b92612798565b94146102245761436d614368614373925f03600f0b6146aa565b614613565b84612f71565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580614504575b1561022457600f0b5f8113156144f257613ff96143c79161470c565b9288888c6143d58282612798565b51600f0b87600f0b1361444a576144049450614440979593506143fb92508e9150612798565b51600f0b612f34565b61440e8b8b612798565b90600f0b905261442b82614422888c612798565b51600f0b614655565b614435878b612798565b90600f0b9052612f34565b98600197886142dd565b61447694965061446d9395506140f2929161446491612798565b51600f0b612f71565b613b7f83612ed7565b915f83600f0b13156144e157506144a561449f61449a6144c995946144af94613001565b61470c565b86612f71565b6143fb8b8b612798565b6144b98a8a612798565b90600f0b90526102f68589612798565b985f6144d58589612798565b526001809801956142bf565b999050600191509a919a01956142bf565b50999050600191509a919a01956142bf565b506f7fffffffffffffffffffffffffffffff8113156143ab565b8061454161452e6001938a612798565b51600f0b61453b8c614613565b90612f71565b61454b8289612798565b90600f0b905201614269565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4275726e20746f6f206c617267650000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4275726e20746f6f20736d616c6c0000000000000000000000000000000000006044820152fd5b600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b677fffffffffffffff81116102245760401b600f0b90565b600f0b68400000000000000000811215610224577fffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000811261470757700171547652b82fe1777d0ffda0d23a7d12612574910260801d600f0b614839565b505f90565b600f0b5f811315610224575f90806801000000000000000082121561482c575b806401000000006002921215614820575b62010000811215614814575b610100811215614808575b60108112156147fc575b60048112156147f1575b12156147e7575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f83136147cb57506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d90565b8002908160ff1c9182607f011c918302019160011d91906147a6565b906001019061476f565b92810192811d614768565b6004938401931d61475e565b6008938401931d614754565b6010938401931d614749565b6020938401931d61473d565b506040915080821d61472c565b80600f0b68400000000000000000811215610224577fffffffffffffffffffffffffffffffffffffffffffffffc000000000000000008112612cb8576f80000000000000000000000000000000915f6780000000000000008216600f0b13615435575b5f6740000000000000008216600f0b13615418575b5f6720000000000000008216600f0b136153fb575b5f6710000000000000008216600f0b136153de575b5f6708000000000000008216600f0b136153c1575b5f6704000000000000008216600f0b136153a4575b5f6702000000000000008216600f0b13615387575b5f6701000000000000008216600f0b1361536a575b5f66800000000000008216600f0b1361534d575b5f66400000000000008216600f0b13615330575b5f66200000000000008216600f0b13615313575b5f66100000000000008216600f0b136152f6575b5f66080000000000008216600f0b136152d9575b5f66040000000000008216600f0b136152bc575b5f66020000000000008216600f0b1361529f575b5f66010000000000008216600f0b13615282575b5f658000000000008216600f0b13615265575b5f654000000000008216600f0b13615248575b5f652000000000008216600f0b1361522b575b5f651000000000008216600f0b1361520e575b5f650800000000008216600f0b136151f1575b5f650400000000008216600f0b136151d4575b5f650200000000008216600f0b136151b7575b5f650100000000008216600f0b1361519a575b5f6480000000008216600f0b1361517d575b5f6440000000008216600f0b13615160575b5f6420000000008216600f0b13615143575b5f6410000000008216600f0b13615126575b5f6408000000008216600f0b13615109575b5f6404000000008216600f0b136150ec575b5f6402000000008216600f0b136150cf575b5f6401000000008216600f0b136150b2575b5f63800000008216600f0b13615095575b5f63400000008216600f0b13615078575b5f63200000008216600f0b1361505b575b5f63100000008216600f0b1361503e575b5f63080000008216600f0b13615021575b5f63040000008216600f0b13615004575b5f63020000008216600f0b13614fe7575b5f63010000008216600f0b13614fca575b5f628000008216600f0b13614fad575b5f624000008216600f0b13614f90575b5f622000008216600f0b13614f73575b5f621000008216600f0b13614f56575b5f620800008216600f0b13614f39575b5f620400008216600f0b13614f1c575b5f620200008216600f0b13614eff575b5f620100008216600f0b13614ee2575b5f6180008216600f0b13614ec5575b5f6140008216600f0b13614ea8575b5f6120008216600f0b13614e8b575b5f6110008216600f0b13614e6e575b5f6108008216600f0b13614e51575b5f6104008216600f0b13614e34575b5f6102008216600f0b13614e17575b5f6101008216600f0b13614dfa575b5f60808216600f0b13614ddd575b5f60408216600f0b13614dc0575b5f60208216600f0b13614da3575b5f60108216600f0b13614d86575b5f60088216600f0b13614d69575b5f60048216600f0b13614d4c575b5f60028216600f0b13614d2e575b60015f9116600f0b13614d11575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161022457600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c90614ce7565b7001000000000000000162e42fefa39ef35890920260801c91614cd9565b9170010000000000000002c5c85fdf473de6b20260801c91614ccb565b91700100000000000000058b90bfbe8e7bcd6d0260801c91614cbd565b917001000000000000000b17217f7d1cf79afa0260801c91614caf565b91700100000000000000162e42fefa39ef366f0260801c91614ca1565b917001000000000000002c5c85fdf473de6eca0260801c91614c93565b9170010000000000000058b90bfbe8e7bce5440260801c91614c85565b91700100000000000000b17217f7d1cf79e9490260801c91614c77565b9170010000000000000162e42fefa39ef44d910260801c91614c68565b91700100000000000002c5c85fdf473dea871f0260801c91614c59565b917001000000000000058b90bfbe8e7bdcbe2e0260801c91614c4a565b9170010000000000000b17217f7d1cf7d83c1a0260801c91614c3b565b917001000000000000162e42fefa39f02b772c0260801c91614c2c565b9170010000000000002c5c85fdf473e242ea380260801c91614c1d565b91700100000000000058b90bfbe8e7cc35c3f00260801c91614c0e565b917001000000000000b17217f7d1cfb72b45e10260801c91614bff565b91700100000000000162e42fefa39fe95583c20260801c91614bef565b917001000000000002c5c85fdf4741bea6e77e0260801c91614bdf565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c91614bcf565b91700100000000000b17217f7d1d351a389d400260801c91614bbf565b9170010000000000162e42fefa3ae53369388c0260801c91614baf565b91700100000000002c5c85fdf477b662b269450260801c91614b9f565b917001000000000058b90bfbe8f71cb4e4b33d0260801c91614b8f565b9170010000000000b17217f7d20cf927c8e94c0260801c91614b7f565b917001000000000162e42fefa494f1478fde050260801c91614b6e565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c91614b5d565b91700100000000058b90bfbe9ddbac5e109cce0260801c91614b4c565b917001000000000b17217f7d5a7716bba4a9ae0260801c91614b3b565b91700100000000162e42fefb2fed257559bdaa0260801c91614b2a565b917001000000002c5c85fdf84bd62ae30a74cc0260801c91614b19565b9170010000000058b90bfbf8479bd5a81b51ad0260801c91614b08565b91700100000000b17217f80f4ef5aadda455540260801c91614af7565b9170010000000162e42ff0999ce3541b9fffcf0260801c91614ae5565b91700100000002c5c85fe31f35a6a30da1be500260801c91614ad3565b917001000000058b90bfcdee5acd3c1cedc8230260801c91614ac1565b9170010000000b17217fba9c739aa5819f44f90260801c91614aaf565b917001000000162e42fff037df38aa2b219f060260801c91614a9d565b9170010000002c5c8601cc6b9e94213c72737a0260801c91614a8b565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91614a79565b917001000000b1721835514b86e6d96efd1bfe0260801c91614a67565b91700100000162e430e5a18f6119e3c02282a50260801c91614a54565b917001000002c5c863b73f016468f6bac5ca2b0260801c91614a41565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91614a2e565b91700100000b1721bcfc99d9f890ea069117630260801c91614a1b565b9170010000162e43f4f831060e02d839a9d16d0260801c91614a08565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c916149f5565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c916149e2565b9170010000b17255775c040618bf4a4ade83fc0260801c916149cf565b917001000162e525ee054754457d59952920260260801c916149bb565b9170010002c5cc37da9491d0985c348c68e7b30260801c916149a7565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91614993565b917001000b175effdc76ba38e31671ca9397250260801c9161497f565b91700100162f3904051fa128bca9c55c31e5df0260801c9161496b565b917001002c605e2e8cec506d21bfc89a23a00f0260801c91614957565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c91614943565b91700100b1afa5abcbed6129ab13ec11dc95430260801c9161492f565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c9161491a565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c91614905565b917001059b0d31585743ae7c548eb68ca417fd0260801c916148f0565b9170010b5586cf9890f6298b92b71842a983630260801c916148db565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c916148c6565b917001306fe0a31b7152de8d5a46305c85edec0260801c916148b1565b6fb504f333f9de6484597d89b3754abe9f925061489c56fea2646970667358221220467f854c2026e7b4a953423ce7e4a2a365f7727509b2ab675bcdc27887fb74c664736f6c634300081e0033","sourceMap":"962:27112:54:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;21361:32;;962:27112;;;21436:12;;962:27112;;21495:16;;962:27112;;22028:24;21618:42;21778:108;27692:32;21618:42;22210:23;21618:42;;962:27112;21618:42;22075:39;21618:42;;:::i;:::-;962:27112;21829:19;962:27112;;;;21829:19;;;21778:108;;:::i;:::-;22028:24;;;;:::i;:::-;962:27112;27692:32;;:::i;:::-;22075:39;;;:::i;:::-;22132:23;;22124:64;22132:23;;;;22124:64;:::i;:::-;22210:23;:::i;:::-;962:27112;;;;;;21829:19;962:27112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;12617:31;;962:27112;;;12691:15;;962:27112;;12756:19;;;;;;962:27112;12756:30;962:27112;;12983:14;;;;12935:34;12983:14;12979:164;;962:27112;5432:32:51;13271:23:54;;;;;:::i;:::-;962:27112;5432:32:51;;:::i;:::-;962:27112:54;;;;13313:28;962:27112;;;13568:122;13882:23;962:27112;;13836:70;962:27112;;;;13619:19;;13568:122;;:::i;:::-;13882:23;;;;:::i;:::-;962:27112;13836:70;;:::i;:::-;13924:16;;;962:27112;;;14086:111;;;962:27112;14217:20;;;;;:::i;:::-;14255:12;;;;:39;;;;962:27112;;;;;14462:19;;962:27112;;;27988:3;962:27112;;27966:20;;;;;28013:21;962:27112;28021:12;;;;;:::i;:::-;962:27112;;;28013:21;;:::i;:::-;27988:3;962:27112;27951:13;;;27966:20;;;962:27112;;;;14500:20;962:27112;;;14649:34;14713:38;14582;;;;:::i;:::-;14649:34;;:::i;:::-;14713:38;:::i;:::-;14766:17;;;;14891:20;;14762:548;;15328:12;;962:27112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12756:19;962:27112;;;;;;;;;;;;;;;14762:548;14950:13;;;;962:27112;;15030:21;;;;;;;15056;;;:::i;:::-;15029:53;;15100:9;;;;15200:34;15201:20;;;;:::i;:::-;15200:34;:::i;:::-;15096:204;14762:548;;15096:204;15273:12;;;962:27112;15096:204;14762:548;;15029:53;;;962:27112;15029:53;;;962:27112;;;;;;;12756:19;962:27112;;;;;;;;;;;;;;;;;;;;;;12756:19;962:27112;;;;;;;;;;;;;;;;;;;;;;12756:19;962:27112;;;;;;;;;;;;;;;;;;;;14255:39;14271:23;;;;;14255:39;;;14086:111;14129:25;;;;;;:::i;:::-;14157:6;962:27112;;;;;;;14167:7;962:27112;;;14217:20;14086:111;;962:27112;;;;;;;;;;;;;;;;;12756:19;962:27112;;;;;;;;;;;;;;;;;;;;;;;;;;;12756:19;962:27112;;;;;;;;;;;;;;;;;;;;12979:164;13025:24;;;;;:::i;:::-;13052:6;962:27112;;;;;;;13110:22;13062:7;5432:32:51;962:27112:54;;13110:22;;:::i;:::-;12979:164;;;;962:27112;;;;;;;12756:19;962:27112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;3684:27:51;962:27112:54;3693:7:51;962:27112:54;;3692:8:51;3684:27;:::i;:::-;2989:103:31;;:::i;:::-;1412:7:54;962:27112;1890:4:51;1521:12:54;1890:4:51;1521:17:54;:48;;;;962:27112;;;;1898:15;;;:::i;:::-;1957:16;;;;:::i;:::-;1989:10;962:27112;2001:5;;;;;;962:27112;;1197:11:42;962:27112:54;;;1197:45:42;;;1193:127;;1984:660:54;1334:10:42;962:27112:54;1334:10:42;962:27112:54;;1346:27:42;;;;;1408:19;;962:27112:54;1408:19:42;;;:::i;:::-;962:27112:54;;;;1391:14:42;;;:::i;:::-;962:27112:54;;;;;;;;;;;;;;;;;;;;;;;;;1334:10:42;;1346:27;;;962:27112:54;1494:31:42;962:27112:54;;:::i;:::-;1494:31:42;:::i;:::-;962:27112:54;;1543:17:42;962:27112:54;;;;2722:5;962:27112;;;;;;2722:5;962:27112;;2722:5;962:27112;;;1679:19:42;962:27112:54;;;2846:13;;;:31;2970:63;962:27112;2862:4;2846:31;;2892:12;2888:68;;2846:31;962:27112;;;2970:63;;;962:27112;;;;;;;;;;;;;:::i;:::-;;;;;;;;2970:63;;;;962:27112;1505:66:31;2407:1;3553:21:51;3587:7;;;;3584:57;;2846:31:54;962:27112;;;;;;;;3584:57:51;962:27112:54;3608:33:51;;;;;;;;;3584:57;3616:10;3608:33;;;;;3584:57;;;;3608:33;962:27112:54;;;;;;;;;3608:33:51;;;;;2888:68:54;2936:8;;;;:::i;:::-;2888:68;;2846:31;962:27112;2970:63;2846:31;;;;962:27112;;;;;;;;;;;;2367:6;962:27112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1193:127:42;1272:37;;;:::i;:::-;962:27112:54;;;;;;;;;;;;;1197:11:42;962:27112:54;;1197:11:42;962:27112:54;;;;;;1193:127:42;962:27112:54;;;;1197:11:42;962:27112:54;;;;;;;;;;;;;;;;-1:-1:-1;962:27112:54;;;;;;;;;1193:127:42;;;;;962:27112:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;962:27112:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1197:11:42;962:27112:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1521:12;962:27112;;;;;;;;;;;;;;;;;;1989:10;962:27112;;;2045:10;;;:::i;:::-;962:27112;;;1521:12;962:27112;;;;;2038:43;;;;962:27112;2038:43;;2075:4;962:27112;2038:43;;962:27112;2038:43;;;;;;;962:27112;2038:43;;;1989:10;2103:7;;;962:27112;;2162:23;5432:32:51;2162:23:54;;;;;:::i;:::-;962:27112;2239:28;:22;;;;:::i;:::-;:28;962:27112;;;;;;;;;;;;;;;;;;;2239:28;2367:15;:9;;;;:::i;:15::-;2509:9;;;:::i;:::-;962:27112;;;1521:12;962:27112;;5432:32:51;;:::i;:::-;2465:54:54;;;;:::i;:::-;962:27112;;;1890:4:51;;962:27112:54;2541:15;;;;:::i;:::-;962:27112;;;2541:27;962:27112;;;;;1989:10;;962:27112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2038:43;;;962:27112;2038:43;;;;;;;;;962:27112;2038:43;;;:::i;:::-;;;962:27112;;;;;2038:43;;;;;;-1:-1:-1;2038:43:54;;962:27112;;;;;;;;;;;;;;;;;;;;;;;;;;;;1521:48;962:27112;1542:15;962:27112;1542:27;1521:48;;962:27112;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;3684:27:51;962:27112:54;3693:7:51;962:27112:54;;3692:8:51;3684:27;:::i;:::-;2989:103:31;;:::i;:::-;3274:13:54;;:44;;;;;962:27112;;;;;3368:7;962:27112;3483:12;1890:4:51;3483:17:54;;:48;;;;962:27112;;;3634:17;;962:27112;;4010:61;3854:38;3789:35;962:27112;;:::i;3854:38::-;962:27112;;;:::i;:::-;4010:61;;;:::i;:::-;4128:10;962:27112;4140:5;;;;;;4445:15;;;;:::i;:::-;4475:10;962:27112;4487:5;;;;;;4813:12;;4996:32;4813:12;;5058:38;4813:12;;:::i;5058:38::-;5156:21;;;;;;;5182;;;:::i;:::-;5155:53;;5288:9;;;;5391:20;5390:34;1890:4:51;3483:12:54;1890:4:51;5391:20:54;:::i;5390:34::-;5284:200;;5581:18;;962:27112;;5811:6;962:27112;;;;;5811:6;962:27112;;;5820:7;962:27112;;5845:31;;962:27112;;5936:14;5966:64;5936:14;962:27112;5936:14;;;5966:64;5936:14;;:::i;:::-;962:27112;;;;;;5966:64;;;:::i;:::-;;;;962:27112;1505:66:31;2407:1;3553:21:51;3587:7;;;;3584:57;;962:27112:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5284:200;5455:18;;962:27112;5284:200;;;5155:53;;;962:27112;5155:53;;;4475:10;4527:22;5432:32:51;4527:42:54;:22;962:27112;4527:22;;:::i;:::-;962:27112;;;3483:12;962:27112;;4552:17;;;;:::i;:::-;962:27112;4527:42;;:::i;:::-;4583:31;:22;;;;:::i;5432:32:51:-;4628:57:54;;;;:::i;:::-;962:27112;4051:19;962:27112;1890:4:51;;962:27112:54;4475:10;;4128;4167:17;;962:27112;4167:17;;;:::i;:::-;962:27112;4163:115;;4128:10;962:27112;4128:10;;4163:115;4245:17;962:27112;4233:10;;;:::i;:::-;962:27112;;;3483:12;962:27112;;;4245:17;;;;:::i;:::-;962:27112;4245:17;;;:::i;:::-;4163:115;;962:27112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3483:48;962:27112;3504:15;962:27112;3504:27;3483:48;;962:27112;;;;;;;;;;;;;;;;;;;;;;;3274:44;3291:15;;;:27;;3274:44;;;962:27112;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2989:103:31;;;:::i;:::-;3684:27:51;962:27112:54;3693:7:51;962:27112:54;;3692:8:51;3684:27;:::i;:::-;23530:7:54;962:27112;23562:20;;;;962:27112;;;23618:12;;962:27112;;23670:13;;:44;;;;;962:27112;;;;;23765:12;1890:4:51;23795:10:54;;962:27112;;22413:50:42;23924:36:54;27692:32;23924:36;;;:::i;:::-;962:27112;24114:5;962:27112;;;;;:::i;:::-;22413:50:42;;:::i;:::-;24305:24:54;;;;;:::i;:::-;962:27112;;;23765:12;962:27112;;27692:32;;:::i;:::-;962:27112;24489:24;24352:40;962:27112;;24352:40;;:::i;:::-;24410:24;;24402:65;24410:24;;;;24402:65;:::i;24489:24::-;24589:22;962:27112;24625:18;;;;:32;;;962:27112;24621:228;;962:27112;;25108:8;962:27112;;;;24931:10;;;:19;24927:159;;25108:8;:::i;:::-;25297:6;962:27112;25215:25;;;:::i;:::-;962:27112;;;23765:12;962:27112;;;25297:6;;;;;:::i;:::-;25440:15;;;:::i;:::-;25470;962:27112;25487:7;;;;;;25978:19;;962:27112;26012:15;962:27112;26029:7;;;;;;26007:125;26141:130;;;26286:113;962:27112;26141:130;26286:113;26141:130;962:27112;26141:130;;;;;26168:12;;;:::i;:::-;26369:17;;;;:::i;:::-;962:27112;;;;;1890:4:51;;;962:27112:54;;;1890:4:51;;;962:27112:54;1890:4:51;;;962:27112:54;;;;;;;1890:4:51;;;;;26286:113:54;;;;962:27112;1505:66:31;2407:1;962:27112:54;;;;;;;;;;26141:130;26247:12;;;:::i;:::-;26141:130;;26038:5;26063:17;;;;:::i;:::-;962:27112;;;26059:63;;962:27112;;26012:15;;26059:63;-1:-1:-1;962:27112:54;;-1:-1:-1;26286:113:54;;-1:-1:-1;962:27112:54;26114:5;;25496;25534:24;5432:32:51;25534:24:54;962:27112;25534:24;;:::i;:::-;962:27112;;;23765:12;962:27112;;25576:23;;;;;25572:194;;25496:5;25779:24;;:33;:24;;;;:::i;5432:32:51:-;25826:61:54;;;;:::i;:::-;962:27112;;;1890:4:51;;962:27112:54;25470:15;;25572:194;25720:18;;:31;:18;;:::i;:31::-;25572:194;;;;24927:159;962:27112;;;24984:11;962:27112;;;;;;24931:10;962:27112;-1:-1:-1;962:27112:54;;;25056:18;;962:27112;;-1:-1:-1;962:27112:54;1890:4:51;25056:18:54;:::i;:::-;24931:10;25056:18;;:::i;:::-;25108:8;:::i;24621:228::-;24714:9;24687:23;;;;;;;:::i;:::-;962:27112;24741:14;;24737:102;;24621:228;;;;24737:102;24775:49;:35;;;:::i;:::-;:49;962:27112;;;;23765:12;962:27112;;24775:49;:::i;:::-;962:27112;;;;;;;;;;;;;;;;;;24775:49;24737:102;;24625:32;24647:10;;;;24625:32;;962:27112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23670:44;23687:15;;;:27;;23670:44;;;962:27112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;2989:103:31;;:::i;:::-;6991:13:54;;:44;;;;;962:27112;;;;;7085:7;962:27112;7117:12;;;962:27112;;7175:12;1890:4:51;7205:10:54;;962:27112;;7456:56;962:27112;;;;;;:::i;:::-;7456:56;;;:::i;:::-;7617:10;962:27112;7629:5;;;;;;7948:15;;;;;:::i;:::-;962:27112;7990:5;;;;;;8305:19;962:27112;8339:10;962:27112;8351:5;;;;;;8334:186;8530:130;;;9070:59;962:27112;8530:130;9070:59;8530:130;962:27112;8530:130;;;;;8557:12;;;:::i;:::-;962:27112;;;8763:10;;:19;8759:264;;8530:130;9045:8;;;;;:::i;:::-;962:27112;;;;;;;9070:59;;;:::i;:::-;;;;962:27112;1505:66:31;2407:1;962:27112:54;;;;;;;;;;;;;:::i;8759:264::-;962:27112;;8816:11;962:27112;;;;;8763:10;;962:27112;-1:-1:-1;962:27112:54;;;8993:18;;962:27112;;-1:-1:-1;962:27112:54;1890:4:51;8993:18:54;:::i;:::-;8763:10;8993:18;;:::i;:::-;8759:264;;;8530:130;8636:12;;;:::i;:::-;8530:130;;8339:10;8378:15;;;;:::i;:::-;962:27112;7492:19;962:27112;8374:105;;962:27112;;8339:10;;8374:105;-1:-1:-1;962:27112:54;;-1:-1:-1;9070:59:54;;-1:-1:-1;962:27112:54;8459:5;;7978:10;8030:22;5432:32:51;8030:43:54;:22;962:27112;8030:22;;;;;:::i;:::-;962:27112;;;7175:12;962:27112;;8055:18;;;;:::i;:::-;962:27112;8030:43;;:::i;5432:32:51:-;8132:57:54;;;;:::i;:::-;962:27112;7492:19;962:27112;1890:4:51;;962:27112:54;7978:10;;;;;7617;7656:18;;962:27112;7656:18;;;;;:::i;:::-;962:27112;7652:123;;7617:10;962:27112;7617:10;;;;;7652:123;7753:6;7711:10;962:27112;7711:10;;;:::i;:::-;962:27112;;;7175:12;962:27112;;;7733:18;;;;;:::i;:::-;962:27112;7753:6;;:::i;:::-;7652:123;;962:27112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6991:44;7008:15;;;:27;;6991:44;;;962:27112;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;3684:27:51;962:27112:54;3693:7:51;962:27112:54;;3692:8:51;3684:27;:::i;:::-;2989:103:31;;:::i;:::-;16511:7:54;962:27112;16543:19;;;;962:27112;;;16598:15;;962:27112;;16656:13;;:44;;;;;962:27112;;;;;16741:15;962:27112;16741:26;962:27112;;5432:32:51;16945:36:54;;;;:::i;:::-;17106:23;;;;;:::i;5432:32:51:-;962:27112:54;;;;;17148:28;962:27112;;;13750:46:42;17589:66:54;962:27112;;16741:5;962:27112;;;;;:::i;:::-;13750:46:42;;:::i;:::-;17631:23:54;;;;;:::i;:::-;962:27112;;;;;;17589:66;;:::i;:::-;17673:16;;;962:27112;;17843:34;;;;:::i;:::-;17898:20;;;;;:::i;:::-;17936:12;;;;:39;;;;962:27112;;;;;18168:8;18142:24;962:27112;18142:24;;;:::i;:::-;962:27112;;;;;;;18168:8;;:::i;:::-;962:27112;18297:18;;;;:31;;;962:27112;18293:225;;962:27112;18660:21;18619:63;18660:21;;;;:::i;:::-;18619:63;:36;;;:::i;:::-;962:27112;;;;;;;;;18619:63;:::i;:::-;18785:35;962:27112;;:::i;18785:35::-;18850:38;18917:34;18850:38;;;:::i;:::-;18917:34;;;:::i;:::-;18981:38;;;;:::i;:::-;962:27112;1890:4:51;;;19158:18:54;;;19284:20;;19154:479;;19651:12;;1890:4:51;;19825:15:54;;;:::i;:::-;19855;962:27112;19872:7;;;;;;20175:12;;;;;20318:125;962:27112;20355:24;20175:12;;;20318:125;20175:12;;:::i;:::-;20293:8;;;;:::i;:::-;20355:24;:::i;:::-;962:27112;;;;;;;20413:17;;;;;:::i;:::-;962:27112;;;;;;;;;;20318:125;;1890:4:51;;;;;;;;;962:27112:54;;;1890:4:51;;;962:27112:54;1890:4:51;;;962:27112:54;1890:4:51;962:27112:54;1890:4:51;20318:125:54;;;;962:27112;1505:66:31;2407:1;3553:21:51;3587:7;;;;3584:57;;19850:205:54;962:27112;;;;;;;;;;;;;;;;;;;;;;;;;;;;3584:57:51;962:27112:54;3608:33:51;;;;;;;;;3584:57;3616:10;3608:33;;;;;3584:57;;;;3608:33;;;;;19881:5:54;19996:20;:48;:20;:34;:20;;962:27112;19996:20;;:::i;:::-;1890:4:51;;;962:27112:54;1890:4:51;962:27112:54;;;19996:34;:::i;:::-;:48;:::i;:::-;19976:68;;;;:::i;:::-;962:27112;;;1890:4:51;;962:27112:54;19855:15;;1890:4:51;962:27112:54;;;1890:4:51;;;962:27112:54;;1890:4:51;;;;962:27112:54;1890:4:51;;962:27112:54;1890:4:51;962:27112:54;;;1890:4:51;;19154:479:54;19351:53;;;19352:21;;;;;;19378;;;:::i;:::-;19351:53;;19422:9;;;;19522:35;19523:21;;;;:::i;19522:35::-;19418:205;19154:479;;19418:205;19596:12;;;962:27112;19418:205;19154:479;;19351:53;;;962:27112;19351:53;;;18293:225;18384:9;18358:22;;;;;;;:::i;:::-;962:27112;18411:14;;18407:101;;18293:225;;;;18407:101;18445:48;:34;;;:::i;:::-;:48;962:27112;;;;;;;18445:48;:::i;:::-;18407:101;;18297:31;18319:9;;;;18297:31;;962:27112;;;;;;;;;;;;;;;;;;;;;;;17936:39;17952:23;;;;;17936:39;;;962:27112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16656:44;16673:15;;;:27;;16656:44;;;962:27112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;962:27112:54;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;10784:796;;962:27112;;11036:24;;;;:::i;:::-;11140:16;;;:34;;;;10784:796;11136:124;;11155:1;11369:13;;;;;;11551:22;;;;;10784:796;:::o;11384:3::-;11428:21;11484:46;11428:21;11485:30;11428:21;962:27112;11428:21;;;:::i;:::-;962:27112;11485:30;;:::i;11484:46::-;11463:67;;;;:::i;:::-;962:27112;;11357:10;;11136:124;11190:22;;;;;:::o;11140:34::-;11160:14;;;11140:34;;962:27112;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;17106:6;962:27112;;;;;;17106:6;-1:-1:-1;962:27112:54;;-1:-1:-1;962:27112:54;;;-1:-1:-1;962:27112:54;:::o;:::-;16511:7;962:27112;;;;;;16511:7;-1:-1:-1;962:27112:54;;-1:-1:-1;962:27112:54;;;-1:-1:-1;962:27112:54;:::o;:::-;18445:17;962:27112;;;;;;18445:17;-1:-1:-1;962:27112:54;;-1:-1:-1;962:27112:54;;;-1:-1:-1;962:27112:54;:::o;:::-;;;;;;;;;-1:-1:-1;962:27112:54;;-1:-1:-1;962:27112:54;;;-1:-1:-1;962:27112:54;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;13778:11:42;962:27112:54;;;;;;;;13778:11:42;-1:-1:-1;962:27112:54;;-1:-1:-1;962:27112:54;;-1:-1:-1;962:27112:54;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1890:4:51;;16741:15:54;962:27112;1890:4:51;;;;;16741:15:54;-1:-1:-1;962:27112:54;1890:4:51;;;;962:27112:54;1890:4:51;;;;;;;:::o;962:27112:54:-;;;;7492:19;962:27112;;;;;;;;7492:19;-1:-1:-1;962:27112:54;;-1:-1:-1;962:27112:54;;-1:-1:-1;962:27112:54;;;;;;;;;;;;;;:::i;:::-;1890:4:51;;962:27112:54;;;;;;;;;-1:-1:-1;962:27112:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;9688:1090;962:27112;;9938:24;;;;:::i;:::-;10122:16;;;:34;;;;9688:1090;10118:139;;10137:1;10488:13;;;;;;10750:21;;;;;9688:1090;:::o;10503:3::-;10666:44;10547:21;10666:30;10547:21;;;;:::i;:::-;962:27112;10666:30;;:::i;:::-;:44;:::i;:::-;962:27112;;;;;;;;;10665:64;;10713:1;10665:64;;:::i;:::-;10645:84;;;;:::i;:::-;962:27112;;10476:10;;10122:34;10142:14;;;10122:34;;3749:292:31;2407:1;1505:66;1890:4:51;4560:63:31;3644:93;;2407:1;1505:66;2407:1;3749:292::o;3644:93::-;3696:30;-1:-1:-1;3696:30:31;;-1:-1:-1;3696:30:31;903:262:53;;;1026:11;;1022:59;;1100:23;1143:15;1100:23;;;:::i;:::-;1143:15;;;:::i;1022:59::-;1053:17;1036:1;1053:17;;:::o;5893:600:51:-;6232:36;6059:40;;;;:::i;:::-;6232:36;;;:::i;:::-;962:27112:54;;;;;;6381:30:51;6377:82;;5893:600;:::o;6377:82::-;6447:1;962:27112:54;;;;;;;6427:21:51;:::o;403:228:53:-;;494:11;;490:25;;585:10;;;:::i;:::-;598:9;962:27112:54;;;;;;;;;;;;;;;598:9:53;962:27112:54;;403:228:53;:::o;490:25::-;507:8;;962:27112:54;507:8:53;:::o;6928:278:51:-;;962:27112:54;7032:13:51;962:27112:54;;;;;7023:22:51;;;;:45;;;6928:278;7019:180;;;7083:37;;;;;;;;;962:27112:54;7083:37:51;962:27112:54;;7083:37:51;;;;962:27112:54;7083:37:51;;;;;;;;;;7019:180;6928:278::o;7083:37::-;;;;;:::i;7019:180::-;1767:47:26;;;;;962:27112:54;10404:1148:26;;;10365:28;-1:-1:-1;10404:1148:26;;;;7185:4:51;10404:1148:26;;;;;-1:-1:-1;10404:1148:26;;;;;;;1809:4;-1:-1:-1;10404:1148:26;;;;;;;7019:180:51;10404:1148:26;;;;-1:-1:-1;10404:1148:26;;1766:48;1762:126;;7019:180:51;6928:278::o;1762:126:26:-;1837:40;-1:-1:-1;1837:40:26;10404:1148;962:27112:54;10404:1148:26;-1:-1:-1;1837:40:26;10404:1148;1809:4;10404:1148;;;;;;;;;;;;;;;;;;-1:-1:-1;10404:1148:26;;;;;7023:45:51;7049:9;;;:19;;7023:45;;1352:286:53;1470:1;;;1487:10;962:27112:54;;1499:20:53;;;;;1545:23;962:27112:54;1555:12:53;;;;;:::i;1545:23::-;962:27112:54;;1487:10:53;;;1499:20;;;;1352:286;:::o;6267:513:0:-;962:27112:54;;-1:-1:-1;6397:6:0;;962:27112:54;;1890:4:51;962:27112:54;6495:2:0;962:27112:54;6267:513:0;:::o;:::-;6363:6;;6359:20;;962:27112:54;;;6397:6:0;;962:27112:54;;6455:34:0;6451:38;;962:27112:54;;6495:2:0;962:27112:54;;6547:3:0;962:27112:54;;6575:50:0;6569:56;;962:27112:54;;6495:2:0;962:27112:54;;;6661:85:0;;962:27112:54;;;6267:513:0;:::o;3517:219::-;962:27112:54;;;;805:35:0;3652:19;;;;:42;;3517:219;962:27112:54;;;;;3517:219:0;:::o;3652:42::-;3675:19;958:34;3675:19;;;3652:42;;3517:219;;962:27112:54;;;;;;805:35:0;3652:19;;;:42;;;962:27112:54;;;;;3517:219:0;:::o;4395:225::-;;962:27112:54;;;;;;4517:2:0;962:27112:54;805:35:0;4536:19;;;:42;;;962:27112:54;;;;;4395:225:0;:::o;7038:252::-;962:27112:54;;7136:6:0;;962:27112:54;;;;805:35:0;7206:19;;;:42;;;962:27112:54;;;;;7038:252:0;:::o;:::-;;962:27112:54;;7136:6:0;;;962:27112:54;;7182:2:0;962:27112:54;;;;805:35:0;7206:19;;;:42;;;962:27112:54;;;;;7038:252:0;:::o;29217:488:42:-;29451:1;29382:32;;;:::i;:::-;962:27112:54;;29433:20:42;962:27112:54;;;;;29625:11:42;;29451:1;29602:5;;;;;;29217:488;;;;:::o;29590:10::-;29642:15;;;;:::i;:::-;962:27112:54;;;29625:14:42;962:27112:54;;1890:4:51;;;;;29625:11:42;962:27112:54;;-1:-1:-1;962:27112:54;;;-1:-1:-1;962:27112:54;1890:4:51;;;;;;;;;;962:27112:54;;;;;;;;;;;;;;;;;;;;;;;29590:10:42;;962:27112:54;;;;;;;;;;;;;;;;;;;;;;;3184:208:36;962:27112:54;;3254:21:36;;;3250:91;;2801:32;962:27112:54;1890:4:51;1951:21:36;3273:1;1890:4:51;1951:21:36;1890:4:51;1951:21:36;:::i;:::-;;2407:1:31;962:27112:54;;;1815:18:36;962:27112:54;;;;;1890:4:51;;;962:27112:54;2407:1:31;;962:27112:54;;;;;2801:32:36;3184:208::o;3250:91::-;3298:32;3273:1;3298:32;3273:1;3298:32;962:27112:54;;3273:1:36;3298:32;7509:374:51;;;;7615:32;;;7509:374;7611:265;;;7664:13;962:27112:54;7664:13:51;962:27112:54;7664:30:51;;;;;;962:27112:54;;;7664:30:51;;-1:-1:-1;7664:30:51;;;;;;;;;;962:27112:54;7664:30:51;;;;;;;;7611:265;7722:32;;;;;;;;;;962:27112:54;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;7509:374:51:o;962:27112:54:-;;;;;;;;7664:30:51;962:27112:54;;;;7664:30:51;962:27112:54;;;;;;;;;;;;7664:30:51;962:27112:54;;;7664:30:51;962:27112:54;;;;;;7664:30:51;;;;;-1:-1:-1;7664:30:51;;:::i;:::-;-1:-1:-1;7664:30:51;;;;7611:265;1306:37:26;8544:1067;;;;8509:24;-1:-1:-1;8544:1067:26;;;;;;;-1:-1:-1;8544:1067:26;;;;;;;1338:4;-1:-1:-1;8544:1067:26;;;;;;;7611:265:51;8544:1067:26;;1305:38;1301:116;;7611:265:51;7509:374::o;1301:116:26:-;8544:1067;1366:40;;-1:-1:-1;1366:40:26;962:27112:54;8544:1067:26;962:27112:54;8544:1067:26;-1:-1:-1;1366:40:26;8544:1067;;1338:4;8544:1067;;;;;;;;;;;;;;;;;;;-1:-1:-1;8544:1067:26;;;;;7615:32:51;7634:13;962:27112:54;7634:13:51;962:27112:54;;;;7625:22:51;7615:32;;38670:244:42;962:27112:54;8557:5;962:27112;;8557:5;962:27112;38820:11:42;962:27112:54;-1:-1:-1;38820:11:42;962:27112:54;;;;38670:244:42;:::o;962:27112:54:-;38820:11:42;-1:-1:-1;962:27112:54;;;-1:-1:-1;962:27112:54;;;;;;;;;;;;;;;38670:244:42;:::o;962:27112:54:-;-1:-1:-1;962:27112:54;;;;;;4454:128:36;962:27112:54;;5541:19:36;;;5537:89;;962:27112:54;;5639:21:36;;;5635:90;;962:27112:54;5813:38:36;962:27112:54;;5558:1:36;962:27112:54;5734:11:36;962:27112:54;;;5558:1:36;962:27112:54;;-1:-1:-1;962:27112:54;;;;;-1:-1:-1;962:27112:54;2407:1:31;962:27112:54;;;;;5813:38:36;4454:128::o;5635:90::-;5683:31;5558:1;5683:31;5558:1;5683:31;962:27112:54;;5558:1:36;5683:31;5537:89;5583:32;5558:1;5583:32;5558:1;5583:32;962:27112:54;;5558:1:36;5583:32;3711:206;;;;962:27112:54;;3781:21:36;;3777:89;;962:27112:54;3800:1:36;962:27112:54;2025:9:36;962:27112:54;;;3800:1:36;962:27112:54;1890:4:51;2058:19:36;;;2054:115;;962:27112:54;;3800:1:36;962:27112:54;;2801:32:36;962:27112:54;;;;2025:9:36;962:27112:54;;;;;;2407:1:31;1890:4:51;2528:21:36;1890:4:51;962:27112:54;2528:21:36;2407:1:31;962:27112:54;;;;;2801:32:36;3711:206::o;2054:115::-;2104:50;;;3800:1;2104:50;;962:27112:54;;;;;;3800:1:36;2104:50;3777:89;3825:30;3800:1;3825:30;3800:1;3825:30;962:27112:54;;3800:1:36;3825:30;8689:233:0;8790:6;;962:27112:54;;23319:50:0;23314:55;;23319:50;;962:27112:54;23388:13:0;962:27112:54;23394:2:0;962:27112:54;23388:13:0;:::i;:::-;24377:34;24367:44;;962:27112:54;;24377:34:0;962:27112:54;958:34:0;8851:29;;962:27112:54;;;;8689:233:0;:::o;23310:1040::-;23438:3;962:27112:54;;;;;23486:17:0;23492:11;23486:17;;;23482:48;;23310:1040;23746:3;23543:13;23549:7;23811:45;23543:13;;;23539:44;;23310:1040;23602:5;23596:11;;;23592:40;;23310:1040;23651:4;23645:10;;;23641:39;;23310:1040;23699:3;23693:9;;;23689:38;;23310:1040;23740:9;;23736:23;;23310:1040;962:27112:54;23836:1:0;962:27112:54;;;;;;;;;;;;23811:45:0;:::i;:::-;23875:44;23885:34;23875:44;;962:27112:54;;;23959:3:0;962:27112:54;;;23996:38:0;23885:34;23996:38;;962:27112:54;;24046:21:0;;962:27112:54;24095:2:0;962:27112:54;24112:7:0;;;;24108:20;;23310:1040;962:27112:54;;;;23959:3:0;962:27112:54;24221:7:0;;;;24217:20;;23310:1040;23959:3;962:27112:54;24313:15:0;962:27112:54;;24331:6:0;962:27112:54;;24331:6:0;:::i;:::-;24313:28;;962:27112:54;23310:1040:0;;24313:28;;;;23836:1;24313:28;;;24217:20;962:27112:54;;;24217:20:0;;;24108;962:27112:54;;;-1:-1:-1;24108:20:0;;;23736:23;23758:1;962:27112:54;23736:23:0;;23689:38;962:27112:54;;;;;;23689:38:0;;23641:39;23666:1;962:27112:54;;;;;23641:39:0;;23592:40;23618:1;962:27112:54;;;;;23592:40:0;;23539:44;23567:2;962:27112:54;;;;;23539:44:0;;23482:48;-1:-1:-1;;962:27112:54;;;;;23482:48:0;;962:27112:54;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;14654:6887:42;;;;;;962:27112:54;;14896:5:42;;;;962:27112:54;;;14944:1:42;962:27112:54;;;14933:13:42;962:27112:54;;;14999:29:42;;;:::i;:::-;962:27112:54;15116:21:42;962:27112:54;14944:1:42;962:27112:54;;;15046:22:42;15038:57;;;;:::i;:::-;15116:21;:::i;:::-;962:27112:54;15147:36:42;14944:1;962:27112:54;;;15155:13:42;15147:36;:::i;:::-;15207:25;;;:::i;:::-;15391:15;;;;:::i;:::-;15421:13;14944:1;15436:5;;;;;;-1:-1:-1;962:27112:54;;-1:-1:-1;;15967:305:42;;;16007:23;;;;:::i;:::-;962:27112:54;41100:19:42;962:27112:54;;;16076:10:42;16072:75;;15967:305;-1:-1:-1;16491:9:42;23394:2:0;16491:9:42;;;;16471:1543;18060:23;-1:-1:-1;18098:13:42;-1:-1:-1;18093:1754:42;18113:9;23394:2:0;18113:9:42;;;;18093:1754;19975:28;;;;;-1:-1:-1;20013:22:42;-1:-1:-1;20050:13:42;-1:-1:-1;20065:5:42;;;;;;20045:815;20870:140;;;;;;;21054:12;21039:28;21054:12;21039:43;21054:12;21262:17;21054:12;;;:::i;:::-;962:27112:54;;;21039:28:42;;:::i;:::-;:43;:::i;:::-;21262:17;;:::i;:::-;962:27112:54;-1:-1:-1;962:27112:54;;;21395:22:42;;;:47;;;20045:815;21391:105;;21506:28;14654:6887;:::o;21391:105::-;23394:2:0;962:27112:54;21458:27:42;;;41225:20;21458:27;;;41225:20;;;;;962:27112:54;41225:20:42;962:27112:54;;;41225:20:42;;;21458:27;21395:47;962:27112:54;-1:-1:-1;962:27112:54;;;21421:21:42;;21395:47;;20870:140;20970:29;;;;;;-1:-1:-1;20970:29:42;-1:-1:-1;20970:29:42;:::o;20050:13::-;20092:6;;;20088:731;;20050:13;962:27112:54;;20050:13:42;;20088:731;20130:28;20145:12;;;;:::i;:::-;962:27112:54;;;20130:28:42;;:::i;:::-;-1:-1:-1;962:27112:54;;;20180:14:42;20176:629;;20088:731;;;;20176:629;20234:12;;;;;;;:::i;:::-;41225:20;962:27112:54;;;20272:18:42;20268:52;;41316:20;20399:21;41316:20;;:::i;:::-;20399:14;:5;;;;:::i;:::-;962:27112:54;;;20399:14:42;:::i;:::-;:21;:::i;:::-;-1:-1:-1;962:27112:54;;;20446:16:42;;20442:50;;20528:14;:5;;;;;:::i;:::-;962:27112:54;;;20528:14:42;:::i;:::-;-1:-1:-1;962:27112:54;;;20568:18:42;;20564:52;;41408:19;20649:17;41408:19;;:::i;:::-;20649:17;;:::i;:::-;962:27112:54;-1:-1:-1;962:27112:54;;;20692:14:42;20688:48;;962:27112:54;20769:17:42;;;;:::i;:::-;20176:629;;;;20688:48;20710:16;;;;;;;;962:27112:54;20728:5:42;;;;;;;20564:52;20590:16;;;;;;;;962:27112:54;20608:5:42;;;;;;;18098:13;962:27112:54;18171:13:42;;;;:::i;:::-;23394:2:0;962:27112:54;;;;805:35:0;7206:19;;;:42;;;18098:13:42;962:27112:54;;;;;18258:23:42;;;;-1:-1:-1;18295:17:42;-1:-1:-1;18332:13:42;-1:-1:-1;18327:848:42;18347:5;;;;;;18327:848;-1:-1:-1;;19203:67:42;;;;;;958:34:0;19203:67:42;962:27112:54;;;;;;19289:8:42;19285:259;14933:13;;;19392:10;19285:259;;19589:13;;;;;:::i;:::-;962:27112:54;;19589:20:42;;19585:98;;19749:2;19741:10;;19737:65;;19285:259;962:27112:54;;18098:13:42;;;19737:65;19771:16;;-1:-1:-1;19771:16:42;;19737:65;;19585:98;19629:16;;;;;;;19663:5;;;;;;;;19285:259;19520:9;;;19285:259;;;19203:67;19247:12;19237:23;19247:12;19237:33;19247:12;;:::i;:::-;962:27112:54;;;19237:23:42;;:::i;:33::-;19203:67;;18332:13;18378:6;;;;;;;;18374:752;;18332:13;962:27112:54;;;;18332:13:42;;;;;;;;;18374:752;18430:12;18420:23;18430:12;;;;:::i;:::-;962:27112:54;;;18420:23:42;;:::i;:::-;-1:-1:-1;962:27112:54;;;18469:14:42;18465:643;;18374:752;;;;;18465:643;18527:12;;;;;;;:::i;:::-;41225:20;962:27112:54;;;18569:18:42;18565:47;;41316:20;18699:21;41316:20;;:::i;:::-;18699:14;:5;;;;:::i;:21::-;962:27112:54;-1:-1:-1;962:27112:54;;;18750:16:42;;18746:45;;18831:5;;;;:14;:5;;:::i;:14::-;962:27112:54;-1:-1:-1;962:27112:54;;;18875:18:42;;18871:47;;41408:19;;18955:17;41408:19;;:::i;:::-;18955:17;;:::i;:::-;962:27112:54;;-1:-1:-1;962:27112:54;;;19002:14:42;18998:43;;19073:12;962:27112:54;19073:12:42;;;;:::i;:::-;18465:643;;;;;;;;;18998:43;19020:11;;;;;;962:27112:54;19033:5:42;;;;18871:47;18897:11;;;;;;962:27112:54;18910:5:42;;;;18746:45;18770:11;;;;;;;962:27112:54;18783:5:42;;;;18565:47;18591:11;;;;;;;962:27112:54;18604:5:42;;;;7206:42:0;7229:19;958:34;7229:19;;;7206:42;;16476:13:42;16600:23;-1:-1:-1;;;16716:5:42;;;;;;16696:953;-1:-1:-1;17677:67:42;;;;958:34:0;17677:67:42;962:27112:54;;;;;;17763:9:42;;;:29;;;17677:67;17759:73;;962:27112:54;;;;23394:2:0;962:27112:54;805:35:0;4536:19;;;:42;;;17677:67:42;962:27112:54;;;;;17873:42:42;962:27112:54;17873:42:42;17933:15;17929:41;;17677:67;962:27112:54;;16476:13:42;;17929:41;962:27112:54;;-1:-1:-1;17929:41:42;;4536:42:0;4559:19;958:34;4559:19;;;4536:42;;17759:73:42;17812:5;;;17763:29;962:27112:54;;;;;17776:16:42;;17763:29;;17677:67;17711:33;17721:12;17711:23;17721:12;;;;:::i;:::-;962:27112:54;;;17711:23:42;;:::i;:33::-;17677:67;;16701:13;16747:6;;;;;;;;;;;;;;;;;;16743:857;;16701:13;962:27112:54;;;;16701:13:42;;;;;;;;;;;;;;;;16743:857;16789:23;16799:12;;;;;:::i;:::-;962:27112:54;;;16789:23:42;;:::i;:::-;-1:-1:-1;962:27112:54;;;16873:14:42;16869:713;;16743:857;;;;;16869:713;16931:12;;;;;;;:::i;:::-;41225:20;962:27112:54;;;17014:18:42;17010:47;;41316:20;17159:14;:5;41316:20;;17159:21;41316:20;;:::i;:::-;17159:5;;:::i;:21::-;-1:-1:-1;962:27112:54;;;17224:16:42;;17220:45;;17305:14;:5;;;;;:::i;:14::-;-1:-1:-1;962:27112:54;;;17349:18:42;;17345:47;;41408:19;17429:17;41408:19;;:::i;:::-;17429:17;;:::i;:::-;962:27112:54;-1:-1:-1;962:27112:54;;;17476:14:42;17472:43;;962:27112:54;17547:12:42;;;;:::i;:::-;16869:713;;;;;;;17472:43;17494:11;;;;962:27112:54;17494:11:42;;;;;;;;;;;;;;17507:5;;;17345:47;17371:11;;;;962:27112:54;17371:11:42;;;;;;;;;;;;;;17384:5;;;16072:75;41100:19;;-1:-1:-1;16072:75:42;;15967:305;16226:35;23394:2:0;962:27112:54;16226:35:42;;;41100:19;16226:35;;;41100:19;;;;;962:27112:54;41100:19:42;962:27112:54;;;41100:19:42;16226:35;15421:13;962:27112:54;15472:12:42;41316:20;15472:40;:12;:30;:12;;;;:::i;:::-;962:27112:54;;;15489:12:42;;;;:::i;:::-;962:27112:54;;;15472:30:42;;:::i;:40::-;41316:20;:::i;:::-;15459:54;;;;:::i;:::-;962:27112:54;;;1890:4:51;;962:27112:54;15421:13:42;;962:27112:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26770:658;27289:19;27173:28;27031:32;;;;:::i;:::-;27173:28;;:::i;:::-;27231:31;;;:::i;:::-;27289:19;;:::i;:::-;962:27112;;;;;;27322:20;27318:80;;26770:658;:::o;23564:4510:42:-;;;;962:27112:54;;;23787:1:42;23772:17;;962:27112:54;;;41100:19:42;-1:-1:-1;962:27112:54;;24005:21:42;23888:29;;;:::i;:::-;962:27112:54;;23927:57:42;23787:1;962:27112:54;;;23935:22:42;23927:57;:::i;24005:21::-;962:27112:54;24036:36:42;23787:1;962:27112:54;;;24044:13:42;24036:36;:::i;:::-;24096:25;;;:::i;:::-;24272:12;962:27112:54;;24272:12:42;;;:::i;:::-;24409:15;;;;:::i;:::-;24439:13;23787:1;24454:5;;;;;;24661:12;24651:23;24661:12;;;;:::i;24651:23::-;962:27112:54;23787:1:42;962:27112:54;;;24768:21:42;24885:13;23787:1;24900:5;;;;;;27977:11;;;;;;;;;962:27112:54;;27977:37:42;;24880:3003;27973:95;;23564:4510::o;27977:37::-;962:27112:54;23787:1:42;962:27112:54;;;27992:22:42;;27977:37;;24885:13;24927:6;;;24923:2919;;24885:13;962:27112:54;;24885:13:42;;;;;24923:2919;24965:23;24975:12;;;;:::i;24965:23::-;23787:1;962:27112:54;;;25048:14:42;25044:2784;;24923:2919;;;;25044:2784;25141:12;;;;;;;;;;:::i;:::-;962:27112:54;;;;25273:18:42;41225:20;25273:18;;25269:203;;805:35:0;41316:20:42;25578:34;:9;;;25592;25578;;:24;:9;;;:::i;:::-;962:27112:54;;;25592:9:42;;:::i;41316:20::-;9170:14:0;;962:27112:54;;25853:15:42;41316:20;25844:25;962:27112:54;23787:1:42;962:27112:54;;;41316:20:42;:::i;:::-;25853:15;:::i;:::-;25844:25;;:::i;:::-;962:27112:54;;41100:19:42;962:27112:54;805:35:0;3652:19;;;:42;;;25044:2784:42;962:27112:54;;;;;23787:1:42;25897:18;;;25893:194;;41408:19;26120:17;41408:19;;:::i;26120:17::-;26275:9;;;;;;;;:::i;:::-;962:27112:54;;;;;;26271:13:42;26267:1188;;27653:17;:9;;27754:16;27653:9;;;;;;;;;;;:::i;:::-;962:27112:54;;;27653:17:42;:::i;:::-;27641:29;;;;:::i;:::-;962:27112:54;;;1890:4:51;;27704:16:42;:9;;;;;:::i;:::-;962:27112:54;;;27704:16:42;:::i;:::-;27692:28;;;;:::i;:::-;962:27112:54;;;1890:4:51;;27754:16:42;:::i;:::-;27792:17;962:27112:54;;;25044:2784:42;;26267:1188;26553:20;26494:9;;;41316:20;26494:9;;;:19;:9;;;;;:::i;:::-;962:27112:54;;;26494:19:42;:::i;41316:20::-;26553:13;;;:::i;:20::-;962:27112:54;23787:1:42;962:27112:54;;;26618:16:42;;26614:207;;26940:13;26930:25;41408:19;26940:13;27241:24;26940:13;;27096:27;26940:13;;:::i;:::-;41408:19;:::i;:::-;26930:25;;:::i;:::-;27096:9;;;;:::i;:27::-;27084:39;;;;:::i;:::-;962:27112:54;;;1890:4:51;;27255:9:42;;;;:::i;27241:24::-;27291:21;23787:1;27291:21;;;;:::i;:::-;1890:4:51;962:27112:54;;;;27424:8:42;;;26614:207;962:27112:54;;;;;;;;;;26786:8:42;;;25893:194;962:27112:54;;;;;;;;;;;26056:8:42;;;3652:42:0;3675:19;958:34;3675:19;;;3652:42;;24439:13:42;24489:12;:32;:12;962:27112:54;24489:12:42;;;:::i;:::-;962:27112:54;;;24506:14:42;;;:::i;:::-;24489:32;;:::i;:::-;24477:44;;;;:::i;:::-;962:27112:54;;;1890:4:51;;962:27112:54;24439:13:42;;962:27112:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3949:219:0;962:27112:54;;;;805:35:0;4084:19;;;:42;;;962:27112:54;;;;;3949:219:0;:::o;:::-;;962:27112:54;;;;;;805:35:0;4084:19;;;:42;;;962:27112:54;;;;;3949:219:0;:::o;1958:169::-;2057:18;2052:23;;962:27112:54;;2112:2:0;962:27112:54;;;1958:169:0;:::o;22569:296::-;962:27112:54;;22661:20:0;22657:24;;962:27112:54;;;22711:21:0;22707:25;;22703:39;;22810:35;22771:83;962:27112:54;;22849:3:0;962:27112:54;;;22771:83:0;:::i;22703:39::-;22734:8;962:27112:54;22734:8:0;:::o;15150:221::-;962:27112:54;;15241:1:0;15237:5;;962:27112:54;;;15241:1:0;14261:13;;14292:19;14286:25;;;14282:56;;15150:221;14349:17;14355:11;14599:3;14349:17;;;14345:48;;15150:221;14410:7;14404:13;;;14400:44;;15150:221;14461:5;14455:11;;;14451:40;;15150:221;14508:4;14502:10;;;14498:39;;15150:221;14554:3;14548:9;;;14544:38;;15150:221;14593:9;;14589:23;;15150:221;962:27112:54;;;14675:2:0;962:27112:54;;14737:3:0;962:27112:54;;14760:31:0;14773:18;14755:176;14793:7;15241:1;14793:7;;;;962:27112:54;15317:34:0;962:27112:54;;;;;15355:3:0;962:27112:54;15150:221:0;:::o;14802:9::-;962:27112:54;;;;;;;;14737:3:0;962:27112:54;;;;;;14802:9:0;14810:1;962:27112:54;14760:31:0;;;;14589:23;962:27112:54;14611:1:0;962:27112:54;14589:23:0;;;14544:38;962:27112:54;;;;;;14544:38:0;;14498:39;14523:1;962:27112:54;;;;;14498:39:0;;14451:40;14477:1;962:27112:54;;;;;14451:40:0;;14400:44;14428:2;962:27112:54;;;;;14400:44:0;;14345:48;14377:2;962:27112:54;;;;;14345:48:0;;14282:56;-1:-1:-1;14322:2:0;;-1:-1:-1;962:27112:54;;;14282:56:0;;15549:6841;962:27112:54;;;15643:20:0;15639:24;;962:27112:54;;;15693:21:0;15689:25;;15685:39;;15763:34;15810:22;962:27112:54;15814:18:0;15810:22;;962:27112:54;;15810:26:0;15806:100;;15549:6841;962:27112:54;15922:18:0;15918:22;;962:27112:54;;15918:26:0;15914:100;;15549:6841;962:27112:54;16030:18:0;16026:22;;962:27112:54;;16026:26:0;16022:100;;15549:6841;962:27112:54;16138:18:0;16134:22;;962:27112:54;;16134:26:0;16130:100;;15549:6841;962:27112:54;16246:17:0;16242:21;;962:27112:54;;16242:25:0;16238:99;;15549:6841;962:27112:54;16353:17:0;16349:21;;962:27112:54;;16349:25:0;16345:99;;15549:6841;962:27112:54;16460:17:0;16456:21;;962:27112:54;;16456:25:0;16452:99;;15549:6841;962:27112:54;16567:17:0;16563:21;;962:27112:54;;16563:25:0;16559:99;;15549:6841;962:27112:54;16674:16:0;16670:20;;962:27112:54;;16670:24:0;16666:98;;15549:6841;962:27112:54;16780:16:0;16776:20;;962:27112:54;;16776:24:0;16772:98;;15549:6841;962:27112:54;16886:16:0;16882:20;;962:27112:54;;16882:24:0;16878:98;;15549:6841;962:27112:54;16992:16:0;16988:20;;962:27112:54;;16988:24:0;16984:98;;15549:6841;962:27112:54;17098:15:0;17094:19;;962:27112:54;;17094:23:0;17090:97;;15549:6841;962:27112:54;17203:15:0;17199:19;;962:27112:54;;17199:23:0;17195:97;;15549:6841;962:27112:54;17308:15:0;17304:19;;962:27112:54;;17304:23:0;17300:97;;15549:6841;962:27112:54;17413:15:0;17409:19;;962:27112:54;;17409:23:0;17405:97;;15549:6841;962:27112:54;17518:14:0;17514:18;;962:27112:54;;17514:22:0;17510:96;;15549:6841;962:27112:54;17622:14:0;17618:18;;962:27112:54;;17618:22:0;17614:96;;15549:6841;962:27112:54;17726:14:0;17722:18;;962:27112:54;;17722:22:0;17718:96;;15549:6841;962:27112:54;17830:14:0;17826:18;;962:27112:54;;17826:22:0;17822:96;;15549:6841;962:27112:54;17934:13:0;17930:17;;962:27112:54;;17930:21:0;17926:95;;15549:6841;962:27112:54;18037:13:0;18033:17;;962:27112:54;;18033:21:0;18029:95;;15549:6841;962:27112:54;18140:13:0;18136:17;;962:27112:54;;18136:21:0;18132:95;;15549:6841;962:27112:54;18243:13:0;18239:17;;962:27112:54;;18239:21:0;18235:95;;15549:6841;962:27112:54;18346:12:0;18342:16;;962:27112:54;;18342:20:0;18338:94;;15549:6841;962:27112:54;18448:12:0;18444:16;;962:27112:54;;18444:20:0;18440:94;;15549:6841;962:27112:54;18550:12:0;18546:16;;962:27112:54;;18546:20:0;18542:94;;15549:6841;962:27112:54;18652:12:0;18648:16;;962:27112:54;;18648:20:0;18644:94;;15549:6841;962:27112:54;18754:11:0;18750:15;;962:27112:54;;18750:19:0;18746:93;;15549:6841;962:27112:54;18855:11:0;18851:15;;962:27112:54;;18851:19:0;18847:93;;15549:6841;962:27112:54;18956:11:0;18952:15;;962:27112:54;;18952:19:0;18948:93;;15549:6841;962:27112:54;19057:11:0;19053:15;;962:27112:54;;19053:19:0;19049:93;;15549:6841;962:27112:54;19158:10:0;19154:14;;962:27112:54;;19154:18:0;19150:92;;15549:6841;962:27112:54;19258:10:0;19254:14;;962:27112:54;;19254:18:0;19250:92;;15549:6841;962:27112:54;19358:10:0;19354:14;;962:27112:54;;19354:18:0;19350:92;;15549:6841;962:27112:54;19458:10:0;19454:14;;962:27112:54;;19454:18:0;19450:92;;15549:6841;962:27112:54;19558:9:0;19554:13;;962:27112:54;;19554:17:0;19550:91;;15549:6841;962:27112:54;19657:9:0;19653:13;;962:27112:54;;19653:17:0;19649:91;;15549:6841;962:27112:54;19756:9:0;19752:13;;962:27112:54;;19752:17:0;19748:91;;15549:6841;962:27112:54;19855:9:0;19851:13;;962:27112:54;;19851:17:0;19847:91;;15549:6841;962:27112:54;19954:8:0;19950:12;;962:27112:54;;19950:16:0;19946:90;;15549:6841;962:27112:54;20052:8:0;20048:12;;962:27112:54;;20048:16:0;20044:90;;15549:6841;962:27112:54;20150:8:0;20146:12;;962:27112:54;;20146:16:0;20142:90;;15549:6841;962:27112:54;20248:8:0;20244:12;;962:27112:54;;20244:16:0;20240:90;;15549:6841;962:27112:54;20346:7:0;20342:11;;962:27112:54;;20342:15:0;20338:89;;15549:6841;962:27112:54;20443:7:0;20439:11;;962:27112:54;;20439:15:0;20435:89;;15549:6841;962:27112:54;20540:7:0;20536:11;;962:27112:54;;20536:15:0;20532:89;;15549:6841;962:27112:54;20637:7:0;20633:11;;962:27112:54;;20633:15:0;20629:89;;15549:6841;962:27112:54;20734:6:0;20730:10;;962:27112:54;;20730:14:0;20726:88;;15549:6841;962:27112:54;20830:6:0;20826:10;;962:27112:54;;20826:14:0;20822:88;;15549:6841;962:27112:54;20926:6:0;20922:10;;962:27112:54;;20922:14:0;20918:88;;15549:6841;962:27112:54;21022:6:0;21018:10;;962:27112:54;;21018:14:0;21014:88;;15549:6841;962:27112:54;21118:5:0;21114:9;;962:27112:54;;21114:13:0;21110:87;;15549:6841;962:27112:54;21213:5:0;21209:9;;962:27112:54;;21209:13:0;21205:87;;15549:6841;962:27112:54;21308:5:0;21304:9;;962:27112:54;;21304:13:0;21300:87;;15549:6841;962:27112:54;21403:5:0;21399:9;;962:27112:54;;21399:13:0;21395:87;;15549:6841;962:27112:54;21498:4:0;21494:8;;962:27112:54;;21494:12:0;21490:86;;15549:6841;962:27112:54;21592:4:0;21588:8;;962:27112:54;;21588:12:0;21584:86;;15549:6841;962:27112:54;21686:4:0;21682:8;;962:27112:54;;21682:12:0;21678:86;;15549:6841;962:27112:54;21780:4:0;21776:8;;962:27112:54;;21776:12:0;21772:86;;15549:6841;962:27112:54;21874:3:0;21870:7;;962:27112:54;;21870:11:0;21866:85;;15549:6841;962:27112:54;21967:3:0;21963:7;;962:27112:54;;21963:11:0;21959:85;;15549:6841;962:27112:54;22060:3:0;22056:7;;962:27112:54;;22056:11:0;22052:85;;15549:6841;22153:3;962:27112:54;22149:7:0;;962:27112:54;;22149:11:0;22145:85;;15549:6841;21592:4;962:27112:54;;;22267:2:0;962:27112:54;;;;958:34:0;22300:38;;962:27112:54;;;;15549:6841:0;:::o;22145:85::-;962:27112:54;22188:35:0;962:27112:54;21498:4:0;962:27112:54;22145:85:0;;;22052;22095:35;962:27112:54;;;21498:4:0;962:27112:54;;22052:85:0;;21959;962:27112:54;22002:35:0;962:27112:54;21498:4:0;962:27112:54;21959:85:0;;;21866;962:27112:54;21909:35:0;962:27112:54;21498:4:0;962:27112:54;21866:85:0;;;21772:86;962:27112:54;21816:35:0;962:27112:54;21498:4:0;962:27112:54;21772:86:0;;;21678;962:27112:54;21722:35:0;962:27112:54;21498:4:0;962:27112:54;21678:86:0;;;21584;962:27112:54;21628:35:0;962:27112:54;21498:4:0;962:27112:54;21584:86:0;;;21490;962:27112:54;21534:35:0;962:27112:54;21498:4:0;962:27112:54;21490:86:0;;;21395:87;962:27112:54;21440:35:0;962:27112:54;21479:3:0;962:27112:54;21395:87:0;;;21300;962:27112:54;21345:35:0;962:27112:54;21384:3:0;962:27112:54;21300:87:0;;;21205;962:27112:54;21250:35:0;962:27112:54;21289:3:0;962:27112:54;21205:87:0;;;21110;962:27112:54;21155:35:0;962:27112:54;21194:3:0;962:27112:54;21110:87:0;;;21014:88;962:27112:54;21060:35:0;962:27112:54;21099:3:0;962:27112:54;21014:88:0;;;20918;962:27112:54;20964:35:0;962:27112:54;21003:3:0;962:27112:54;20918:88:0;;;20822;962:27112:54;20868:35:0;962:27112:54;20907:3:0;962:27112:54;20822:88:0;;;20726;962:27112:54;20772:35:0;962:27112:54;20811:3:0;962:27112:54;20726:88:0;;;20629:89;962:27112:54;20676:35:0;962:27112:54;20715:3:0;962:27112:54;20629:89:0;;;20532;962:27112:54;20579:35:0;962:27112:54;20618:3:0;962:27112:54;20532:89:0;;;20435;962:27112:54;20482:35:0;962:27112:54;20521:3:0;962:27112:54;20435:89:0;;;20338;962:27112:54;20385:35:0;962:27112:54;20424:3:0;962:27112:54;20338:89:0;;;20240:90;962:27112:54;20288:35:0;962:27112:54;20327:3:0;962:27112:54;20240:90:0;;;20142;962:27112:54;20190:35:0;962:27112:54;20229:3:0;962:27112:54;20142:90:0;;;20044;962:27112:54;20092:35:0;962:27112:54;20131:3:0;962:27112:54;20044:90:0;;;19946;962:27112:54;19994:35:0;962:27112:54;20033:3:0;962:27112:54;19946:90:0;;;19847:91;962:27112:54;19896:35:0;962:27112:54;19935:3:0;962:27112:54;19847:91:0;;;19748;962:27112:54;19797:35:0;962:27112:54;19836:3:0;962:27112:54;19748:91:0;;;19649;962:27112:54;19698:35:0;962:27112:54;19737:3:0;962:27112:54;19649:91:0;;;19550;962:27112:54;19599:35:0;962:27112:54;19638:3:0;962:27112:54;19550:91:0;;;19450:92;962:27112:54;19500:35:0;962:27112:54;19539:3:0;962:27112:54;19450:92:0;;;19350;962:27112:54;19400:35:0;962:27112:54;19439:3:0;962:27112:54;19350:92:0;;;19250;962:27112:54;19300:35:0;962:27112:54;19339:3:0;962:27112:54;19250:92:0;;;19150;962:27112:54;19200:35:0;962:27112:54;19239:3:0;962:27112:54;19150:92:0;;;19049:93;962:27112:54;19100:35:0;962:27112:54;19139:3:0;962:27112:54;19049:93:0;;;18948;962:27112:54;18999:35:0;962:27112:54;19038:3:0;962:27112:54;18948:93:0;;;18847;962:27112:54;18898:35:0;962:27112:54;18937:3:0;962:27112:54;18847:93:0;;;18746;962:27112:54;18797:35:0;962:27112:54;18836:3:0;962:27112:54;18746:93:0;;;18644:94;962:27112:54;18696:35:0;962:27112:54;18735:3:0;962:27112:54;18644:94:0;;;18542;962:27112:54;18594:35:0;962:27112:54;18633:3:0;962:27112:54;18542:94:0;;;18440;962:27112:54;18492:35:0;962:27112:54;18531:3:0;962:27112:54;18440:94:0;;;18338;962:27112:54;18390:35:0;962:27112:54;18429:3:0;962:27112:54;18338:94:0;;;18235:95;962:27112:54;18288:35:0;962:27112:54;18327:3:0;962:27112:54;18235:95:0;;;18132;962:27112:54;18185:35:0;962:27112:54;18224:3:0;962:27112:54;18132:95:0;;;18029;962:27112:54;18082:35:0;962:27112:54;18121:3:0;962:27112:54;18029:95:0;;;17926;962:27112:54;17979:35:0;962:27112:54;18018:3:0;962:27112:54;17926:95:0;;;17822:96;962:27112:54;17876:35:0;962:27112:54;17915:3:0;962:27112:54;17822:96:0;;;17718;962:27112:54;17772:35:0;962:27112:54;17811:3:0;962:27112:54;17718:96:0;;;17614;962:27112:54;17668:35:0;962:27112:54;17707:3:0;962:27112:54;17614:96:0;;;17510;962:27112:54;17564:35:0;962:27112:54;17603:3:0;962:27112:54;17510:96:0;;;17405:97;962:27112:54;17460:35:0;962:27112:54;17499:3:0;962:27112:54;17405:97:0;;;17300;962:27112:54;17355:35:0;962:27112:54;17394:3:0;962:27112:54;17300:97:0;;;17195;962:27112:54;17250:35:0;962:27112:54;17289:3:0;962:27112:54;17195:97:0;;;17090;962:27112:54;17145:35:0;962:27112:54;17184:3:0;962:27112:54;17090:97:0;;;16984:98;962:27112:54;17040:35:0;962:27112:54;17079:3:0;962:27112:54;16984:98:0;;;16878;962:27112:54;16934:35:0;962:27112:54;16973:3:0;962:27112:54;16878:98:0;;;16772;962:27112:54;16828:35:0;962:27112:54;16867:3:0;962:27112:54;16772:98:0;;;16666;962:27112:54;16722:35:0;962:27112:54;16761:3:0;962:27112:54;16666:98:0;;;16559:99;962:27112:54;16616:35:0;962:27112:54;16655:3:0;962:27112:54;16559:99:0;;;16452;962:27112:54;16509:35:0;962:27112:54;16548:3:0;962:27112:54;16452:99:0;;;16345;962:27112:54;16402:35:0;962:27112:54;16441:3:0;962:27112:54;16345:99:0;;;16238;962:27112:54;16295:35:0;962:27112:54;16334:3:0;962:27112:54;16238:99:0;;;16130:100;962:27112:54;16188:35:0;962:27112:54;16227:3:0;962:27112:54;16130:100:0;;;16022;962:27112:54;16080:35:0;962:27112:54;16119:3:0;962:27112:54;16022:100:0;;;15914;962:27112:54;15972:35:0;962:27112:54;16011:3:0;962:27112:54;15914:100:0;;;15806;962:27112:54;;-1:-1:-1;15806:100:0;","linkReferences":{},"immutableReferences":{"50149":[{"start":11478,"length":32},{"start":12775,"length":32},{"start":13375,"length":32}]}},"methodIdentifiers":{"burn(address,address,uint256,uint256,bool)":"6863f5bc","burnAmounts(uint256,uint256,uint256[])":"228fa850","burnSwap(address,address,uint256,uint256,uint256,bool,uint256,uint256)":"8d01fa44","burnSwapAmounts(uint256,uint256,uint256,(int128,int128[]),uint256[],uint256)":"f16b7c26","initialMint(address,uint256,int128)":"c5eabfb9","mint(address,address,uint256,uint256)":"b3f1c93d","mintAmounts(uint256,uint256,uint256[])":"cdc2468b","swapMint(address,address,uint256,uint256,uint256,uint256,uint256)":"3dd3c805","swapMintAmounts(uint256,uint256,uint256,(int128,int128[]),uint256[],uint256)":"e9f317f0"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract NativeWrapper\",\"name\":\"wrapper_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpBurned\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFee\",\"type\":\"uint256\"}],\"name\":\"BurnSwap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpMinted\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFee\",\"type\":\"uint256\"}],\"name\":\"SwapMint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"withdrawAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"lpTokenAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"cachedUintBalances\",\"type\":\"uint256[]\"}],\"name\":\"burnAmounts\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"withdrawAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePpm\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolFeePpm\",\"type\":\"uint256\"}],\"name\":\"burnSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outFee\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePpm\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"int128\",\"name\":\"kappa\",\"type\":\"int128\"},{\"internalType\":\"int128[]\",\"name\":\"qInternal\",\"type\":\"int128[]\"}],\"internalType\":\"struct LMSRStabilized.State\",\"name\":\"lmsrState\",\"type\":\"tuple\"},{\"internalType\":\"uint256[]\",\"name\":\"bases_\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply_\",\"type\":\"uint256\"}],\"name\":\"burnSwapAmounts\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outFee\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpTokens\",\"type\":\"uint256\"},{\"internalType\":\"int128\",\"name\":\"KAPPA\",\"type\":\"int128\"}],\"name\":\"initialMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lpMinted\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpTokenAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lpMinted\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"lpTokenAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"cachedUintBalances\",\"type\":\"uint256[]\"}],\"name\":\"mintAmounts\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"depositAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePpm\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolFeePpm\",\"type\":\"uint256\"}],\"name\":\"swapMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lpMinted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inFee\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"inputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePpm\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"int128\",\"name\":\"kappa\",\"type\":\"int128\"},{\"internalType\":\"int128[]\",\"name\":\"qInternal\",\"type\":\"int128[]\"}],\"internalType\":\"struct LMSRStabilized.State\",\"name\":\"lmsrState\",\"type\":\"tuple\"},{\"internalType\":\"uint256[]\",\"name\":\"bases_\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply_\",\"type\":\"uint256\"}],\"name\":\"swapMintAmounts\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lpMinted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inFee\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract inherits from PartyPoolBase to access storage and internal functions\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"burn(address,address,uint256,uint256,bool)\":{\"details\":\"Payer must own or approve the LP tokens being burned. The function updates LMSR state proportionally to reflect the reduced pool size after the withdrawal.\",\"params\":{\"deadline\":\"timestamp after which the transaction will revert. Pass 0 to ignore.\",\"lpAmount\":\"amount of LP tokens to burn (proportional withdrawal)\",\"payer\":\"address that provides the LP tokens to burn\",\"receiver\":\"address that receives the withdrawn tokens\",\"unwrap\":\"if true and the native token is being withdrawn, it is unwraped and sent as native currency\"}},\"burnSwap(address,address,uint256,uint256,uint256,bool,uint256,uint256)\":{\"details\":\"The function burns LP _tokens (authorization via allowance if needed), sends the single-asset payout and updates LMSR state.\",\"params\":{\"deadline\":\"optional deadline\",\"lpAmount\":\"amount of LP _tokens to burn\",\"outputTokenIndex\":\"index of target asset to receive\",\"payer\":\"who burns LP _tokens\",\"receiver\":\"who receives the single asset\",\"swapFeePpm\":\"fee in parts-per-million for this pool (may be used for future fee logic)\"},\"returns\":{\"amountOut\":\"uint amount of asset i sent to receiver\",\"outFee\":\"uint amount of asset i kept as an LP and protocol fee\"}},\"burnSwapAmounts(uint256,uint256,uint256,(int128,int128[]),uint256[],uint256)\":{\"details\":\"This is a pure view function that computes burn swap amounts from provided state\",\"params\":{\"bases_\":\"scaling _bases for each token\",\"lmsrState\":\"current LMSR state\",\"lpAmount\":\"amount of LP _tokens to burn\",\"outputTokenIndex\":\"index of target asset to receive\",\"swapFeePpm\":\"fee in parts-per-million\",\"totalSupply_\":\"current total LP token supply\"},\"returns\":{\"amountOut\":\"amount of target asset that would be received\"}},\"mintAmounts(uint256,uint256,uint256[])\":{\"details\":\"Returns the minimum token amounts (rounded up) that must be supplied to receive lpTokenAmount LP _tokens at current pool proportions. If the pool is empty (initial deposit) returns zeros because the initial deposit is handled by transferring _tokens then calling mint().\",\"params\":{\"lpTokenAmount\":\"The amount of LP _tokens desired\"},\"returns\":{\"depositAmounts\":\"Array of token amounts to deposit (rounded up)\"}},\"swapMint(address,address,uint256,uint256,uint256,uint256,uint256)\":{\"details\":\"swapMint executes as an exact-in planned swap followed by proportional scaling of qInternal. The function emits SwapMint (gross, net, fee) and also emits Mint for LP issuance.\",\"params\":{\"deadline\":\"optional deadline\",\"inputTokenIndex\":\"index of the input token\",\"maxAmountIn\":\"maximum uint token input (inclusive of fee)\",\"payer\":\"who transfers the input token\",\"receiver\":\"who receives the minted LP _tokens\",\"swapFeePpm\":\"fee in parts-per-million for this pool\"},\"returns\":{\"amountIn\":\"actual input used (uint256), lpMinted actual LP minted (uint256), inFee fee taken from the input (uint256)\"}},\"swapMintAmounts(uint256,uint256,uint256,(int128,int128[]),uint256[],uint256)\":{\"details\":\"This is a pure view function that computes swap mint amounts from provided state\",\"params\":{\"bases_\":\"scaling _bases for each token\",\"inputTokenIndex\":\"index of the input token\",\"lmsrState\":\"current LMSR state\",\"maxAmountIn\":\"maximum amount of token to deposit (inclusive of fee)\",\"swapFeePpm\":\"fee in parts-per-million\",\"totalSupply_\":\"current total LP token supply\"},\"returns\":{\"amountIn\":\"actual input amount used (excluding fee)\",\"inFee\":\"fee amount charged\",\"lpMinted\":\"LP tokens that would be minted\"}}},\"title\":\"PartyPoolMintImpl - Implementation contract for mint and burn functions\",\"version\":1},\"userdoc\":{\"events\":{\"BurnSwap(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted instead of Burn when a burnSwap is executed.\"},\"SwapMint(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted instead of Swap when a single-token swapMint is executed.\"}},\"kind\":\"user\",\"methods\":{\"burn(address,address,uint256,uint256,bool)\":{\"notice\":\"Burn LP tokens and withdraw the proportional basket to receiver. Functional even if the pool has been killed.\"},\"burnSwap(address,address,uint256,uint256,uint256,bool,uint256,uint256)\":{\"notice\":\"Burn LP _tokens then swap the redeemed proportional basket into a single asset `outputTokenIndex` and send to receiver. This version of burn does not work if the vault has been killed, because it involves a swap. Use regular burn() to recover funds if the pool has been killed.\"},\"burnSwapAmounts(uint256,uint256,uint256,(int128,int128[]),uint256[],uint256)\":{\"notice\":\"Calculate the amounts for a burn swap operation\"},\"mintAmounts(uint256,uint256,uint256[])\":{\"notice\":\"Calculate the proportional deposit amounts required for a given LP token amount\"},\"swapMint(address,address,uint256,uint256,uint256,uint256,uint256)\":{\"notice\":\"Single-token mint: deposit a single token, charge swap-LMSR cost, and mint LP.\"},\"swapMintAmounts(uint256,uint256,uint256,(int128,int128[]),uint256[],uint256)\":{\"notice\":\"Calculate the amounts for a swap mint operation\"}},\"notice\":\"This contract contains the mint and burn implementation that will be called via delegatecall\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/PartyPoolMintImpl.sol\":\"PartyPoolMintImpl\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/abdk-libraries-solidity/ABDKMath64x64.sol\":{\"keccak256\":\"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97\",\"license\":\"BSD-4-Clause\",\"urls\":[\"bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7\",\"dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol\":{\"keccak256\":\"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd\",\"dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd\",\"dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168\",\"dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161\",\"dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"src/ERC20Internal.sol\":{\"keccak256\":\"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f\",\"dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk\"]},\"src/IOwnable.sol\":{\"keccak256\":\"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1\",\"dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9\"]},\"src/IPartyPool.sol\":{\"keccak256\":\"0x55d3656b1a4c75801852066b7ba871212e5e807917b3b9029349349fae39375c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://009b67ccf1d28a04a2407a05ddda8f954033b7ac70f7fd5cbedbf779e867df9f\",\"dweb:/ipfs/QmS5vQcfma6PN28Q6qQwqa7KmUKu2KST72jwF8ffsj6Bw2\"]},\"src/LMSRStabilized.sol\":{\"keccak256\":\"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3\",\"dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB\"]},\"src/NativeWrapper.sol\":{\"keccak256\":\"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238\",\"dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB\"]},\"src/OwnableInternal.sol\":{\"keccak256\":\"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca\",\"dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE\"]},\"src/PartyPoolBase.sol\":{\"keccak256\":\"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5\",\"dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5\"]},\"src/PartyPoolHelpers.sol\":{\"keccak256\":\"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5\",\"dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP\"]},\"src/PartyPoolMintImpl.sol\":{\"keccak256\":\"0xe9d9927cecd46a1f836b2c43e9d6184642b9e695c7462e5fb7c671a38aab7398\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8d821911d7982fc302929198539b27f72be100b91450c98d2e0081519f776499\",\"dweb:/ipfs/QmRChx1DPD1gKXwfD1m6aQ7pgh1aX6CvYLNX41ufdJteaJ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract NativeWrapper","name":"wrapper_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":false},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"uint256[]","name":"amounts","type":"uint256[]","indexed":false},{"internalType":"uint256","name":"lpBurned","type":"uint256","indexed":false}],"type":"event","name":"Burn","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":true},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"contract IERC20","name":"tokenOut","type":"address","indexed":true},{"internalType":"uint256","name":"amountIn","type":"uint256","indexed":false},{"internalType":"uint256","name":"amountOut","type":"uint256","indexed":false},{"internalType":"uint256","name":"lpFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolFee","type":"uint256","indexed":false}],"type":"event","name":"BurnSwap","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":false},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"uint256[]","name":"amounts","type":"uint256[]","indexed":false},{"internalType":"uint256","name":"lpMinted","type":"uint256","indexed":false}],"type":"event","name":"Mint","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":true},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"contract IERC20","name":"tokenIn","type":"address","indexed":true},{"internalType":"uint256","name":"amountIn","type":"uint256","indexed":false},{"internalType":"uint256","name":"amountOut","type":"uint256","indexed":false},{"internalType":"uint256","name":"lpFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolFee","type":"uint256","indexed":false}],"type":"event","name":"SwapMint","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"lpAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"unwrap","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"burn","outputs":[{"internalType":"uint256[]","name":"withdrawAmounts","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"lpTokenAmount","type":"uint256"},{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"internalType":"uint256[]","name":"cachedUintBalances","type":"uint256[]"}],"stateMutability":"pure","type":"function","name":"burnAmounts","outputs":[{"internalType":"uint256[]","name":"withdrawAmounts","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"lpAmount","type":"uint256"},{"internalType":"uint256","name":"outputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"unwrap","type":"bool"},{"internalType":"uint256","name":"swapFeePpm","type":"uint256"},{"internalType":"uint256","name":"protocolFeePpm","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burnSwap","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"outFee","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"lpAmount","type":"uint256"},{"internalType":"uint256","name":"outputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"swapFeePpm","type":"uint256"},{"internalType":"struct LMSRStabilized.State","name":"lmsrState","type":"tuple","components":[{"internalType":"int128","name":"kappa","type":"int128"},{"internalType":"int128[]","name":"qInternal","type":"int128[]"}]},{"internalType":"uint256[]","name":"bases_","type":"uint256[]"},{"internalType":"uint256","name":"totalSupply_","type":"uint256"}],"stateMutability":"pure","type":"function","name":"burnSwapAmounts","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"outFee","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"lpTokens","type":"uint256"},{"internalType":"int128","name":"KAPPA","type":"int128"}],"stateMutability":"payable","type":"function","name":"initialMint","outputs":[{"internalType":"uint256","name":"lpMinted","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"lpTokenAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"payable","type":"function","name":"mint","outputs":[{"internalType":"uint256","name":"lpMinted","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"lpTokenAmount","type":"uint256"},{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"internalType":"uint256[]","name":"cachedUintBalances","type":"uint256[]"}],"stateMutability":"pure","type":"function","name":"mintAmounts","outputs":[{"internalType":"uint256[]","name":"depositAmounts","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"inputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"swapFeePpm","type":"uint256"},{"internalType":"uint256","name":"protocolFeePpm","type":"uint256"}],"stateMutability":"payable","type":"function","name":"swapMint","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"lpMinted","type":"uint256"},{"internalType":"uint256","name":"inFee","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"inputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"uint256","name":"swapFeePpm","type":"uint256"},{"internalType":"struct LMSRStabilized.State","name":"lmsrState","type":"tuple","components":[{"internalType":"int128","name":"kappa","type":"int128"},{"internalType":"int128[]","name":"qInternal","type":"int128[]"}]},{"internalType":"uint256[]","name":"bases_","type":"uint256[]"},{"internalType":"uint256","name":"totalSupply_","type":"uint256"}],"stateMutability":"pure","type":"function","name":"swapMintAmounts","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"lpMinted","type":"uint256"},{"internalType":"uint256","name":"inFee","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"burn(address,address,uint256,uint256,bool)":{"details":"Payer must own or approve the LP tokens being burned. The function updates LMSR state proportionally to reflect the reduced pool size after the withdrawal.","params":{"deadline":"timestamp after which the transaction will revert. Pass 0 to ignore.","lpAmount":"amount of LP tokens to burn (proportional withdrawal)","payer":"address that provides the LP tokens to burn","receiver":"address that receives the withdrawn tokens","unwrap":"if true and the native token is being withdrawn, it is unwraped and sent as native currency"}},"burnSwap(address,address,uint256,uint256,uint256,bool,uint256,uint256)":{"details":"The function burns LP _tokens (authorization via allowance if needed), sends the single-asset payout and updates LMSR state.","params":{"deadline":"optional deadline","lpAmount":"amount of LP _tokens to burn","outputTokenIndex":"index of target asset to receive","payer":"who burns LP _tokens","receiver":"who receives the single asset","swapFeePpm":"fee in parts-per-million for this pool (may be used for future fee logic)"},"returns":{"amountOut":"uint amount of asset i sent to receiver","outFee":"uint amount of asset i kept as an LP and protocol fee"}},"burnSwapAmounts(uint256,uint256,uint256,(int128,int128[]),uint256[],uint256)":{"details":"This is a pure view function that computes burn swap amounts from provided state","params":{"bases_":"scaling _bases for each token","lmsrState":"current LMSR state","lpAmount":"amount of LP _tokens to burn","outputTokenIndex":"index of target asset to receive","swapFeePpm":"fee in parts-per-million","totalSupply_":"current total LP token supply"},"returns":{"amountOut":"amount of target asset that would be received"}},"mintAmounts(uint256,uint256,uint256[])":{"details":"Returns the minimum token amounts (rounded up) that must be supplied to receive lpTokenAmount LP _tokens at current pool proportions. If the pool is empty (initial deposit) returns zeros because the initial deposit is handled by transferring _tokens then calling mint().","params":{"lpTokenAmount":"The amount of LP _tokens desired"},"returns":{"depositAmounts":"Array of token amounts to deposit (rounded up)"}},"swapMint(address,address,uint256,uint256,uint256,uint256,uint256)":{"details":"swapMint executes as an exact-in planned swap followed by proportional scaling of qInternal. The function emits SwapMint (gross, net, fee) and also emits Mint for LP issuance.","params":{"deadline":"optional deadline","inputTokenIndex":"index of the input token","maxAmountIn":"maximum uint token input (inclusive of fee)","payer":"who transfers the input token","receiver":"who receives the minted LP _tokens","swapFeePpm":"fee in parts-per-million for this pool"},"returns":{"amountIn":"actual input used (uint256), lpMinted actual LP minted (uint256), inFee fee taken from the input (uint256)"}},"swapMintAmounts(uint256,uint256,uint256,(int128,int128[]),uint256[],uint256)":{"details":"This is a pure view function that computes swap mint amounts from provided state","params":{"bases_":"scaling _bases for each token","inputTokenIndex":"index of the input token","lmsrState":"current LMSR state","maxAmountIn":"maximum amount of token to deposit (inclusive of fee)","swapFeePpm":"fee in parts-per-million","totalSupply_":"current total LP token supply"},"returns":{"amountIn":"actual input amount used (excluding fee)","inFee":"fee amount charged","lpMinted":"LP tokens that would be minted"}}},"version":1},"userdoc":{"kind":"user","methods":{"burn(address,address,uint256,uint256,bool)":{"notice":"Burn LP tokens and withdraw the proportional basket to receiver. Functional even if the pool has been killed."},"burnSwap(address,address,uint256,uint256,uint256,bool,uint256,uint256)":{"notice":"Burn LP _tokens then swap the redeemed proportional basket into a single asset `outputTokenIndex` and send to receiver. This version of burn does not work if the vault has been killed, because it involves a swap. Use regular burn() to recover funds if the pool has been killed."},"burnSwapAmounts(uint256,uint256,uint256,(int128,int128[]),uint256[],uint256)":{"notice":"Calculate the amounts for a burn swap operation"},"mintAmounts(uint256,uint256,uint256[])":{"notice":"Calculate the proportional deposit amounts required for a given LP token amount"},"swapMint(address,address,uint256,uint256,uint256,uint256,uint256)":{"notice":"Single-token mint: deposit a single token, charge swap-LMSR cost, and mint LP."},"swapMintAmounts(uint256,uint256,uint256,(int128,int128[]),uint256[],uint256)":{"notice":"Calculate the amounts for a swap mint operation"}},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/PartyPoolMintImpl.sol":"PartyPoolMintImpl"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/abdk-libraries-solidity/ABDKMath64x64.sol":{"keccak256":"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97","urls":["bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7","dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN"],"license":"BSD-4-Clause"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d","urls":["bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100","dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc","urls":["bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037","dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44","urls":["bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d","dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol":{"keccak256":"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e","urls":["bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd","dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86","urls":["bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd","dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9","urls":["bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168","dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol":{"keccak256":"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0","urls":["bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161","dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"},"src/ERC20Internal.sol":{"keccak256":"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36","urls":["bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f","dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk"],"license":"UNLICENSED"},"src/IOwnable.sol":{"keccak256":"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990","urls":["bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1","dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9"],"license":"MIT"},"src/IPartyPool.sol":{"keccak256":"0x55d3656b1a4c75801852066b7ba871212e5e807917b3b9029349349fae39375c","urls":["bzz-raw://009b67ccf1d28a04a2407a05ddda8f954033b7ac70f7fd5cbedbf779e867df9f","dweb:/ipfs/QmS5vQcfma6PN28Q6qQwqa7KmUKu2KST72jwF8ffsj6Bw2"],"license":"UNLICENSED"},"src/LMSRStabilized.sol":{"keccak256":"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b","urls":["bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3","dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB"],"license":"UNLICENSED"},"src/NativeWrapper.sol":{"keccak256":"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579","urls":["bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238","dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB"],"license":"UNLICENSED"},"src/OwnableInternal.sol":{"keccak256":"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581","urls":["bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca","dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE"],"license":"MIT"},"src/PartyPoolBase.sol":{"keccak256":"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999","urls":["bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5","dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5"],"license":"UNLICENSED"},"src/PartyPoolHelpers.sol":{"keccak256":"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c","urls":["bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5","dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP"],"license":"UNLICENSED"},"src/PartyPoolMintImpl.sol":{"keccak256":"0xe9d9927cecd46a1f836b2c43e9d6184642b9e695c7462e5fb7c671a38aab7398","urls":["bzz-raw://8d821911d7982fc302929198539b27f72be100b91450c98d2e0081519f776499","dweb:/ipfs/QmRChx1DPD1gKXwfD1m6aQ7pgh1aX6CvYLNX41ufdJteaJ"],"license":"UNLICENSED"}},"version":1},"id":54} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"wrapper_","type":"address","internalType":"contract NativeWrapper"}],"stateMutability":"nonpayable"},{"type":"function","name":"burn","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"lpAmount","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"unwrap","type":"bool","internalType":"bool"}],"outputs":[{"name":"withdrawAmounts","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"burnAmounts","inputs":[{"name":"lpTokenAmount","type":"uint256","internalType":"uint256"},{"name":"totalSupply","type":"uint256","internalType":"uint256"},{"name":"cachedUintBalances","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"withdrawAmounts","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"pure"},{"type":"function","name":"burnSwap","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"lpAmount","type":"uint256","internalType":"uint256"},{"name":"outputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"unwrap","type":"bool","internalType":"bool"},{"name":"swapFeePpm","type":"uint256","internalType":"uint256"},{"name":"protocolFeePpm","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"outFee","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"burnSwapAmounts","inputs":[{"name":"lpAmount","type":"uint256","internalType":"uint256"},{"name":"outputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"swapFeePpm","type":"uint256","internalType":"uint256"},{"name":"lmsrState","type":"tuple","internalType":"struct LMSRStabilized.State","components":[{"name":"kappa","type":"int128","internalType":"int128"},{"name":"qInternal","type":"int128[]","internalType":"int128[]"}]},{"name":"bases_","type":"uint256[]","internalType":"uint256[]"},{"name":"totalSupply_","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"outFee","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"initialMint","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"lpTokens","type":"uint256","internalType":"uint256"},{"name":"KAPPA","type":"int128","internalType":"int128"}],"outputs":[{"name":"lpMinted","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"mint","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"lpTokenAmount","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"lpMinted","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"mintAmounts","inputs":[{"name":"lpTokenAmount","type":"uint256","internalType":"uint256"},{"name":"totalSupply","type":"uint256","internalType":"uint256"},{"name":"cachedUintBalances","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"depositAmounts","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"pure"},{"type":"function","name":"swapMint","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"inputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"maxAmountIn","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"swapFeePpm","type":"uint256","internalType":"uint256"},{"name":"protocolFeePpm","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"lpMinted","type":"uint256","internalType":"uint256"},{"name":"inFee","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"swapMintAmounts","inputs":[{"name":"inputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"maxAmountIn","type":"uint256","internalType":"uint256"},{"name":"swapFeePpm","type":"uint256","internalType":"uint256"},{"name":"lmsrState","type":"tuple","internalType":"struct LMSRStabilized.State","components":[{"name":"kappa","type":"int128","internalType":"int128"},{"name":"qInternal","type":"int128[]","internalType":"int128[]"}]},{"name":"bases_","type":"uint256[]","internalType":"uint256[]"},{"name":"totalSupply_","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"lpMinted","type":"uint256","internalType":"uint256"},{"name":"inFee","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Burn","inputs":[{"name":"payer","type":"address","indexed":false,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"amounts","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"lpBurned","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BurnSwap","inputs":[{"name":"payer","type":"address","indexed":true,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"tokenOut","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lpFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Mint","inputs":[{"name":"payer","type":"address","indexed":false,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"amounts","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"lpMinted","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SwapMint","inputs":[{"name":"payer","type":"address","indexed":true,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"tokenIn","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lpFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60a03461009c57601f61553838819003918201601f19168301916001600160401b038311848410176100a05780849260209460405283398101031261009c57516001600160a01b038116810361009c5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005560805260405161548390816100b58239608051818181612cd6015281816131e7015261343f0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c8063228fa850146124535780633dd3c80514611d5c5780636863f5bc146119a55780638d01fa4414611483578063b3f1c93d14611009578063c5eabfb914610831578063cdc2468b14610803578063e9f317f0146102285763f16b7c261461007c575f80fd5b346102245761008a366125fe565b94919080949394518410156101c657821561016857851561010a576100dc846100d46100e3946100fd976100c360409b6100ea99613689565b9160208151600f0b910151906141fe565b939050612798565b5190612e7c565b9283612c31565b50826100f882809511612abd565b61295c565b9082519182526020820152f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6275726e53776170416d6f756e74733a20656d70747920737570706c790000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6275726e53776170416d6f756e74733a207a65726f206c7000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6275726e53776170416d6f756e74733a206964780000000000000000000000006044820152fd5b5f80fd5b3461022457610236366125fe565b925f9594959291925082518510156107a5578515610747576020820191825151156106e9578115159387856106b8575b61027b906102748984612798565b5190613689565b5f81600f0b13156106345761029e6102a691896102ad9551600f0b88519061397d565b989092612798565b51906141c9565b9081156105b0575f9361055b575b50826102c69161294f565b948515159081610550575b50156104cc5751935f92835b8651851015610308576103006001916102f6878a612798565b51600f0b90612f34565b9401936102dd565b90855f83600f0b131561046e5761032b6103309161032585612e62565b94612f34565b612e62565b91816103c3575050915b82156103655761036190604051938493846040919493926060820195825260208201520152565b0390f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761704d696e74416d6f756e74733a207a65726f204c50206d696e746564006044820152fd5b90918115610410578180821115610407576103dd9161295c565b915b82156103fd576103f7926103f2916127d9565b6127ec565b9161033a565b5050505f9161033a565b50505f916103df565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761704d696e74416d6f756e74733a206f6c645363616c6564207a65726f006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f737761704d696e74416d6f756e74733a207a65726f20746f74616c00000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f737761704d696e74416d6f756e74733a207472616e736665722065786365656460448201527f73206d61780000000000000000000000000000000000000000000000000000006064820152fd5b9050851115866102d1565b816105679294506127d9565b620f423f810180911161058357620f42409004916102c66102bb565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f737761704d696e74416d6f756e74733a20696e707574207a65726f206166746560448201527f7220696e7465726e616c20636f6e76657273696f6e00000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f737761704d696e74416d6f756e74733a20696e70757420746f6f20736d616c6c60448201527f20616674657220666565000000000000000000000000000000000000000000006064820152fd5b506106c383896127d9565b620f423f8101809111610583576106e2620f424061027b92048a61295c565b9050610266565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f737761704d696e74416d6f756e74733a20756e696e697420706f6f6c000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f737761704d696e74416d6f756e74733a20696e707574207a65726f00000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f737761704d696e74416d6f756e74733a206964780000000000000000000000006044820152fd5b346102245761036161081d61081736612523565b91612b22565b604051918291602083526020830190612577565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610224576108636125aa565b602435906044359081600f0b82036102245761088460ff600854161561288a565b61088c612bba565b600b5490600354158015610fff575b15610f7b576108a982612749565b936108b383612749565b925f5b818110610d54575050600a548551809103610b5e575b505f5b855181101561092457806108e560019288612798565b51600f0b61091c6108f5836129fd565b81939154906fffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b9055016108cf565b50835f610937610932612969565b612e37565b600f0b1315610b00577fffffffffffffffffffffffffffffffff0000000000000000000000000000000060095416906fffffffffffffffffffffffffffffffff16176009555f600954600f0b1315610aa25780610a7757507f6bc0553967b8bb727947c938555c0e061c3f96b629935c8f82a43b558dfb1c576109f3670de0b6b3a7640000935b84610a68575b73ffffffffffffffffffffffffffffffffffffffff6040519283925f8452606060208501526060840190612577565b9486604084015216930390a260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015610a38575b602083604051908152f35b5f80809381938290610a5f575b3390f115610a54578180610a2d565b6040513d5f823e3d90fd5b506108fc610a45565b610a72858561312a565b6109c4565b6109f37f6bc0553967b8bb727947c938555c0e061c3f96b629935c8f82a43b558dfb1c5791936109be565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4c4d53523a206b617070613e30000000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4c4d53523a20746f74616c207a65726f000000000000000000000000000000006044820152fd5b610b6790612749565b80519067ffffffffffffffff8211610d2757680100000000000000008211610d2757600a5482600a55808310610c90575b5060200190600a5f5260205f208160011c915f5b838110610c4257507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8116900380610be7575b5050506108cc565b925f935f5b818110610c0157505050015585808080610bdf565b9091946020610c386001928851600f0b908560041b6fffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b9601929101610bec565b5f5f5b60028110610c5a575083820155600101610bac565b86519096916001916020916fffffffffffffffffffffffffffffffff60078b901b81811b199092169216901b1792019601610c45565b600a5f5260205f206001808501811c8201920160011c019060108460041b1680610ccf575b505b818110610cc45750610b98565b5f8155600101610cb7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82549160200360031b1c16905589610cb5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6024602073ffffffffffffffffffffffffffffffffffffffff610d7684612907565b90549060031b1c16604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa908115610a54575f91610f4a575b508015610ec65780610e3b91610dd48489612798565b52610e1881610de285612937565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b610e2581610de2856128ef565b610e2e836128ef565b90549060031b1c90613689565b610e458289612798565b90600f0b90525f610e568289612798565b51600f0b1315610e68576001016108b6565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f696e697469616c4d696e743a207a65726f20696e7465726e616c2071000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f696e697469616c4d696e743a207a65726f20696e697469616c2062616c616e6360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152fd5b90506020813d8211610f73575b81610f646020938361246d565b81010312610224575188610dbe565b3d9150610f57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f696e697469616c4d696e743a20706f6f6c20616c726561647920696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152fd5b50600a541561089b565b60807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102245761103b6125aa565b6110436125cd565b906044359160643561105a60ff600854161561288a565b611062612bba565b8015908115611478575b501561141a57600b5460035480158015611410575b61138c57841561132e576110ac61109c61032b610932612969565b916110a5612a3d565b9087612b22565b915f5b8181106112d557506110c081612749565b905f5b81811061128857505061032b816109326110dc93613047565b818082111561127f576110ee9161295c565b905b8115611276576103f2611105926003546127d9565b935b8415611218576201869f81029081046201869f0361058357620186a0900484106111ba578161117f8573ffffffffffffffffffffffffffffffffffffffff93611171827f6bc0553967b8bb727947c938555c0e061c3f96b629935c8f82a43b558dfb1c579761312a565b604051948594169684612a85565b0390a260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015610a3857602083604051908152f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6d696e743a20696e73756666696369656e74204c50206d696e746564000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6d696e743a207a65726f204c50206d696e7465640000000000000000000000006044820152fd5b50505f93611107565b50505f906110f0565b806112bf6112b261129a600194612937565b90549060031b1c6112ab848a612798565b519061294f565b610e2581610de285612937565b6112c98286612798565b90600f0b9052016110c3565b806112e260019286612798565b516112ee575b016110af565b61132973ffffffffffffffffffffffffffffffffffffffff61130f83612907565b90549060031b1c166113218388612798565b519089612cbe565b6112e8565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6d696e743a207a65726f204c5020616d6f756e740000000000000000000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f6d696e743a2075736520696e697469616c4d696e7420666f7220706f6f6c206960448201527f6e697469616c697a6174696f6e000000000000000000000000000000000000006064820152fd5b50600a5415611081565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f6d696e743a20646561646c696e652065786365656465640000000000000000006044820152fd5b90504211158461106c565b34610224576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610224576114bb6125aa565b6114c36125cd565b9060443591606435916084359360a4359182151583036102245760e435936114e9612bba565b6114f860ff600854161561288a565b600b5496878710156119475783156118e95780159081156118de575b5015611880576003548015611822576115486115336115609286613689565b88600954600f0b611542612969565b906141fe565b9050611553886128ef565b90549060031b1c90612e7c565b9461157e61157060c43588612c31565b50876100f882809a11612abd565b965f9180151580611819575b6117a5575b506115b88573ffffffffffffffffffffffffffffffffffffffff861695863303611760576135b1565b6115ea73ffffffffffffffffffffffffffffffffffffffff6115d983612907565b90549060031b1c16968985896131c1565b6115f389612749565b905f5b8a81106117075750506001985f5b8181106116ca575b50509161168973ffffffffffffffffffffffffffffffffffffffff927f8c012c6148e8ecc34b864721470dcc1e938d162c498b7d28961a8a78238cfe139460409b5f146116bc575061165c61347c565b611666818a61295c565b8b51978852602088018b9052604088015260608701529116939081906080820190565b0390a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005582519182526020820152f35b6116c590613047565b61165c565b6116d48184612798565b51600f0b6116e457600101611604565b505f9950611689905073ffffffffffffffffffffffffffffffffffffffff61160c565b80611736611716600193612937565b90549060031b1c868d86851461174c575b5050610e2581610de285612937565b6117408286612798565b90600f0b9052016115f6565b6100f8906117599361295c565b868d611727565b865f52600260205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f526020526117a06117998360405f205461295c565b33836134dc565b6135b1565b620f42409192506117b690886127d9565b0490816117c4575b8961158f565b6118146117d08261291f565b6117e08583548360031b1c61294f565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b6117be565b5087151561158a565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6275726e537761703a20656d70747920737570706c79000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6275726e537761703a20646561646c696e6500000000000000000000000000006044820152fd5b905042111588611514565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6275726e537761703a207a65726f206c700000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6275726e537761703a20696478000000000000000000000000000000000000006044820152fd5b346102245760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610224576119dc6125aa565b6119e46125cd565b6084359160443591606435841515850361022457611a00612bba565b8015908115611d51575b5015611cf357600b54928015611c95576003548015611c3757611a3990611a32969596612a3d565b9083612823565b935f5b868110611bd8575050611a4e85612749565b5f5b868110611b9257506001955f5b818110611b55575b505091611adb73ffffffffffffffffffffffffffffffffffffffff927f3f84ed8aa11ed632de380466083280b4c5da668f12695b08636d7848eaf896b494610361985f14611b475750611ab661347c565b838616803303611b16575b50611acc81876135b1565b86604051948594169684612a85565b0390a260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055604051918291602083526020830190612577565b5f52600260205260405f208433165f52602052611b41611b3a8260405f205461295c565b33886134dc565b88611ac1565b611b5090613047565b611ab6565b611b5f8184612798565b51600f0b611b6f57600101611a5d565b505f9650611adb905073ffffffffffffffffffffffffffffffffffffffff611a65565b80611bbf6112b2611ba76001949a999a612937565b90549060031b1c611bb8848c612798565b519061295c565b611bc98285612798565b90600f0b905201959495611a50565b80611be7600192889998612798565b51611bf6575b01959495611a3c565b611c328373ffffffffffffffffffffffffffffffffffffffff611c1884612907565b90549060031b1c1687611c2b858d612798565b51916131c1565b611bed565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6275726e3a20656d70747920737570706c7900000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6275726e3a207a65726f206c70000000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f6275726e3a20646561646c696e652065786365656465640000000000000000006044820152fd5b905042111585611a0a565b60e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022457611d8e6125aa565b611d966125cd565b604435606435916084359360a4359360c43592611db860ff600854161561288a565b611dc0612bba565b600b5496878610156123f557821561239757801590811561238c575b501561232e57600a54156122d057611e02611df78784612c31565b9050610e2e876128ef565b945f86600f0b131561224c57611e2a611e429682600954600f0b611e24612969565b9061397d565b9690611e35836128ef565b90549060031b1c90612c53565b9687156121c857611e539088612c85565b95611e5e878961294f565b9384151590816121bd575b501561215f57611e9f8473ffffffffffffffffffffffffffffffffffffffff611e9185612907565b90549060031b1c1687612cbe565b5f9580151580612156575b612116575b50611ed8611ebd878661295c565b6117e0611ec985612937565b91909283548360031b1c61294f565b611ee3610932612969565b98611ef7611ef08b612e62565b928b612f34565b91611f0183612e62565b6003549091816120d4575050995b8a1561207657611f1e82612749565b925f5b838110612038575050505091611fbf73ffffffffffffffffffffffffffffffffffffffff611f838194611f747fcbf41a060d7827197acec8e5ef3abf36d633e77060f7aec03943608d1cd84ebe97613047565b611f7e8d8661312a565b612907565b90549060031b1c1696611f96818a61295c565b8b8560405196879616991697859094939260609260808301968352602083015260408201520152565b0390a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015612013575b505061036190604051938493846040919493926060820195825260208201520152565b5f8080938193829061202f575b3390f115610a54578380611ff0565b506108fc612020565b806120608461205b8561204c6001966129fd565b90549060031b1c600f0b612f71565b613001565b61206a8288612798565b90600f0b905201611f21565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f737761704d696e743a207a65726f204c50206d696e74656400000000000000006044820152fd5b9091818082111561210d576120e89161295c565b915b8215612103576120fd926103f2916127d9565b99611f0f565b5050505f99611f0f565b50505f916120ea565b620f424091965061212790886127d9565b049485612135575b89611eaf565b6121516121418361291f565b6117e08983548360031b1c61294f565b61212f565b50871515611eaa565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f737761704d696e743a207472616e736665722065786365656473206d617800006044820152fd5b90508411158a611e69565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f737761704d696e743a20696e707574207a65726f20616674657220696e74657260448201527f6e616c20636f6e76657273696f6e0000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f737761704d696e743a20696e70757420746f6f20736d616c6c2061667465722060448201527f66656500000000000000000000000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f737761704d696e743a20756e696e697420706f6f6c00000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f737761704d696e743a20646561646c696e6500000000000000000000000000006044820152fd5b905042111588611ddc565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f737761704d696e743a20696e707574207a65726f0000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f737761704d696e743a20696478000000000000000000000000000000000000006044820152fd5b346102245761036161081d61246736612523565b91612823565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610d2757604052565b67ffffffffffffffff8111610d275760051b60200190565b9080601f830112156102245781356124dd816124ae565b926124eb604051948561246d565b81845260208085019260051b82010192831161022457602001905b8282106125135750505090565b8135815260209182019101612506565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102245760043591602435916044359067ffffffffffffffff821161022457612574916004016124c6565b90565b90602080835192838152019201905f5b8181106125945750505090565b8251845260209384019390920191600101612587565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361022457565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361022457565b359081600f0b820361022457565b60c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102245760043591602435916044359160643567ffffffffffffffff81116102245760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc828503011261022457604051906040820182811067ffffffffffffffff821117610d275760405261269c816004016125f0565b825260248101359067ffffffffffffffff8211610224570183602382011215610224576004810135906126ce826124ae565b916126dc604051938461246d565b808352602060048185019260051b840101019186831161022457602401905b828210612731575050506020820152916084359067ffffffffffffffff82116102245761272a916004016124c6565b9060a43590565b6020809161273e846125f0565b8152019101906126fb565b90612753826124ae565b612760604051918261246d565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061278e82946124ae565b0190602036910137565b80518210156127ac5760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8181029291811591840414171561058357565b81156127f6570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b9082519161283083612749565b9382158015612882575b61287b575f5b84811061284f57505050505090565b8061286a856103f261286360019587612798565b51876127d9565b6128748289612798565b5201612840565b5050505090565b50831561283a565b1561289157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b600d548110156127ac57600d5f5260205f2001905f90565b600b548110156127ac57600b5f5260205f2001905f90565b600c548110156127ac57600c5f5260205f2001905f90565b600f548110156127ac57600f5f5260205f2001905f90565b9190820180921161058357565b9190820391821161058357565b60405190600a548083528260208101600a5f5260205f20925f905b8060018301106129d1576129aa9454918181106129bd575b106129ac575b50038361246d565b565b60801d600f0b81526020015f6129a2565b92602060019184600f0b815201930161299c565b9160029193506040600191865480600f0b825260801d600f0b6020820152019401920185929391612984565b90600a548210156127ac57600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b60405190600f548083528260208101600f5f5260205f20925f5b818110612a6c5750506129aa9250038361246d565b8454835260019485019487945060209093019201612a57565b939291612ab89073ffffffffffffffffffffffffffffffffffffffff604093168652606060208701526060860190612577565b930152565b15612ac457565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6275726e53776170416d6f756e74733a206f7574707574207a65726f000000006044820152fd5b825190612b2e82612749565b9383158015612bb2575b61287b575f5b838110612b4d57505050505090565b612b6a85612b65612b5e8486612798565b51866127d9565b61294f565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820191821161058357612ba1866001936127ec565b612bab8289612798565b5201612b3e565b508215612b38565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005414612c095760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b91908015612c4d57612c466125749184612c85565b809361295c565b505f9190565b612c67612c608383612e7c565b9283613689565b90600f0b90600f0b12612c775790565b600181018091116105835790565b908015612cb857612c95916127d9565b620f424081019081811161058357620f423f0190811161058357620f4240900490565b50505f90565b9073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169173ffffffffffffffffffffffffffffffffffffffff82169183831480612e2d575b15612d6e57505050803b15610224575f906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af18015610a5457612d645750565b5f6129aa9161246d565b919390925073ffffffffffffffffffffffffffffffffffffffff604051937f23b872dd000000000000000000000000000000000000000000000000000000005f52166004523060245260445260205f60648180855af19060015f5114821615612e0e575b50906040525f60605215612de35750565b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6001821516612e24573b15153d1516165f612dd2565b823d5f823e3d90fd5b5084341015612d18565b5f90815b8151831015612e5c57612e546001916102f68585612798565b920191612e3b565b91505090565b600f0b5f811261022457670de0b6b3a76400000260401c90565b8115612cb857600f0b5f8112610224576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116102245760401b81198111610224570190565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a575b1561022457600f0b90565b506f7fffffffffffffffffffffffffffffff811315612f0f565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b600f0b801561022457700100000000000000000000000000000000057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b90600f0b9081156102245760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b5f61305182612e37565b600f0b13156130cc578051600a915f5b82811061306e5750505050565b6130788183612798565b51600f0b9084548110156127ac57600191855f526130c460205f2083851c019160108460041b168354906fffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b905501613061565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a206e657720746f74616c207a65726f0000000000000000000000006044820152fd5b73ffffffffffffffffffffffffffffffffffffffff16908115613195577fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6020826131785f9460035461294f565b6003558484526001825260408420818154019055604051908152a3565b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b90919280613427575b1561335d575073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b15610224576040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081525f816024818380978960048401525af18015610a5457613348575b508180809481935af1903d15613342573d9067ffffffffffffffff821161331557604051916132a760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116018461246d565b825260203d92013e5b156132b757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526041600452fd5b506132b0565b6133559192505f9061246d565b5f905f613250565b9173ffffffffffffffffffffffffffffffffffffffff604051927fa9059cbb000000000000000000000000000000000000000000000000000000005f521660045260245260205f60448180865af19060015f5114821615613406575b604052156133c45750565b73ffffffffffffffffffffffffffffffffffffffff907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b90600181151661341e57823b15153d151616906133b9565b503d5f823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8216146131ca565b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000060095416600955600a545f600a55806134b35750565b600a5f52600160205f20910160011c8101905b8181106134d1575050565b5f81556001016134c6565b73ffffffffffffffffffffffffffffffffffffffff169081156135855773ffffffffffffffffffffffffffffffffffffffff169182156135595760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591835f526002825260405f20855f5282528060405f2055604051908152a3565b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b90919073ffffffffffffffffffffffffffffffffffffffff16801561365d57805f52600160205260405f205483811061362a576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef93858752600184520360408620558060035403600355604051908152a3565b91507fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b81156102245777ffffffffffffffffffffffffffffffffffffffffffffffff811161370157906136bb9160401b6127ec565b6fffffffffffffffffffffffffffffffff8111610224576fffffffffffffffffffffffffffffffff166f7fffffffffffffffffffffffffffffff811161022457600f0b90565b60c09181831c80936401000000008210156138a6575b600282620100006137a494101561389a575b61010081101561388e575b6010811015613882575b6004811015613877575b101561386f575b8360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b6127ec565b926fffffffffffffffffffffffffffffffff8411610224578160801c8402906fffffffffffffffffffffffffffffffff8316850290809460401b90828210613845575b5003928160801b9182851061381c575b60801c036138115761380992036127ec565b905b016136bb565b50505060019061380b565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906137f7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f6137e7565b60010161374f565b91810191811c613748565b6004928301921c61373e565b6008928301921c613734565b6010928301921c613729565b505060e082811c90613717565b156138ba57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b1561391f57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4c4d53523a20623c3d30000000000000000000000000000000000000000000006044820152fd5b90919392938251928382101561416b575f86600f0b131561410d576139a181612e37565b936139bb855f81600f0b13956139b6876138b3565b612f71565b906139ca5f83600f0b13613918565b6139d382612fb1565b916139dd82612749565b955f5b8381106140c357506510c6f7a0b5ed905f901561406557613a01898c613001565b916801000000000000000083600f0b12614054575b5f5b60408110613e39575b505f9b5f935b60408510613c09575b50505050505f955f935f5b848110613b05575b5050505050613af95791613a6b613a61613a7093613a769695612798565b51600f0b87612f71565b612f34565b93612f71565b915f83600f0b13801590613aec575b613a8d579190565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4c4d53523a207a65726f206f75747075740000000000000000000000000000006044820152606490fd5b505f81600f0b1315613a85565b5050505090505f905f90565b878103613b15575b600101613a3b565b613b2c613b228289612798565b51600f0b8d612f71565b5f81600f0b13613b3d575b50613b0d565b82613b4a919a929a612f71565b6820000000000000000081600f0b13613bf557613b69613b84916146aa565b613b7f613b768c87612798565b51600f0b612ed7565b614655565b5f81600f0b1315613bf557613ba690613b9d8b86612798565b51600f0b613001565b5f81600f0b1315613bf557613bbd613bc39161470c565b85612f71565b905f82600f0b12613be157600191613bda91612f34565b9890613b37565b985050505050505060015f80808080613a43565b509750505050505060015f80808080613a43565b68020000000000000000613c1d8286612f34565b60401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613e1f575b1561022457600f0b90898c8c5f915f905f905b8d8210613d01575b505015613ce2575050506f7fffffffffffffffffffffffffffffff5b83600f0b90600f0b135f14613cd95750935b82613ca28587614655565b600f0b1315613cc757603f8114613cbd575b60010193613a27565b929c508c92613cb4565b50505091995050975f80808080613a30565b94935092613c97565b613cf2613a6b91613cfc94612798565b51600f0b85612f71565b613c85565b9092839592949503613d1f575b50506001018c92918f918f92613c61565b8d613d37613d2d8585612798565b51600f0b89612f71565b5f81600f0b13613d49575b5050613d0e565b90613d5691969496612f71565b6820000000000000000081600f0b13613e0f57613d75613d82916146aa565b613b7f613b768885612798565b915f83600f0b1315613dff575090613b9d85613d9d93612798565b8d5f82600f0b1315613df05750613db6613dbc9161470c565b8b612f71565b908d5f83600f0b12613de15750600191613dd591612f34565b9290508c8f8d5f613d42565b93509150508c60018f80613c69565b93505090508c60018f80613c69565b9450505090508c60018f80613c69565b5050925090508c60018f80613c69565b506f7fffffffffffffffffffffffffffffff811315613c4e565b925f5f5f5b888110613f36575b5015613f1657506f7fffffffffffffffffffffffffffffff5b8d600f0b90600f0b12801590613efe575b613ef857600f0b60411b60401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613ede575b1561022457600f0b926a10000000000000000000008413613ecb575b600101613a18565b6a10000000000000000000009350613ec3565b506f7fffffffffffffffffffffffffffffff811315613ea7565b92613a21565b506a100000000000000000000081600f0b1215613e70565b613f3190613a6b613f278c8c612798565b51600f0b84612f71565b613e5f565b839e9c9a98969f9d9b9980989695948b8303613f65575b50506001019e9597999b9d92939496989a9c9e613e3e565b613f7d90613f73848d612798565b51600f0b90612f71565b5f81600f0b13613f8f575b508f613f4d565b90613f9c91949294612f71565b6820000000000000000081600f0b1361403a578b613b7f613b7686613fc3613fc9956146aa565b93612798565b5f81600f0b131561403a57613fe290613b9d858e612798565b5f81600f0b131561403a57613ff9613fff9161470c565b87612f71565b905f82600f0b126140205760019161401691612f34565b929050875f613f88565b9250505060019d9496989a9c9192939597999b9d5f613e46565b5091505060019d9496989a9c9192939597999b9d5f613e46565b680100000000000000009250613a16565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4c4d53523a20737761704d696e7420646567656e6572617465000000000000006044820152fd5b6001906140f76140f2876139b66140da8c8c612798565b51600f0b6140e8868d612798565b51600f0b90614655565b6146aa565b614101828b612798565b90600f0b9052016139e0565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4c4d53523a20616d6f756e74203c3d20300000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4c4d53523a2069647800000000000000000000000000000000000000000000006044820152fd5b6141ee6141df6141d98484612e7c565b93614692565b6141e884614692565b92612f71565b90600f0b90600f0b13612c775790565b93919383600f0b5f8113156145b55768010000000000000000126145575761423861422883612e37565b80926139b65f83600f0b136138b3565b906142475f83600f0b13613918565b61425082612fb1565b61425c84519287612f71565b9661426683612749565b935f5b84811061451e575061427e613d2d8388612798565b975f89600f0b13965f5b8681106142b25750505050505050501580156142a5575b613a8d57565b505f82600f0b131561429f565b8481036142c5575b600101955b95614288565b6142d2613f278284612798565b5f81600f0b136142e3575b506142ba565b6142f387829d949d9b939b612f71565b9182600f0b926820000000000000000084136144f2577fffffffffffffffffffffffffffffffff8000000000000000000000000000000061434e6140f28b8f8f6140e88e6143446139b69484612798565b51600f0b92612798565b94146102245761436d614368614373925f03600f0b6146aa565b614613565b84612f71565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580614504575b1561022457600f0b5f8113156144f257613ff96143c79161470c565b9288888c6143d58282612798565b51600f0b87600f0b1361444a576144049450614440979593506143fb92508e9150612798565b51600f0b612f34565b61440e8b8b612798565b90600f0b905261442b82614422888c612798565b51600f0b614655565b614435878b612798565b90600f0b9052612f34565b98600197886142dd565b61447694965061446d9395506140f2929161446491612798565b51600f0b612f71565b613b7f83612ed7565b915f83600f0b13156144e157506144a561449f61449a6144c995946144af94613001565b61470c565b86612f71565b6143fb8b8b612798565b6144b98a8a612798565b90600f0b90526102f68589612798565b985f6144d58589612798565b526001809801956142bf565b999050600191509a919a01956142bf565b50999050600191509a919a01956142bf565b506f7fffffffffffffffffffffffffffffff8113156143ab565b8061454161452e6001938a612798565b51600f0b61453b8c614613565b90612f71565b61454b8289612798565b90600f0b905201614269565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4275726e20746f6f206c617267650000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4275726e20746f6f20736d616c6c0000000000000000000000000000000000006044820152fd5b600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b677fffffffffffffff81116102245760401b600f0b90565b600f0b68400000000000000000811215610224577fffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000811261470757700171547652b82fe1777d0ffda0d23a7d12612574910260801d600f0b614839565b505f90565b600f0b5f811315610224575f90806801000000000000000082121561482c575b806401000000006002921215614820575b62010000811215614814575b610100811215614808575b60108112156147fc575b60048112156147f1575b12156147e7575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f83136147cb57506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d90565b8002908160ff1c9182607f011c918302019160011d91906147a6565b906001019061476f565b92810192811d614768565b6004938401931d61475e565b6008938401931d614754565b6010938401931d614749565b6020938401931d61473d565b506040915080821d61472c565b80600f0b68400000000000000000811215610224577fffffffffffffffffffffffffffffffffffffffffffffffc000000000000000008112612cb8576f80000000000000000000000000000000915f6780000000000000008216600f0b13615435575b5f6740000000000000008216600f0b13615418575b5f6720000000000000008216600f0b136153fb575b5f6710000000000000008216600f0b136153de575b5f6708000000000000008216600f0b136153c1575b5f6704000000000000008216600f0b136153a4575b5f6702000000000000008216600f0b13615387575b5f6701000000000000008216600f0b1361536a575b5f66800000000000008216600f0b1361534d575b5f66400000000000008216600f0b13615330575b5f66200000000000008216600f0b13615313575b5f66100000000000008216600f0b136152f6575b5f66080000000000008216600f0b136152d9575b5f66040000000000008216600f0b136152bc575b5f66020000000000008216600f0b1361529f575b5f66010000000000008216600f0b13615282575b5f658000000000008216600f0b13615265575b5f654000000000008216600f0b13615248575b5f652000000000008216600f0b1361522b575b5f651000000000008216600f0b1361520e575b5f650800000000008216600f0b136151f1575b5f650400000000008216600f0b136151d4575b5f650200000000008216600f0b136151b7575b5f650100000000008216600f0b1361519a575b5f6480000000008216600f0b1361517d575b5f6440000000008216600f0b13615160575b5f6420000000008216600f0b13615143575b5f6410000000008216600f0b13615126575b5f6408000000008216600f0b13615109575b5f6404000000008216600f0b136150ec575b5f6402000000008216600f0b136150cf575b5f6401000000008216600f0b136150b2575b5f63800000008216600f0b13615095575b5f63400000008216600f0b13615078575b5f63200000008216600f0b1361505b575b5f63100000008216600f0b1361503e575b5f63080000008216600f0b13615021575b5f63040000008216600f0b13615004575b5f63020000008216600f0b13614fe7575b5f63010000008216600f0b13614fca575b5f628000008216600f0b13614fad575b5f624000008216600f0b13614f90575b5f622000008216600f0b13614f73575b5f621000008216600f0b13614f56575b5f620800008216600f0b13614f39575b5f620400008216600f0b13614f1c575b5f620200008216600f0b13614eff575b5f620100008216600f0b13614ee2575b5f6180008216600f0b13614ec5575b5f6140008216600f0b13614ea8575b5f6120008216600f0b13614e8b575b5f6110008216600f0b13614e6e575b5f6108008216600f0b13614e51575b5f6104008216600f0b13614e34575b5f6102008216600f0b13614e17575b5f6101008216600f0b13614dfa575b5f60808216600f0b13614ddd575b5f60408216600f0b13614dc0575b5f60208216600f0b13614da3575b5f60108216600f0b13614d86575b5f60088216600f0b13614d69575b5f60048216600f0b13614d4c575b5f60028216600f0b13614d2e575b60015f9116600f0b13614d11575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161022457600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c90614ce7565b7001000000000000000162e42fefa39ef35890920260801c91614cd9565b9170010000000000000002c5c85fdf473de6b20260801c91614ccb565b91700100000000000000058b90bfbe8e7bcd6d0260801c91614cbd565b917001000000000000000b17217f7d1cf79afa0260801c91614caf565b91700100000000000000162e42fefa39ef366f0260801c91614ca1565b917001000000000000002c5c85fdf473de6eca0260801c91614c93565b9170010000000000000058b90bfbe8e7bce5440260801c91614c85565b91700100000000000000b17217f7d1cf79e9490260801c91614c77565b9170010000000000000162e42fefa39ef44d910260801c91614c68565b91700100000000000002c5c85fdf473dea871f0260801c91614c59565b917001000000000000058b90bfbe8e7bdcbe2e0260801c91614c4a565b9170010000000000000b17217f7d1cf7d83c1a0260801c91614c3b565b917001000000000000162e42fefa39f02b772c0260801c91614c2c565b9170010000000000002c5c85fdf473e242ea380260801c91614c1d565b91700100000000000058b90bfbe8e7cc35c3f00260801c91614c0e565b917001000000000000b17217f7d1cfb72b45e10260801c91614bff565b91700100000000000162e42fefa39fe95583c20260801c91614bef565b917001000000000002c5c85fdf4741bea6e77e0260801c91614bdf565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c91614bcf565b91700100000000000b17217f7d1d351a389d400260801c91614bbf565b9170010000000000162e42fefa3ae53369388c0260801c91614baf565b91700100000000002c5c85fdf477b662b269450260801c91614b9f565b917001000000000058b90bfbe8f71cb4e4b33d0260801c91614b8f565b9170010000000000b17217f7d20cf927c8e94c0260801c91614b7f565b917001000000000162e42fefa494f1478fde050260801c91614b6e565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c91614b5d565b91700100000000058b90bfbe9ddbac5e109cce0260801c91614b4c565b917001000000000b17217f7d5a7716bba4a9ae0260801c91614b3b565b91700100000000162e42fefb2fed257559bdaa0260801c91614b2a565b917001000000002c5c85fdf84bd62ae30a74cc0260801c91614b19565b9170010000000058b90bfbf8479bd5a81b51ad0260801c91614b08565b91700100000000b17217f80f4ef5aadda455540260801c91614af7565b9170010000000162e42ff0999ce3541b9fffcf0260801c91614ae5565b91700100000002c5c85fe31f35a6a30da1be500260801c91614ad3565b917001000000058b90bfcdee5acd3c1cedc8230260801c91614ac1565b9170010000000b17217fba9c739aa5819f44f90260801c91614aaf565b917001000000162e42fff037df38aa2b219f060260801c91614a9d565b9170010000002c5c8601cc6b9e94213c72737a0260801c91614a8b565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91614a79565b917001000000b1721835514b86e6d96efd1bfe0260801c91614a67565b91700100000162e430e5a18f6119e3c02282a50260801c91614a54565b917001000002c5c863b73f016468f6bac5ca2b0260801c91614a41565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91614a2e565b91700100000b1721bcfc99d9f890ea069117630260801c91614a1b565b9170010000162e43f4f831060e02d839a9d16d0260801c91614a08565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c916149f5565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c916149e2565b9170010000b17255775c040618bf4a4ade83fc0260801c916149cf565b917001000162e525ee054754457d59952920260260801c916149bb565b9170010002c5cc37da9491d0985c348c68e7b30260801c916149a7565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91614993565b917001000b175effdc76ba38e31671ca9397250260801c9161497f565b91700100162f3904051fa128bca9c55c31e5df0260801c9161496b565b917001002c605e2e8cec506d21bfc89a23a00f0260801c91614957565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c91614943565b91700100b1afa5abcbed6129ab13ec11dc95430260801c9161492f565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c9161491a565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c91614905565b917001059b0d31585743ae7c548eb68ca417fd0260801c916148f0565b9170010b5586cf9890f6298b92b71842a983630260801c916148db565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c916148c6565b917001306fe0a31b7152de8d5a46305c85edec0260801c916148b1565b6fb504f333f9de6484597d89b3754abe9f925061489c56fea2646970667358221220ea887eebf5245bf1d7b422a689af5404eabe088a83509f6cc5cc6c3f614d2d7e64736f6c634300081e0033","sourceMap":"962:27112:53:-:0;;;;;;;;;;;;;-1:-1:-1;;962:27112:53;;;;-1:-1:-1;;;;;962:27112:53;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;962:27112:53;;;;;;2365:1:29;1505:66;2365:1;1149:24:50;;962:27112:53;;;;;;;;1149:24:50;962:27112:53;;;;;;;;;;;;;;;;;-1:-1:-1;962:27112:53;;;;;;-1:-1:-1;962:27112:53;;;;;-1:-1:-1;962:27112:53","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c8063228fa850146124535780633dd3c80514611d5c5780636863f5bc146119a55780638d01fa4414611483578063b3f1c93d14611009578063c5eabfb914610831578063cdc2468b14610803578063e9f317f0146102285763f16b7c261461007c575f80fd5b346102245761008a366125fe565b94919080949394518410156101c657821561016857851561010a576100dc846100d46100e3946100fd976100c360409b6100ea99613689565b9160208151600f0b910151906141fe565b939050612798565b5190612e7c565b9283612c31565b50826100f882809511612abd565b61295c565b9082519182526020820152f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6275726e53776170416d6f756e74733a20656d70747920737570706c790000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6275726e53776170416d6f756e74733a207a65726f206c7000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6275726e53776170416d6f756e74733a206964780000000000000000000000006044820152fd5b5f80fd5b3461022457610236366125fe565b925f9594959291925082518510156107a5578515610747576020820191825151156106e9578115159387856106b8575b61027b906102748984612798565b5190613689565b5f81600f0b13156106345761029e6102a691896102ad9551600f0b88519061397d565b989092612798565b51906141c9565b9081156105b0575f9361055b575b50826102c69161294f565b948515159081610550575b50156104cc5751935f92835b8651851015610308576103006001916102f6878a612798565b51600f0b90612f34565b9401936102dd565b90855f83600f0b131561046e5761032b6103309161032585612e62565b94612f34565b612e62565b91816103c3575050915b82156103655761036190604051938493846040919493926060820195825260208201520152565b0390f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761704d696e74416d6f756e74733a207a65726f204c50206d696e746564006044820152fd5b90918115610410578180821115610407576103dd9161295c565b915b82156103fd576103f7926103f2916127d9565b6127ec565b9161033a565b5050505f9161033a565b50505f916103df565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f737761704d696e74416d6f756e74733a206f6c645363616c6564207a65726f006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f737761704d696e74416d6f756e74733a207a65726f20746f74616c00000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f737761704d696e74416d6f756e74733a207472616e736665722065786365656460448201527f73206d61780000000000000000000000000000000000000000000000000000006064820152fd5b9050851115866102d1565b816105679294506127d9565b620f423f810180911161058357620f42409004916102c66102bb565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f737761704d696e74416d6f756e74733a20696e707574207a65726f206166746560448201527f7220696e7465726e616c20636f6e76657273696f6e00000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f737761704d696e74416d6f756e74733a20696e70757420746f6f20736d616c6c60448201527f20616674657220666565000000000000000000000000000000000000000000006064820152fd5b506106c383896127d9565b620f423f8101809111610583576106e2620f424061027b92048a61295c565b9050610266565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f737761704d696e74416d6f756e74733a20756e696e697420706f6f6c000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f737761704d696e74416d6f756e74733a20696e707574207a65726f00000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f737761704d696e74416d6f756e74733a206964780000000000000000000000006044820152fd5b346102245761036161081d61081736612523565b91612b22565b604051918291602083526020830190612577565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610224576108636125aa565b602435906044359081600f0b82036102245761088460ff600854161561288a565b61088c612bba565b600b5490600354158015610fff575b15610f7b576108a982612749565b936108b383612749565b925f5b818110610d54575050600a548551809103610b5e575b505f5b855181101561092457806108e560019288612798565b51600f0b61091c6108f5836129fd565b81939154906fffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b9055016108cf565b50835f610937610932612969565b612e37565b600f0b1315610b00577fffffffffffffffffffffffffffffffff0000000000000000000000000000000060095416906fffffffffffffffffffffffffffffffff16176009555f600954600f0b1315610aa25780610a7757507f6bc0553967b8bb727947c938555c0e061c3f96b629935c8f82a43b558dfb1c576109f3670de0b6b3a7640000935b84610a68575b73ffffffffffffffffffffffffffffffffffffffff6040519283925f8452606060208501526060840190612577565b9486604084015216930390a260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015610a38575b602083604051908152f35b5f80809381938290610a5f575b3390f115610a54578180610a2d565b6040513d5f823e3d90fd5b506108fc610a45565b610a72858561312a565b6109c4565b6109f37f6bc0553967b8bb727947c938555c0e061c3f96b629935c8f82a43b558dfb1c5791936109be565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4c4d53523a206b617070613e30000000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4c4d53523a20746f74616c207a65726f000000000000000000000000000000006044820152fd5b610b6790612749565b80519067ffffffffffffffff8211610d2757680100000000000000008211610d2757600a5482600a55808310610c90575b5060200190600a5f5260205f208160011c915f5b838110610c4257507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8116900380610be7575b5050506108cc565b925f935f5b818110610c0157505050015585808080610bdf565b9091946020610c386001928851600f0b908560041b6fffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b9601929101610bec565b5f5f5b60028110610c5a575083820155600101610bac565b86519096916001916020916fffffffffffffffffffffffffffffffff60078b901b81811b199092169216901b1792019601610c45565b600a5f5260205f206001808501811c8201920160011c019060108460041b1680610ccf575b505b818110610cc45750610b98565b5f8155600101610cb7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82549160200360031b1c16905589610cb5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6024602073ffffffffffffffffffffffffffffffffffffffff610d7684612907565b90549060031b1c16604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa908115610a54575f91610f4a575b508015610ec65780610e3b91610dd48489612798565b52610e1881610de285612937565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b610e2581610de2856128ef565b610e2e836128ef565b90549060031b1c90613689565b610e458289612798565b90600f0b90525f610e568289612798565b51600f0b1315610e68576001016108b6565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f696e697469616c4d696e743a207a65726f20696e7465726e616c2071000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f696e697469616c4d696e743a207a65726f20696e697469616c2062616c616e6360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152fd5b90506020813d8211610f73575b81610f646020938361246d565b81010312610224575188610dbe565b3d9150610f57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f696e697469616c4d696e743a20706f6f6c20616c726561647920696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152fd5b50600a541561089b565b60807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102245761103b6125aa565b6110436125cd565b906044359160643561105a60ff600854161561288a565b611062612bba565b8015908115611478575b501561141a57600b5460035480158015611410575b61138c57841561132e576110ac61109c61032b610932612969565b916110a5612a3d565b9087612b22565b915f5b8181106112d557506110c081612749565b905f5b81811061128857505061032b816109326110dc93613047565b818082111561127f576110ee9161295c565b905b8115611276576103f2611105926003546127d9565b935b8415611218576201869f81029081046201869f0361058357620186a0900484106111ba578161117f8573ffffffffffffffffffffffffffffffffffffffff93611171827f6bc0553967b8bb727947c938555c0e061c3f96b629935c8f82a43b558dfb1c579761312a565b604051948594169684612a85565b0390a260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015610a3857602083604051908152f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6d696e743a20696e73756666696369656e74204c50206d696e746564000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6d696e743a207a65726f204c50206d696e7465640000000000000000000000006044820152fd5b50505f93611107565b50505f906110f0565b806112bf6112b261129a600194612937565b90549060031b1c6112ab848a612798565b519061294f565b610e2581610de285612937565b6112c98286612798565b90600f0b9052016110c3565b806112e260019286612798565b516112ee575b016110af565b61132973ffffffffffffffffffffffffffffffffffffffff61130f83612907565b90549060031b1c166113218388612798565b519089612cbe565b6112e8565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6d696e743a207a65726f204c5020616d6f756e740000000000000000000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f6d696e743a2075736520696e697469616c4d696e7420666f7220706f6f6c206960448201527f6e697469616c697a6174696f6e000000000000000000000000000000000000006064820152fd5b50600a5415611081565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f6d696e743a20646561646c696e652065786365656465640000000000000000006044820152fd5b90504211158461106c565b34610224576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610224576114bb6125aa565b6114c36125cd565b9060443591606435916084359360a4359182151583036102245760e435936114e9612bba565b6114f860ff600854161561288a565b600b5496878710156119475783156118e95780159081156118de575b5015611880576003548015611822576115486115336115609286613689565b88600954600f0b611542612969565b906141fe565b9050611553886128ef565b90549060031b1c90612e7c565b9461157e61157060c43588612c31565b50876100f882809a11612abd565b965f9180151580611819575b6117a5575b506115b88573ffffffffffffffffffffffffffffffffffffffff861695863303611760576135b1565b6115ea73ffffffffffffffffffffffffffffffffffffffff6115d983612907565b90549060031b1c16968985896131c1565b6115f389612749565b905f5b8a81106117075750506001985f5b8181106116ca575b50509161168973ffffffffffffffffffffffffffffffffffffffff927f8c012c6148e8ecc34b864721470dcc1e938d162c498b7d28961a8a78238cfe139460409b5f146116bc575061165c61347c565b611666818a61295c565b8b51978852602088018b9052604088015260608701529116939081906080820190565b0390a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005582519182526020820152f35b6116c590613047565b61165c565b6116d48184612798565b51600f0b6116e457600101611604565b505f9950611689905073ffffffffffffffffffffffffffffffffffffffff61160c565b80611736611716600193612937565b90549060031b1c868d86851461174c575b5050610e2581610de285612937565b6117408286612798565b90600f0b9052016115f6565b6100f8906117599361295c565b868d611727565b865f52600260205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f526020526117a06117998360405f205461295c565b33836134dc565b6135b1565b620f42409192506117b690886127d9565b0490816117c4575b8961158f565b6118146117d08261291f565b6117e08583548360031b1c61294f565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b6117be565b5087151561158a565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6275726e537761703a20656d70747920737570706c79000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6275726e537761703a20646561646c696e6500000000000000000000000000006044820152fd5b905042111588611514565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6275726e537761703a207a65726f206c700000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6275726e537761703a20696478000000000000000000000000000000000000006044820152fd5b346102245760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610224576119dc6125aa565b6119e46125cd565b6084359160443591606435841515850361022457611a00612bba565b8015908115611d51575b5015611cf357600b54928015611c95576003548015611c3757611a3990611a32969596612a3d565b9083612823565b935f5b868110611bd8575050611a4e85612749565b5f5b868110611b9257506001955f5b818110611b55575b505091611adb73ffffffffffffffffffffffffffffffffffffffff927f3f84ed8aa11ed632de380466083280b4c5da668f12695b08636d7848eaf896b494610361985f14611b475750611ab661347c565b838616803303611b16575b50611acc81876135b1565b86604051948594169684612a85565b0390a260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055604051918291602083526020830190612577565b5f52600260205260405f208433165f52602052611b41611b3a8260405f205461295c565b33886134dc565b88611ac1565b611b5090613047565b611ab6565b611b5f8184612798565b51600f0b611b6f57600101611a5d565b505f9650611adb905073ffffffffffffffffffffffffffffffffffffffff611a65565b80611bbf6112b2611ba76001949a999a612937565b90549060031b1c611bb8848c612798565b519061295c565b611bc98285612798565b90600f0b905201959495611a50565b80611be7600192889998612798565b51611bf6575b01959495611a3c565b611c328373ffffffffffffffffffffffffffffffffffffffff611c1884612907565b90549060031b1c1687611c2b858d612798565b51916131c1565b611bed565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6275726e3a20656d70747920737570706c7900000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6275726e3a207a65726f206c70000000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f6275726e3a20646561646c696e652065786365656465640000000000000000006044820152fd5b905042111585611a0a565b60e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022457611d8e6125aa565b611d966125cd565b604435606435916084359360a4359360c43592611db860ff600854161561288a565b611dc0612bba565b600b5496878610156123f557821561239757801590811561238c575b501561232e57600a54156122d057611e02611df78784612c31565b9050610e2e876128ef565b945f86600f0b131561224c57611e2a611e429682600954600f0b611e24612969565b9061397d565b9690611e35836128ef565b90549060031b1c90612c53565b9687156121c857611e539088612c85565b95611e5e878961294f565b9384151590816121bd575b501561215f57611e9f8473ffffffffffffffffffffffffffffffffffffffff611e9185612907565b90549060031b1c1687612cbe565b5f9580151580612156575b612116575b50611ed8611ebd878661295c565b6117e0611ec985612937565b91909283548360031b1c61294f565b611ee3610932612969565b98611ef7611ef08b612e62565b928b612f34565b91611f0183612e62565b6003549091816120d4575050995b8a1561207657611f1e82612749565b925f5b838110612038575050505091611fbf73ffffffffffffffffffffffffffffffffffffffff611f838194611f747fcbf41a060d7827197acec8e5ef3abf36d633e77060f7aec03943608d1cd84ebe97613047565b611f7e8d8661312a565b612907565b90549060031b1c1696611f96818a61295c565b8b8560405196879616991697859094939260609260808301968352602083015260408201520152565b0390a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015612013575b505061036190604051938493846040919493926060820195825260208201520152565b5f8080938193829061202f575b3390f115610a54578380611ff0565b506108fc612020565b806120608461205b8561204c6001966129fd565b90549060031b1c600f0b612f71565b613001565b61206a8288612798565b90600f0b905201611f21565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f737761704d696e743a207a65726f204c50206d696e74656400000000000000006044820152fd5b9091818082111561210d576120e89161295c565b915b8215612103576120fd926103f2916127d9565b99611f0f565b5050505f99611f0f565b50505f916120ea565b620f424091965061212790886127d9565b049485612135575b89611eaf565b6121516121418361291f565b6117e08983548360031b1c61294f565b61212f565b50871515611eaa565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f737761704d696e743a207472616e736665722065786365656473206d617800006044820152fd5b90508411158a611e69565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f737761704d696e743a20696e707574207a65726f20616674657220696e74657260448201527f6e616c20636f6e76657273696f6e0000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f737761704d696e743a20696e70757420746f6f20736d616c6c2061667465722060448201527f66656500000000000000000000000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f737761704d696e743a20756e696e697420706f6f6c00000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f737761704d696e743a20646561646c696e6500000000000000000000000000006044820152fd5b905042111588611ddc565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f737761704d696e743a20696e707574207a65726f0000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f737761704d696e743a20696478000000000000000000000000000000000000006044820152fd5b346102245761036161081d61246736612523565b91612823565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610d2757604052565b67ffffffffffffffff8111610d275760051b60200190565b9080601f830112156102245781356124dd816124ae565b926124eb604051948561246d565b81845260208085019260051b82010192831161022457602001905b8282106125135750505090565b8135815260209182019101612506565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102245760043591602435916044359067ffffffffffffffff821161022457612574916004016124c6565b90565b90602080835192838152019201905f5b8181106125945750505090565b8251845260209384019390920191600101612587565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361022457565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361022457565b359081600f0b820361022457565b60c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102245760043591602435916044359160643567ffffffffffffffff81116102245760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc828503011261022457604051906040820182811067ffffffffffffffff821117610d275760405261269c816004016125f0565b825260248101359067ffffffffffffffff8211610224570183602382011215610224576004810135906126ce826124ae565b916126dc604051938461246d565b808352602060048185019260051b840101019186831161022457602401905b828210612731575050506020820152916084359067ffffffffffffffff82116102245761272a916004016124c6565b9060a43590565b6020809161273e846125f0565b8152019101906126fb565b90612753826124ae565b612760604051918261246d565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061278e82946124ae565b0190602036910137565b80518210156127ac5760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8181029291811591840414171561058357565b81156127f6570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b9082519161283083612749565b9382158015612882575b61287b575f5b84811061284f57505050505090565b8061286a856103f261286360019587612798565b51876127d9565b6128748289612798565b5201612840565b5050505090565b50831561283a565b1561289157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b600d548110156127ac57600d5f5260205f2001905f90565b600b548110156127ac57600b5f5260205f2001905f90565b600c548110156127ac57600c5f5260205f2001905f90565b600f548110156127ac57600f5f5260205f2001905f90565b9190820180921161058357565b9190820391821161058357565b60405190600a548083528260208101600a5f5260205f20925f905b8060018301106129d1576129aa9454918181106129bd575b106129ac575b50038361246d565b565b60801d600f0b81526020015f6129a2565b92602060019184600f0b815201930161299c565b9160029193506040600191865480600f0b825260801d600f0b6020820152019401920185929391612984565b90600a548210156127ac57600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b60405190600f548083528260208101600f5f5260205f20925f5b818110612a6c5750506129aa9250038361246d565b8454835260019485019487945060209093019201612a57565b939291612ab89073ffffffffffffffffffffffffffffffffffffffff604093168652606060208701526060860190612577565b930152565b15612ac457565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6275726e53776170416d6f756e74733a206f7574707574207a65726f000000006044820152fd5b825190612b2e82612749565b9383158015612bb2575b61287b575f5b838110612b4d57505050505090565b612b6a85612b65612b5e8486612798565b51866127d9565b61294f565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820191821161058357612ba1866001936127ec565b612bab8289612798565b5201612b3e565b508215612b38565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005414612c095760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b91908015612c4d57612c466125749184612c85565b809361295c565b505f9190565b612c67612c608383612e7c565b9283613689565b90600f0b90600f0b12612c775790565b600181018091116105835790565b908015612cb857612c95916127d9565b620f424081019081811161058357620f423f0190811161058357620f4240900490565b50505f90565b9073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169173ffffffffffffffffffffffffffffffffffffffff82169183831480612e2d575b15612d6e57505050803b15610224575f906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af18015610a5457612d645750565b5f6129aa9161246d565b919390925073ffffffffffffffffffffffffffffffffffffffff604051937f23b872dd000000000000000000000000000000000000000000000000000000005f52166004523060245260445260205f60648180855af19060015f5114821615612e0e575b50906040525f60605215612de35750565b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6001821516612e24573b15153d1516165f612dd2565b823d5f823e3d90fd5b5084341015612d18565b5f90815b8151831015612e5c57612e546001916102f68585612798565b920191612e3b565b91505090565b600f0b5f811261022457670de0b6b3a76400000260401c90565b8115612cb857600f0b5f8112610224576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116102245760401b81198111610224570190565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a575b1561022457600f0b90565b506f7fffffffffffffffffffffffffffffff811315612f0f565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b600f0b801561022457700100000000000000000000000000000000057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b90600f0b9081156102245760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b5f61305182612e37565b600f0b13156130cc578051600a915f5b82811061306e5750505050565b6130788183612798565b51600f0b9084548110156127ac57600191855f526130c460205f2083851c019160108460041b168354906fffffffffffffffffffffffffffffffff809160031b9316831b921b19161790565b905501613061565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a206e657720746f74616c207a65726f0000000000000000000000006044820152fd5b73ffffffffffffffffffffffffffffffffffffffff16908115613195577fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6020826131785f9460035461294f565b6003558484526001825260408420818154019055604051908152a3565b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b90919280613427575b1561335d575073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b15610224576040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081525f816024818380978960048401525af18015610a5457613348575b508180809481935af1903d15613342573d9067ffffffffffffffff821161331557604051916132a760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116018461246d565b825260203d92013e5b156132b757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526041600452fd5b506132b0565b6133559192505f9061246d565b5f905f613250565b9173ffffffffffffffffffffffffffffffffffffffff604051927fa9059cbb000000000000000000000000000000000000000000000000000000005f521660045260245260205f60448180865af19060015f5114821615613406575b604052156133c45750565b73ffffffffffffffffffffffffffffffffffffffff907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b90600181151661341e57823b15153d151616906133b9565b503d5f823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8216146131ca565b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000060095416600955600a545f600a55806134b35750565b600a5f52600160205f20910160011c8101905b8181106134d1575050565b5f81556001016134c6565b73ffffffffffffffffffffffffffffffffffffffff169081156135855773ffffffffffffffffffffffffffffffffffffffff169182156135595760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591835f526002825260405f20855f5282528060405f2055604051908152a3565b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b90919073ffffffffffffffffffffffffffffffffffffffff16801561365d57805f52600160205260405f205483811061362a576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef93858752600184520360408620558060035403600355604051908152a3565b91507fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b81156102245777ffffffffffffffffffffffffffffffffffffffffffffffff811161370157906136bb9160401b6127ec565b6fffffffffffffffffffffffffffffffff8111610224576fffffffffffffffffffffffffffffffff166f7fffffffffffffffffffffffffffffff811161022457600f0b90565b60c09181831c80936401000000008210156138a6575b600282620100006137a494101561389a575b61010081101561388e575b6010811015613882575b6004811015613877575b101561386f575b8360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b6127ec565b926fffffffffffffffffffffffffffffffff8411610224578160801c8402906fffffffffffffffffffffffffffffffff8316850290809460401b90828210613845575b5003928160801b9182851061381c575b60801c036138115761380992036127ec565b905b016136bb565b50505060019061380b565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906137f7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f6137e7565b60010161374f565b91810191811c613748565b6004928301921c61373e565b6008928301921c613734565b6010928301921c613729565b505060e082811c90613717565b156138ba57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b1561391f57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4c4d53523a20623c3d30000000000000000000000000000000000000000000006044820152fd5b90919392938251928382101561416b575f86600f0b131561410d576139a181612e37565b936139bb855f81600f0b13956139b6876138b3565b612f71565b906139ca5f83600f0b13613918565b6139d382612fb1565b916139dd82612749565b955f5b8381106140c357506510c6f7a0b5ed905f901561406557613a01898c613001565b916801000000000000000083600f0b12614054575b5f5b60408110613e39575b505f9b5f935b60408510613c09575b50505050505f955f935f5b848110613b05575b5050505050613af95791613a6b613a61613a7093613a769695612798565b51600f0b87612f71565b612f34565b93612f71565b915f83600f0b13801590613aec575b613a8d579190565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4c4d53523a207a65726f206f75747075740000000000000000000000000000006044820152606490fd5b505f81600f0b1315613a85565b5050505090505f905f90565b878103613b15575b600101613a3b565b613b2c613b228289612798565b51600f0b8d612f71565b5f81600f0b13613b3d575b50613b0d565b82613b4a919a929a612f71565b6820000000000000000081600f0b13613bf557613b69613b84916146aa565b613b7f613b768c87612798565b51600f0b612ed7565b614655565b5f81600f0b1315613bf557613ba690613b9d8b86612798565b51600f0b613001565b5f81600f0b1315613bf557613bbd613bc39161470c565b85612f71565b905f82600f0b12613be157600191613bda91612f34565b9890613b37565b985050505050505060015f80808080613a43565b509750505050505060015f80808080613a43565b68020000000000000000613c1d8286612f34565b60401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613e1f575b1561022457600f0b90898c8c5f915f905f905b8d8210613d01575b505015613ce2575050506f7fffffffffffffffffffffffffffffff5b83600f0b90600f0b135f14613cd95750935b82613ca28587614655565b600f0b1315613cc757603f8114613cbd575b60010193613a27565b929c508c92613cb4565b50505091995050975f80808080613a30565b94935092613c97565b613cf2613a6b91613cfc94612798565b51600f0b85612f71565b613c85565b9092839592949503613d1f575b50506001018c92918f918f92613c61565b8d613d37613d2d8585612798565b51600f0b89612f71565b5f81600f0b13613d49575b5050613d0e565b90613d5691969496612f71565b6820000000000000000081600f0b13613e0f57613d75613d82916146aa565b613b7f613b768885612798565b915f83600f0b1315613dff575090613b9d85613d9d93612798565b8d5f82600f0b1315613df05750613db6613dbc9161470c565b8b612f71565b908d5f83600f0b12613de15750600191613dd591612f34565b9290508c8f8d5f613d42565b93509150508c60018f80613c69565b93505090508c60018f80613c69565b9450505090508c60018f80613c69565b5050925090508c60018f80613c69565b506f7fffffffffffffffffffffffffffffff811315613c4e565b925f5f5f5b888110613f36575b5015613f1657506f7fffffffffffffffffffffffffffffff5b8d600f0b90600f0b12801590613efe575b613ef857600f0b60411b60401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580613ede575b1561022457600f0b926a10000000000000000000008413613ecb575b600101613a18565b6a10000000000000000000009350613ec3565b506f7fffffffffffffffffffffffffffffff811315613ea7565b92613a21565b506a100000000000000000000081600f0b1215613e70565b613f3190613a6b613f278c8c612798565b51600f0b84612f71565b613e5f565b839e9c9a98969f9d9b9980989695948b8303613f65575b50506001019e9597999b9d92939496989a9c9e613e3e565b613f7d90613f73848d612798565b51600f0b90612f71565b5f81600f0b13613f8f575b508f613f4d565b90613f9c91949294612f71565b6820000000000000000081600f0b1361403a578b613b7f613b7686613fc3613fc9956146aa565b93612798565b5f81600f0b131561403a57613fe290613b9d858e612798565b5f81600f0b131561403a57613ff9613fff9161470c565b87612f71565b905f82600f0b126140205760019161401691612f34565b929050875f613f88565b9250505060019d9496989a9c9192939597999b9d5f613e46565b5091505060019d9496989a9c9192939597999b9d5f613e46565b680100000000000000009250613a16565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4c4d53523a20737761704d696e7420646567656e6572617465000000000000006044820152fd5b6001906140f76140f2876139b66140da8c8c612798565b51600f0b6140e8868d612798565b51600f0b90614655565b6146aa565b614101828b612798565b90600f0b9052016139e0565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4c4d53523a20616d6f756e74203c3d20300000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4c4d53523a2069647800000000000000000000000000000000000000000000006044820152fd5b6141ee6141df6141d98484612e7c565b93614692565b6141e884614692565b92612f71565b90600f0b90600f0b13612c775790565b93919383600f0b5f8113156145b55768010000000000000000126145575761423861422883612e37565b80926139b65f83600f0b136138b3565b906142475f83600f0b13613918565b61425082612fb1565b61425c84519287612f71565b9661426683612749565b935f5b84811061451e575061427e613d2d8388612798565b975f89600f0b13965f5b8681106142b25750505050505050501580156142a5575b613a8d57565b505f82600f0b131561429f565b8481036142c5575b600101955b95614288565b6142d2613f278284612798565b5f81600f0b136142e3575b506142ba565b6142f387829d949d9b939b612f71565b9182600f0b926820000000000000000084136144f2577fffffffffffffffffffffffffffffffff8000000000000000000000000000000061434e6140f28b8f8f6140e88e6143446139b69484612798565b51600f0b92612798565b94146102245761436d614368614373925f03600f0b6146aa565b614613565b84612f71565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580614504575b1561022457600f0b5f8113156144f257613ff96143c79161470c565b9288888c6143d58282612798565b51600f0b87600f0b1361444a576144049450614440979593506143fb92508e9150612798565b51600f0b612f34565b61440e8b8b612798565b90600f0b905261442b82614422888c612798565b51600f0b614655565b614435878b612798565b90600f0b9052612f34565b98600197886142dd565b61447694965061446d9395506140f2929161446491612798565b51600f0b612f71565b613b7f83612ed7565b915f83600f0b13156144e157506144a561449f61449a6144c995946144af94613001565b61470c565b86612f71565b6143fb8b8b612798565b6144b98a8a612798565b90600f0b90526102f68589612798565b985f6144d58589612798565b526001809801956142bf565b999050600191509a919a01956142bf565b50999050600191509a919a01956142bf565b506f7fffffffffffffffffffffffffffffff8113156143ab565b8061454161452e6001938a612798565b51600f0b61453b8c614613565b90612f71565b61454b8289612798565b90600f0b905201614269565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4275726e20746f6f206c617267650000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4275726e20746f6f20736d616c6c0000000000000000000000000000000000006044820152fd5b600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612f1a571561022457600f0b90565b677fffffffffffffff81116102245760401b600f0b90565b600f0b68400000000000000000811215610224577fffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000811261470757700171547652b82fe1777d0ffda0d23a7d12612574910260801d600f0b614839565b505f90565b600f0b5f811315610224575f90806801000000000000000082121561482c575b806401000000006002921215614820575b62010000811215614814575b610100811215614808575b60108112156147fc575b60048112156147f1575b12156147e7575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f83136147cb57506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d90565b8002908160ff1c9182607f011c918302019160011d91906147a6565b906001019061476f565b92810192811d614768565b6004938401931d61475e565b6008938401931d614754565b6010938401931d614749565b6020938401931d61473d565b506040915080821d61472c565b80600f0b68400000000000000000811215610224577fffffffffffffffffffffffffffffffffffffffffffffffc000000000000000008112612cb8576f80000000000000000000000000000000915f6780000000000000008216600f0b13615435575b5f6740000000000000008216600f0b13615418575b5f6720000000000000008216600f0b136153fb575b5f6710000000000000008216600f0b136153de575b5f6708000000000000008216600f0b136153c1575b5f6704000000000000008216600f0b136153a4575b5f6702000000000000008216600f0b13615387575b5f6701000000000000008216600f0b1361536a575b5f66800000000000008216600f0b1361534d575b5f66400000000000008216600f0b13615330575b5f66200000000000008216600f0b13615313575b5f66100000000000008216600f0b136152f6575b5f66080000000000008216600f0b136152d9575b5f66040000000000008216600f0b136152bc575b5f66020000000000008216600f0b1361529f575b5f66010000000000008216600f0b13615282575b5f658000000000008216600f0b13615265575b5f654000000000008216600f0b13615248575b5f652000000000008216600f0b1361522b575b5f651000000000008216600f0b1361520e575b5f650800000000008216600f0b136151f1575b5f650400000000008216600f0b136151d4575b5f650200000000008216600f0b136151b7575b5f650100000000008216600f0b1361519a575b5f6480000000008216600f0b1361517d575b5f6440000000008216600f0b13615160575b5f6420000000008216600f0b13615143575b5f6410000000008216600f0b13615126575b5f6408000000008216600f0b13615109575b5f6404000000008216600f0b136150ec575b5f6402000000008216600f0b136150cf575b5f6401000000008216600f0b136150b2575b5f63800000008216600f0b13615095575b5f63400000008216600f0b13615078575b5f63200000008216600f0b1361505b575b5f63100000008216600f0b1361503e575b5f63080000008216600f0b13615021575b5f63040000008216600f0b13615004575b5f63020000008216600f0b13614fe7575b5f63010000008216600f0b13614fca575b5f628000008216600f0b13614fad575b5f624000008216600f0b13614f90575b5f622000008216600f0b13614f73575b5f621000008216600f0b13614f56575b5f620800008216600f0b13614f39575b5f620400008216600f0b13614f1c575b5f620200008216600f0b13614eff575b5f620100008216600f0b13614ee2575b5f6180008216600f0b13614ec5575b5f6140008216600f0b13614ea8575b5f6120008216600f0b13614e8b575b5f6110008216600f0b13614e6e575b5f6108008216600f0b13614e51575b5f6104008216600f0b13614e34575b5f6102008216600f0b13614e17575b5f6101008216600f0b13614dfa575b5f60808216600f0b13614ddd575b5f60408216600f0b13614dc0575b5f60208216600f0b13614da3575b5f60108216600f0b13614d86575b5f60088216600f0b13614d69575b5f60048216600f0b13614d4c575b5f60028216600f0b13614d2e575b60015f9116600f0b13614d11575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161022457600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c90614ce7565b7001000000000000000162e42fefa39ef35890920260801c91614cd9565b9170010000000000000002c5c85fdf473de6b20260801c91614ccb565b91700100000000000000058b90bfbe8e7bcd6d0260801c91614cbd565b917001000000000000000b17217f7d1cf79afa0260801c91614caf565b91700100000000000000162e42fefa39ef366f0260801c91614ca1565b917001000000000000002c5c85fdf473de6eca0260801c91614c93565b9170010000000000000058b90bfbe8e7bce5440260801c91614c85565b91700100000000000000b17217f7d1cf79e9490260801c91614c77565b9170010000000000000162e42fefa39ef44d910260801c91614c68565b91700100000000000002c5c85fdf473dea871f0260801c91614c59565b917001000000000000058b90bfbe8e7bdcbe2e0260801c91614c4a565b9170010000000000000b17217f7d1cf7d83c1a0260801c91614c3b565b917001000000000000162e42fefa39f02b772c0260801c91614c2c565b9170010000000000002c5c85fdf473e242ea380260801c91614c1d565b91700100000000000058b90bfbe8e7cc35c3f00260801c91614c0e565b917001000000000000b17217f7d1cfb72b45e10260801c91614bff565b91700100000000000162e42fefa39fe95583c20260801c91614bef565b917001000000000002c5c85fdf4741bea6e77e0260801c91614bdf565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c91614bcf565b91700100000000000b17217f7d1d351a389d400260801c91614bbf565b9170010000000000162e42fefa3ae53369388c0260801c91614baf565b91700100000000002c5c85fdf477b662b269450260801c91614b9f565b917001000000000058b90bfbe8f71cb4e4b33d0260801c91614b8f565b9170010000000000b17217f7d20cf927c8e94c0260801c91614b7f565b917001000000000162e42fefa494f1478fde050260801c91614b6e565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c91614b5d565b91700100000000058b90bfbe9ddbac5e109cce0260801c91614b4c565b917001000000000b17217f7d5a7716bba4a9ae0260801c91614b3b565b91700100000000162e42fefb2fed257559bdaa0260801c91614b2a565b917001000000002c5c85fdf84bd62ae30a74cc0260801c91614b19565b9170010000000058b90bfbf8479bd5a81b51ad0260801c91614b08565b91700100000000b17217f80f4ef5aadda455540260801c91614af7565b9170010000000162e42ff0999ce3541b9fffcf0260801c91614ae5565b91700100000002c5c85fe31f35a6a30da1be500260801c91614ad3565b917001000000058b90bfcdee5acd3c1cedc8230260801c91614ac1565b9170010000000b17217fba9c739aa5819f44f90260801c91614aaf565b917001000000162e42fff037df38aa2b219f060260801c91614a9d565b9170010000002c5c8601cc6b9e94213c72737a0260801c91614a8b565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91614a79565b917001000000b1721835514b86e6d96efd1bfe0260801c91614a67565b91700100000162e430e5a18f6119e3c02282a50260801c91614a54565b917001000002c5c863b73f016468f6bac5ca2b0260801c91614a41565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91614a2e565b91700100000b1721bcfc99d9f890ea069117630260801c91614a1b565b9170010000162e43f4f831060e02d839a9d16d0260801c91614a08565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c916149f5565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c916149e2565b9170010000b17255775c040618bf4a4ade83fc0260801c916149cf565b917001000162e525ee054754457d59952920260260801c916149bb565b9170010002c5cc37da9491d0985c348c68e7b30260801c916149a7565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91614993565b917001000b175effdc76ba38e31671ca9397250260801c9161497f565b91700100162f3904051fa128bca9c55c31e5df0260801c9161496b565b917001002c605e2e8cec506d21bfc89a23a00f0260801c91614957565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c91614943565b91700100b1afa5abcbed6129ab13ec11dc95430260801c9161492f565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c9161491a565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c91614905565b917001059b0d31585743ae7c548eb68ca417fd0260801c916148f0565b9170010b5586cf9890f6298b92b71842a983630260801c916148db565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c916148c6565b917001306fe0a31b7152de8d5a46305c85edec0260801c916148b1565b6fb504f333f9de6484597d89b3754abe9f925061489c56fea2646970667358221220ea887eebf5245bf1d7b422a689af5404eabe088a83509f6cc5cc6c3f614d2d7e64736f6c634300081e0033","sourceMap":"962:27112:53:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;21361:32;;962:27112;;;21436:12;;962:27112;;21495:16;;962:27112;;22028:24;21618:42;21778:108;27692:32;21618:42;22210:23;21618:42;;962:27112;21618:42;22075:39;21618:42;;:::i;:::-;962:27112;21829:19;962:27112;;;;21829:19;;;21778:108;;:::i;:::-;22028:24;;;;:::i;:::-;962:27112;27692:32;;:::i;:::-;22075:39;;;:::i;:::-;22132:23;;22124:64;22132:23;;;;22124:64;:::i;:::-;22210:23;:::i;:::-;962:27112;;;;;;21829:19;962:27112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;12617:31;;962:27112;;;12691:15;;962:27112;;12756:19;;;;;;962:27112;12756:30;962:27112;;12983:14;;;;12935:34;12983:14;12979:164;;962:27112;5432:32:50;13271:23:53;;;;;:::i;:::-;962:27112;5432:32:50;;:::i;:::-;962:27112:53;;;;13313:28;962:27112;;;13568:122;13882:23;962:27112;;13836:70;962:27112;;;;13619:19;;13568:122;;:::i;:::-;13882:23;;;;:::i;:::-;962:27112;13836:70;;:::i;:::-;13924:16;;;962:27112;;;14086:111;;;962:27112;14217:20;;;;;:::i;:::-;14255:12;;;;:39;;;;962:27112;;;;;14462:19;;962:27112;;;27988:3;962:27112;;27966:20;;;;;28013:21;962:27112;28021:12;;;;;:::i;:::-;962:27112;;;28013:21;;:::i;:::-;27988:3;962:27112;27951:13;;;27966:20;;;962:27112;;;;14500:20;962:27112;;;14649:34;14713:38;14582;;;;:::i;:::-;14649:34;;:::i;:::-;14713:38;:::i;:::-;14766:17;;;;14891:20;;14762:548;;15328:12;;962:27112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12756:19;962:27112;;;;;;;;;;;;;;;14762:548;14950:13;;;;962:27112;;15030:21;;;;;;;15056;;;:::i;:::-;15029:53;;15100:9;;;;15200:34;15201:20;;;;:::i;:::-;15200:34;:::i;:::-;15096:204;14762:548;;15096:204;15273:12;;;962:27112;15096:204;14762:548;;15029:53;;;962:27112;15029:53;;;962:27112;;;;;;;12756:19;962:27112;;;;;;;;;;;;;;;;;;;;;;12756:19;962:27112;;;;;;;;;;;;;;;;;;;;;;12756:19;962:27112;;;;;;;;;;;;;;;;;;;;14255:39;14271:23;;;;;14255:39;;;14086:111;14129:25;;;;;;:::i;:::-;14157:6;962:27112;;;;;;;14167:7;962:27112;;;14217:20;14086:111;;962:27112;;;;;;;;;;;;;;;;;12756:19;962:27112;;;;;;;;;;;;;;;;;;;;;;;;;;;12756:19;962:27112;;;;;;;;;;;;;;;;;;;;12979:164;13025:24;;;;;:::i;:::-;13052:6;962:27112;;;;;;;13110:22;13062:7;5432:32:50;962:27112:53;;13110:22;;:::i;:::-;12979:164;;;;962:27112;;;;;;;12756:19;962:27112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;3684:27:50;962:27112:53;3693:7:50;962:27112:53;;3692:8:50;3684:27;:::i;:::-;2989:103:29;;:::i;:::-;1412:7:53;962:27112;1890:4:50;1521:12:53;1890:4:50;1521:17:53;:48;;;;962:27112;;;;1898:15;;;:::i;:::-;1957:16;;;;:::i;:::-;1989:10;962:27112;2001:5;;;;;;962:27112;;1197:11:41;962:27112:53;;;1197:45:41;;;1193:127;;1984:660:53;1334:10:41;962:27112:53;1334:10:41;962:27112:53;;1346:27:41;;;;;1408:19;;962:27112:53;1408:19:41;;;:::i;:::-;962:27112:53;;;;1391:14:41;;;:::i;:::-;962:27112:53;;;;;;;;;;;;;;;;;;;;;;;;;1334:10:41;;1346:27;;;962:27112:53;1494:31:41;962:27112:53;;:::i;:::-;1494:31:41;:::i;:::-;962:27112:53;;1543:17:41;962:27112:53;;;;2722:5;962:27112;;;;;;2722:5;962:27112;;2722:5;962:27112;;;1679:19:41;962:27112:53;;;2846:13;;;:31;2970:63;962:27112;2862:4;2846:31;;2892:12;2888:68;;2846:31;962:27112;;;2970:63;;;962:27112;;;;;;;;;;;;;:::i;:::-;;;;;;;;2970:63;;;;962:27112;1505:66:29;2407:1;3553:21:50;3587:7;;;;3584:57;;2846:31:53;962:27112;;;;;;;;3584:57:50;962:27112:53;3608:33:50;;;;;;;;;3584:57;3616:10;3608:33;;;;;3584:57;;;;3608:33;962:27112:53;;;;;;;;;3608:33:50;;;;;2888:68:53;2936:8;;;;:::i;:::-;2888:68;;2846:31;962:27112;2970:63;2846:31;;;;962:27112;;;;;;;;;;;;2367:6;962:27112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1193:127:41;1272:37;;;:::i;:::-;962:27112:53;;;;;;;;;;;;;1197:11:41;962:27112:53;;1197:11:41;962:27112:53;;;;;;1193:127:41;962:27112:53;;;;1197:11:41;962:27112:53;;;;;;;;;;;;;;;;-1:-1:-1;962:27112:53;;;;;;;;;1193:127:41;;;;;962:27112:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;962:27112:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1197:11:41;962:27112:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1521:12;962:27112;;;;;;;;;;;;;;;;;;1989:10;962:27112;;;2045:10;;;:::i;:::-;962:27112;;;1521:12;962:27112;;;;;2038:43;;;;962:27112;2038:43;;2075:4;962:27112;2038:43;;962:27112;2038:43;;;;;;;962:27112;2038:43;;;1989:10;2103:7;;;962:27112;;2162:23;5432:32:50;2162:23:53;;;;;:::i;:::-;962:27112;2239:28;:22;;;;:::i;:::-;:28;962:27112;;;;;;;;;;;;;;;;;;;2239:28;2367:15;:9;;;;:::i;:15::-;2509:9;;;:::i;:::-;962:27112;;;1521:12;962:27112;;5432:32:50;;:::i;:::-;2465:54:53;;;;:::i;:::-;962:27112;;;1890:4:50;;962:27112:53;2541:15;;;;:::i;:::-;962:27112;;;2541:27;962:27112;;;;;1989:10;;962:27112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2038:43;;;962:27112;2038:43;;;;;;;;;962:27112;2038:43;;;:::i;:::-;;;962:27112;;;;;2038:43;;;;;;-1:-1:-1;2038:43:53;;962:27112;;;;;;;;;;;;;;;;;;;;;;;;;;;;1521:48;962:27112;1542:15;962:27112;1542:27;1521:48;;962:27112;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;3684:27:50;962:27112:53;3693:7:50;962:27112:53;;3692:8:50;3684:27;:::i;:::-;2989:103:29;;:::i;:::-;3274:13:53;;:44;;;;;962:27112;;;;;3368:7;962:27112;3483:12;1890:4:50;3483:17:53;;:48;;;;962:27112;;;3634:17;;962:27112;;4010:61;3854:38;3789:35;962:27112;;:::i;3854:38::-;962:27112;;;:::i;:::-;4010:61;;;:::i;:::-;4128:10;962:27112;4140:5;;;;;;4445:15;;;;:::i;:::-;4475:10;962:27112;4487:5;;;;;;4813:12;;4996:32;4813:12;;5058:38;4813:12;;:::i;5058:38::-;5156:21;;;;;;;5182;;;:::i;:::-;5155:53;;5288:9;;;;5391:20;5390:34;1890:4:50;3483:12:53;1890:4:50;5391:20:53;:::i;5390:34::-;5284:200;;5581:18;;962:27112;;5811:6;962:27112;;;;;5811:6;962:27112;;;5820:7;962:27112;;5845:31;;962:27112;;5936:14;5966:64;5936:14;962:27112;5936:14;;;5966:64;5936:14;;:::i;:::-;962:27112;;;;;;5966:64;;;:::i;:::-;;;;962:27112;1505:66:29;2407:1;3553:21:50;3587:7;;;;3584:57;;962:27112:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5284:200;5455:18;;962:27112;5284:200;;;5155:53;;;962:27112;5155:53;;;4475:10;4527:22;5432:32:50;4527:42:53;:22;962:27112;4527:22;;:::i;:::-;962:27112;;;3483:12;962:27112;;4552:17;;;;:::i;:::-;962:27112;4527:42;;:::i;:::-;4583:31;:22;;;;:::i;5432:32:50:-;4628:57:53;;;;:::i;:::-;962:27112;4051:19;962:27112;1890:4:50;;962:27112:53;4475:10;;4128;4167:17;;962:27112;4167:17;;;:::i;:::-;962:27112;4163:115;;4128:10;962:27112;4128:10;;4163:115;4245:17;962:27112;4233:10;;;:::i;:::-;962:27112;;;3483:12;962:27112;;;4245:17;;;;:::i;:::-;962:27112;4245:17;;;:::i;:::-;4163:115;;962:27112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3483:48;962:27112;3504:15;962:27112;3504:27;3483:48;;962:27112;;;;;;;;;;;;;;;;;;;;;;;3274:44;3291:15;;;:27;;3274:44;;;962:27112;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2989:103:29;;;:::i;:::-;3684:27:50;962:27112:53;3693:7:50;962:27112:53;;3692:8:50;3684:27;:::i;:::-;23530:7:53;962:27112;23562:20;;;;962:27112;;;23618:12;;962:27112;;23670:13;;:44;;;;;962:27112;;;;;23765:12;1890:4:50;23795:10:53;;962:27112;;22413:50:41;23924:36:53;27692:32;23924:36;;;:::i;:::-;962:27112;24114:5;962:27112;;;;;:::i;:::-;22413:50:41;;:::i;:::-;24305:24:53;;;;;:::i;:::-;962:27112;;;23765:12;962:27112;;27692:32;;:::i;:::-;962:27112;24489:24;24352:40;962:27112;;24352:40;;:::i;:::-;24410:24;;24402:65;24410:24;;;;24402:65;:::i;24489:24::-;24589:22;962:27112;24625:18;;;;:32;;;962:27112;24621:228;;962:27112;;25108:8;962:27112;;;;24931:10;;;:19;24927:159;;25108:8;:::i;:::-;25297:6;962:27112;25215:25;;;:::i;:::-;962:27112;;;23765:12;962:27112;;;25297:6;;;;;:::i;:::-;25440:15;;;:::i;:::-;25470;962:27112;25487:7;;;;;;25978:19;;962:27112;26012:15;962:27112;26029:7;;;;;;26007:125;26141:130;;;26286:113;962:27112;26141:130;26286:113;26141:130;962:27112;26141:130;;;;;26168:12;;;:::i;:::-;26369:17;;;;:::i;:::-;962:27112;;;;;1890:4:50;;;962:27112:53;;;1890:4:50;;;962:27112:53;1890:4:50;;;962:27112:53;;;;;;;1890:4:50;;;;;26286:113:53;;;;962:27112;1505:66:29;2407:1;962:27112:53;;;;;;;;;;26141:130;26247:12;;;:::i;:::-;26141:130;;26038:5;26063:17;;;;:::i;:::-;962:27112;;;26059:63;;962:27112;;26012:15;;26059:63;-1:-1:-1;962:27112:53;;-1:-1:-1;26286:113:53;;-1:-1:-1;962:27112:53;26114:5;;25496;25534:24;5432:32:50;25534:24:53;962:27112;25534:24;;:::i;:::-;962:27112;;;23765:12;962:27112;;25576:23;;;;;25572:194;;25496:5;25779:24;;:33;:24;;;;:::i;5432:32:50:-;25826:61:53;;;;:::i;:::-;962:27112;;;1890:4:50;;962:27112:53;25470:15;;25572:194;25720:18;;:31;:18;;:::i;:31::-;25572:194;;;;24927:159;962:27112;;;24984:11;962:27112;;;;;;24931:10;962:27112;-1:-1:-1;962:27112:53;;;25056:18;;962:27112;;-1:-1:-1;962:27112:53;1890:4:50;25056:18:53;:::i;:::-;24931:10;25056:18;;:::i;:::-;25108:8;:::i;24621:228::-;24714:9;24687:23;;;;;;;:::i;:::-;962:27112;24741:14;;24737:102;;24621:228;;;;24737:102;24775:49;:35;;;:::i;:::-;:49;962:27112;;;;23765:12;962:27112;;24775:49;:::i;:::-;962:27112;;;;;;;;;;;;;;;;;;24775:49;24737:102;;24625:32;24647:10;;;;24625:32;;962:27112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23670:44;23687:15;;;:27;;23670:44;;;962:27112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;2989:103:29;;:::i;:::-;6991:13:53;;:44;;;;;962:27112;;;;;7085:7;962:27112;7117:12;;;962:27112;;7175:12;1890:4:50;7205:10:53;;962:27112;;7456:56;962:27112;;;;;;:::i;:::-;7456:56;;;:::i;:::-;7617:10;962:27112;7629:5;;;;;;7948:15;;;;;:::i;:::-;962:27112;7990:5;;;;;;8305:19;962:27112;8339:10;962:27112;8351:5;;;;;;8334:186;8530:130;;;9070:59;962:27112;8530:130;9070:59;8530:130;962:27112;8530:130;;;;;8557:12;;;:::i;:::-;962:27112;;;8763:10;;:19;8759:264;;8530:130;9045:8;;;;;:::i;:::-;962:27112;;;;;;;9070:59;;;:::i;:::-;;;;962:27112;1505:66:29;2407:1;962:27112:53;;;;;;;;;;;;;:::i;8759:264::-;962:27112;;8816:11;962:27112;;;;;8763:10;;962:27112;-1:-1:-1;962:27112:53;;;8993:18;;962:27112;;-1:-1:-1;962:27112:53;1890:4:50;8993:18:53;:::i;:::-;8763:10;8993:18;;:::i;:::-;8759:264;;;8530:130;8636:12;;;:::i;:::-;8530:130;;8339:10;8378:15;;;;:::i;:::-;962:27112;7492:19;962:27112;8374:105;;962:27112;;8339:10;;8374:105;-1:-1:-1;962:27112:53;;-1:-1:-1;9070:59:53;;-1:-1:-1;962:27112:53;8459:5;;7978:10;8030:22;5432:32:50;8030:43:53;:22;962:27112;8030:22;;;;;:::i;:::-;962:27112;;;7175:12;962:27112;;8055:18;;;;:::i;:::-;962:27112;8030:43;;:::i;5432:32:50:-;8132:57:53;;;;:::i;:::-;962:27112;7492:19;962:27112;1890:4:50;;962:27112:53;7978:10;;;;;7617;7656:18;;962:27112;7656:18;;;;;:::i;:::-;962:27112;7652:123;;7617:10;962:27112;7617:10;;;;;7652:123;7753:6;7711:10;962:27112;7711:10;;;:::i;:::-;962:27112;;;7175:12;962:27112;;;7733:18;;;;;:::i;:::-;962:27112;7753:6;;:::i;:::-;7652:123;;962:27112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6991:44;7008:15;;;:27;;6991:44;;;962:27112;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;3684:27:50;962:27112:53;3693:7:50;962:27112:53;;3692:8:50;3684:27;:::i;:::-;2989:103:29;;:::i;:::-;16511:7:53;962:27112;16543:19;;;;962:27112;;;16598:15;;962:27112;;16656:13;;:44;;;;;962:27112;;;;;16741:15;962:27112;16741:26;962:27112;;5432:32:50;16945:36:53;;;;:::i;:::-;17106:23;;;;;:::i;5432:32:50:-;962:27112:53;;;;;17148:28;962:27112;;;13750:46:41;17589:66:53;962:27112;;16741:5;962:27112;;;;;:::i;:::-;13750:46:41;;:::i;:::-;17631:23:53;;;;;:::i;:::-;962:27112;;;;;;17589:66;;:::i;:::-;17673:16;;;962:27112;;17843:34;;;;:::i;:::-;17898:20;;;;;:::i;:::-;17936:12;;;;:39;;;;962:27112;;;;;18168:8;18142:24;962:27112;18142:24;;;:::i;:::-;962:27112;;;;;;;18168:8;;:::i;:::-;962:27112;18297:18;;;;:31;;;962:27112;18293:225;;962:27112;18660:21;18619:63;18660:21;;;;:::i;:::-;18619:63;:36;;;:::i;:::-;962:27112;;;;;;;;;18619:63;:::i;:::-;18785:35;962:27112;;:::i;18785:35::-;18850:38;18917:34;18850:38;;;:::i;:::-;18917:34;;;:::i;:::-;18981:38;;;;:::i;:::-;962:27112;1890:4:50;;;19158:18:53;;;19284:20;;19154:479;;19651:12;;1890:4:50;;19825:15:53;;;:::i;:::-;19855;962:27112;19872:7;;;;;;20175:12;;;;;20318:125;962:27112;20355:24;20175:12;;;20318:125;20175:12;;:::i;:::-;20293:8;;;;:::i;:::-;20355:24;:::i;:::-;962:27112;;;;;;;20413:17;;;;;:::i;:::-;962:27112;;;;;;;;;;20318:125;;1890:4:50;;;;;;;;;962:27112:53;;;1890:4:50;;;962:27112:53;1890:4:50;;;962:27112:53;1890:4:50;962:27112:53;1890:4:50;20318:125:53;;;;962:27112;1505:66:29;2407:1;3553:21:50;3587:7;;;;3584:57;;19850:205:53;962:27112;;;;;;;;;;;;;;;;;;;;;;;;;;;;3584:57:50;962:27112:53;3608:33:50;;;;;;;;;3584:57;3616:10;3608:33;;;;;3584:57;;;;3608:33;;;;;19881:5:53;19996:20;:48;:20;:34;:20;;962:27112;19996:20;;:::i;:::-;1890:4:50;;;962:27112:53;1890:4:50;962:27112:53;;;19996:34;:::i;:::-;:48;:::i;:::-;19976:68;;;;:::i;:::-;962:27112;;;1890:4:50;;962:27112:53;19855:15;;1890:4:50;962:27112:53;;;1890:4:50;;;962:27112:53;;1890:4:50;;;;962:27112:53;1890:4:50;;962:27112:53;1890:4:50;962:27112:53;;;1890:4:50;;19154:479:53;19351:53;;;19352:21;;;;;;19378;;;:::i;:::-;19351:53;;19422:9;;;;19522:35;19523:21;;;;:::i;19522:35::-;19418:205;19154:479;;19418:205;19596:12;;;962:27112;19418:205;19154:479;;19351:53;;;962:27112;19351:53;;;18293:225;18384:9;18358:22;;;;;;;:::i;:::-;962:27112;18411:14;;18407:101;;18293:225;;;;18407:101;18445:48;:34;;;:::i;:::-;:48;962:27112;;;;;;;18445:48;:::i;:::-;18407:101;;18297:31;18319:9;;;;18297:31;;962:27112;;;;;;;;;;;;;;;;;;;;;;;17936:39;17952:23;;;;;17936:39;;;962:27112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16656:44;16673:15;;;:27;;16656:44;;;962:27112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;962:27112:53;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;10784:796;;962:27112;;11036:24;;;;:::i;:::-;11140:16;;;:34;;;;10784:796;11136:124;;11155:1;11369:13;;;;;;11551:22;;;;;10784:796;:::o;11384:3::-;11428:21;11484:46;11428:21;11485:30;11428:21;962:27112;11428:21;;;:::i;:::-;962:27112;11485:30;;:::i;11484:46::-;11463:67;;;;:::i;:::-;962:27112;;11357:10;;11136:124;11190:22;;;;;:::o;11140:34::-;11160:14;;;11140:34;;962:27112;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;17106:6;962:27112;;;;;;17106:6;-1:-1:-1;962:27112:53;;-1:-1:-1;962:27112:53;;;-1:-1:-1;962:27112:53;:::o;:::-;16511:7;962:27112;;;;;;16511:7;-1:-1:-1;962:27112:53;;-1:-1:-1;962:27112:53;;;-1:-1:-1;962:27112:53;:::o;:::-;18445:17;962:27112;;;;;;18445:17;-1:-1:-1;962:27112:53;;-1:-1:-1;962:27112:53;;;-1:-1:-1;962:27112:53;:::o;:::-;;;;;;;;;-1:-1:-1;962:27112:53;;-1:-1:-1;962:27112:53;;;-1:-1:-1;962:27112:53;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;13778:11:41;962:27112:53;;;;;;;;13778:11:41;-1:-1:-1;962:27112:53;;-1:-1:-1;962:27112:53;;-1:-1:-1;962:27112:53;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1890:4:50;;16741:15:53;962:27112;1890:4:50;;;;;16741:15:53;-1:-1:-1;962:27112:53;1890:4:50;;;;962:27112:53;1890:4:50;;;;;;;:::o;962:27112:53:-;;;;7492:19;962:27112;;;;;;;;7492:19;-1:-1:-1;962:27112:53;;-1:-1:-1;962:27112:53;;-1:-1:-1;962:27112:53;;;;;;;;;;;;;;:::i;:::-;1890:4:50;;962:27112:53;;;;;;;;;-1:-1:-1;962:27112:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;9688:1090;962:27112;;9938:24;;;;:::i;:::-;10122:16;;;:34;;;;9688:1090;10118:139;;10137:1;10488:13;;;;;;10750:21;;;;;9688:1090;:::o;10503:3::-;10666:44;10547:21;10666:30;10547:21;;;;:::i;:::-;962:27112;10666:30;;:::i;:::-;:44;:::i;:::-;962:27112;;;;;;;;;10665:64;;10713:1;10665:64;;:::i;:::-;10645:84;;;;:::i;:::-;962:27112;;10476:10;;10122:34;10142:14;;;10122:34;;3749:292:29;2407:1;1505:66;1890:4:50;4560:63:29;3644:93;;2407:1;1505:66;2407:1;3749:292::o;3644:93::-;3696:30;-1:-1:-1;3696:30:29;;-1:-1:-1;3696:30:29;903:262:52;;;1026:11;;1022:59;;1100:23;1143:15;1100:23;;;:::i;:::-;1143:15;;;:::i;1022:59::-;1053:17;1036:1;1053:17;;:::o;5893:600:50:-;6232:36;6059:40;;;;:::i;:::-;6232:36;;;:::i;:::-;962:27112:53;;;;;;6381:30:50;6377:82;;5893:600;:::o;6377:82::-;6447:1;962:27112:53;;;;;;;6427:21:50;:::o;403:228:52:-;;494:11;;490:25;;585:10;;;:::i;:::-;598:9;962:27112:53;;;;;;;;;;;;;;;598:9:52;962:27112:53;;403:228:52;:::o;490:25::-;507:8;;962:27112:53;507:8:52;:::o;6928:278:50:-;;962:27112:53;7032:13:50;962:27112:53;;;;;7023:22:50;;;;:45;;;6928:278;7019:180;;;7083:37;;;;;;;;;962:27112:53;7083:37:50;962:27112:53;;7083:37:50;;;;962:27112:53;7083:37:50;;;;;;;;;;7019:180;6928:278::o;7083:37::-;;;;;:::i;7019:180::-;1767:47:24;;;;;962:27112:53;10404:1148:24;;;10365:28;-1:-1:-1;10404:1148:24;;;;7185:4:50;10404:1148:24;;;;;-1:-1:-1;10404:1148:24;;;;;;;1809:4;-1:-1:-1;10404:1148:24;;;;;;;7019:180:50;10404:1148:24;;;;-1:-1:-1;10404:1148:24;;1766:48;1762:126;;7019:180:50;6928:278::o;1762:126:24:-;1837:40;-1:-1:-1;1837:40:24;10404:1148;962:27112:53;10404:1148:24;-1:-1:-1;1837:40:24;10404:1148;1809:4;10404:1148;;;;;;;;;;;;;;;;;;-1:-1:-1;10404:1148:24;;;;;7023:45:50;7049:9;;;:19;;7023:45;;1352:286:52;1470:1;;;1487:10;962:27112:53;;1499:20:52;;;;;1545:23;962:27112:53;1555:12:52;;;;;:::i;1545:23::-;962:27112:53;;1487:10:52;;;1499:20;;;;1352:286;:::o;6267:513:0:-;962:27112:53;;-1:-1:-1;6397:6:0;;962:27112:53;;1890:4:50;962:27112:53;6495:2:0;962:27112:53;6267:513:0;:::o;:::-;6363:6;;6359:20;;962:27112:53;;;6397:6:0;;962:27112:53;;6455:34:0;6451:38;;962:27112:53;;6495:2:0;962:27112:53;;6547:3:0;962:27112:53;;6575:50:0;6569:56;;962:27112:53;;6495:2:0;962:27112:53;;;6661:85:0;;962:27112:53;;;6267:513:0;:::o;3517:219::-;962:27112:53;;;;805:35:0;3652:19;;;;:42;;3517:219;962:27112:53;;;;;3517:219:0;:::o;3652:42::-;3675:19;958:34;3675:19;;;3652:42;;3517:219;;962:27112:53;;;;;;805:35:0;3652:19;;;:42;;;962:27112:53;;;;;3517:219:0;:::o;4395:225::-;;962:27112:53;;;;;;4517:2:0;962:27112:53;805:35:0;4536:19;;;:42;;;962:27112:53;;;;;4395:225:0;:::o;7038:252::-;962:27112:53;;7136:6:0;;962:27112:53;;;;805:35:0;7206:19;;;:42;;;962:27112:53;;;;;7038:252:0;:::o;:::-;;962:27112:53;;7136:6:0;;;962:27112:53;;7182:2:0;962:27112:53;;;;805:35:0;7206:19;;;:42;;;962:27112:53;;;;;7038:252:0;:::o;29217:488:41:-;29451:1;29382:32;;;:::i;:::-;962:27112:53;;29433:20:41;962:27112:53;;;;;29625:11:41;;29451:1;29602:5;;;;;;29217:488;;;;:::o;29590:10::-;29642:15;;;;:::i;:::-;962:27112:53;;;29625:14:41;962:27112:53;;1890:4:50;;;;;29625:11:41;962:27112:53;;-1:-1:-1;962:27112:53;;;-1:-1:-1;962:27112:53;1890:4:50;;;;;;;;;;962:27112:53;;;;;;;;;;;;;;;;;;;;;;;29590:10:41;;962:27112:53;;;;;;;;;;;;;;;;;;;;;;;3184:208:34;962:27112:53;;3254:21:34;;;3250:91;;2801:32;962:27112:53;1890:4:50;1951:21:34;3273:1;1890:4:50;1951:21:34;1890:4:50;1951:21:34;:::i;:::-;;2407:1:29;962:27112:53;;;1815:18:34;962:27112:53;;;;;1890:4:50;;;962:27112:53;2407:1:29;;962:27112:53;;;;;2801:32:34;3184:208::o;3250:91::-;3298:32;3273:1;3298:32;3273:1;3298:32;962:27112:53;;3273:1:34;3298:32;7509:374:50;;;;7615:32;;;7509:374;7611:265;;;7664:13;962:27112:53;7664:13:50;962:27112:53;7664:30:50;;;;;;962:27112:53;;;7664:30:50;;-1:-1:-1;7664:30:50;;;;;;;;;;962:27112:53;7664:30:50;;;;;;;;7611:265;7722:32;;;;;;;;;;962:27112:53;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;7509:374:50:o;962:27112:53:-;;;;;;;;7664:30:50;962:27112:53;;;;7664:30:50;962:27112:53;;;;;;;;;;;;7664:30:50;962:27112:53;;;7664:30:50;962:27112:53;;;;;;7664:30:50;;;;;-1:-1:-1;7664:30:50;;:::i;:::-;-1:-1:-1;7664:30:50;;;;7611:265;1306:37:24;8544:1067;;;;8509:24;-1:-1:-1;8544:1067:24;;;;;;;-1:-1:-1;8544:1067:24;;;;;;;1338:4;-1:-1:-1;8544:1067:24;;;;;;;7611:265:50;8544:1067:24;;1305:38;1301:116;;7611:265:50;7509:374::o;1301:116:24:-;8544:1067;1366:40;;-1:-1:-1;1366:40:24;962:27112:53;8544:1067:24;962:27112:53;8544:1067:24;-1:-1:-1;1366:40:24;8544:1067;;1338:4;8544:1067;;;;;;;;;;;;;;;;;;;-1:-1:-1;8544:1067:24;;;;;7615:32:50;7634:13;962:27112:53;7634:13:50;962:27112:53;;;;7625:22:50;7615:32;;38670:244:41;962:27112:53;8557:5;962:27112;;8557:5;962:27112;38820:11:41;962:27112:53;-1:-1:-1;38820:11:41;962:27112:53;;;;38670:244:41;:::o;962:27112:53:-;38820:11:41;-1:-1:-1;962:27112:53;;;-1:-1:-1;962:27112:53;;;;;;;;;;;;;;;38670:244:41;:::o;962:27112:53:-;-1:-1:-1;962:27112:53;;;;;;4454:128:34;962:27112:53;;5541:19:34;;;5537:89;;962:27112:53;;5639:21:34;;;5635:90;;962:27112:53;5813:38:34;962:27112:53;;5558:1:34;962:27112:53;5734:11:34;962:27112:53;;;5558:1:34;962:27112:53;;-1:-1:-1;962:27112:53;;;;;-1:-1:-1;962:27112:53;2407:1:29;962:27112:53;;;;;5813:38:34;4454:128::o;5635:90::-;5683:31;5558:1;5683:31;5558:1;5683:31;962:27112:53;;5558:1:34;5683:31;5537:89;5583:32;5558:1;5583:32;5558:1;5583:32;962:27112:53;;5558:1:34;5583:32;3711:206;;;;962:27112:53;;3781:21:34;;3777:89;;962:27112:53;3800:1:34;962:27112:53;2025:9:34;962:27112:53;;;3800:1:34;962:27112:53;1890:4:50;2058:19:34;;;2054:115;;962:27112:53;;3800:1:34;962:27112:53;;2801:32:34;962:27112:53;;;;2025:9:34;962:27112:53;;;;;;2407:1:29;1890:4:50;2528:21:34;1890:4:50;962:27112:53;2528:21:34;2407:1:29;962:27112:53;;;;;2801:32:34;3711:206::o;2054:115::-;2104:50;;;3800:1;2104:50;;962:27112:53;;;;;;3800:1:34;2104:50;3777:89;3825:30;3800:1;3825:30;3800:1;3825:30;962:27112:53;;3800:1:34;3825:30;8689:233:0;8790:6;;962:27112:53;;23319:50:0;23314:55;;23319:50;;962:27112:53;23388:13:0;962:27112:53;23394:2:0;962:27112:53;23388:13:0;:::i;:::-;24377:34;24367:44;;962:27112:53;;24377:34:0;962:27112:53;958:34:0;8851:29;;962:27112:53;;;;8689:233:0;:::o;23310:1040::-;23438:3;962:27112:53;;;;;23486:17:0;23492:11;23486:17;;;23482:48;;23310:1040;23746:3;23543:13;23549:7;23811:45;23543:13;;;23539:44;;23310:1040;23602:5;23596:11;;;23592:40;;23310:1040;23651:4;23645:10;;;23641:39;;23310:1040;23699:3;23693:9;;;23689:38;;23310:1040;23740:9;;23736:23;;23310:1040;962:27112:53;23836:1:0;962:27112:53;;;;;;;;;;;;23811:45:0;:::i;:::-;23875:44;23885:34;23875:44;;962:27112:53;;;23959:3:0;962:27112:53;;;23996:38:0;23885:34;23996:38;;962:27112:53;;24046:21:0;;962:27112:53;24095:2:0;962:27112:53;24112:7:0;;;;24108:20;;23310:1040;962:27112:53;;;;23959:3:0;962:27112:53;24221:7:0;;;;24217:20;;23310:1040;23959:3;962:27112:53;24313:15:0;962:27112:53;;24331:6:0;962:27112:53;;24331:6:0;:::i;:::-;24313:28;;962:27112:53;23310:1040:0;;24313:28;;;;23836:1;24313:28;;;24217:20;962:27112:53;;;24217:20:0;;;24108;962:27112:53;;;-1:-1:-1;24108:20:0;;;23736:23;23758:1;962:27112:53;23736:23:0;;23689:38;962:27112:53;;;;;;23689:38:0;;23641:39;23666:1;962:27112:53;;;;;23641:39:0;;23592:40;23618:1;962:27112:53;;;;;23592:40:0;;23539:44;23567:2;962:27112:53;;;;;23539:44:0;;23482:48;-1:-1:-1;;962:27112:53;;;;;23482:48:0;;962:27112:53;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;14654:6887:41;;;;;;962:27112:53;;14896:5:41;;;;962:27112:53;;;14944:1:41;962:27112:53;;;14933:13:41;962:27112:53;;;14999:29:41;;;:::i;:::-;962:27112:53;15116:21:41;962:27112:53;14944:1:41;962:27112:53;;;15046:22:41;15038:57;;;;:::i;:::-;15116:21;:::i;:::-;962:27112:53;15147:36:41;14944:1;962:27112:53;;;15155:13:41;15147:36;:::i;:::-;15207:25;;;:::i;:::-;15391:15;;;;:::i;:::-;15421:13;14944:1;15436:5;;;;;;-1:-1:-1;962:27112:53;;-1:-1:-1;;15967:305:41;;;16007:23;;;;:::i;:::-;962:27112:53;41100:19:41;962:27112:53;;;16076:10:41;16072:75;;15967:305;-1:-1:-1;16491:9:41;23394:2:0;16491:9:41;;;;16471:1543;18060:23;-1:-1:-1;18098:13:41;-1:-1:-1;18093:1754:41;18113:9;23394:2:0;18113:9:41;;;;18093:1754;19975:28;;;;;-1:-1:-1;20013:22:41;-1:-1:-1;20050:13:41;-1:-1:-1;20065:5:41;;;;;;20045:815;20870:140;;;;;;;21054:12;21039:28;21054:12;21039:43;21054:12;21262:17;21054:12;;;:::i;:::-;962:27112:53;;;21039:28:41;;:::i;:::-;:43;:::i;:::-;21262:17;;:::i;:::-;962:27112:53;-1:-1:-1;962:27112:53;;;21395:22:41;;;:47;;;20045:815;21391:105;;21506:28;14654:6887;:::o;21391:105::-;23394:2:0;962:27112:53;21458:27:41;;;41225:20;21458:27;;;41225:20;;;;;962:27112:53;41225:20:41;962:27112:53;;;41225:20:41;;;21458:27;21395:47;962:27112:53;-1:-1:-1;962:27112:53;;;21421:21:41;;21395:47;;20870:140;20970:29;;;;;;-1:-1:-1;20970:29:41;-1:-1:-1;20970:29:41;:::o;20050:13::-;20092:6;;;20088:731;;20050:13;962:27112:53;;20050:13:41;;20088:731;20130:28;20145:12;;;;:::i;:::-;962:27112:53;;;20130:28:41;;:::i;:::-;-1:-1:-1;962:27112:53;;;20180:14:41;20176:629;;20088:731;;;;20176:629;20234:12;;;;;;;:::i;:::-;41225:20;962:27112:53;;;20272:18:41;20268:52;;41316:20;20399:21;41316:20;;:::i;:::-;20399:14;:5;;;;:::i;:::-;962:27112:53;;;20399:14:41;:::i;:::-;:21;:::i;:::-;-1:-1:-1;962:27112:53;;;20446:16:41;;20442:50;;20528:14;:5;;;;;:::i;:::-;962:27112:53;;;20528:14:41;:::i;:::-;-1:-1:-1;962:27112:53;;;20568:18:41;;20564:52;;41408:19;20649:17;41408:19;;:::i;:::-;20649:17;;:::i;:::-;962:27112:53;-1:-1:-1;962:27112:53;;;20692:14:41;20688:48;;962:27112:53;20769:17:41;;;;:::i;:::-;20176:629;;;;20688:48;20710:16;;;;;;;;962:27112:53;20728:5:41;;;;;;;20564:52;20590:16;;;;;;;;962:27112:53;20608:5:41;;;;;;;18098:13;962:27112:53;18171:13:41;;;;:::i;:::-;23394:2:0;962:27112:53;;;;805:35:0;7206:19;;;:42;;;18098:13:41;962:27112:53;;;;;18258:23:41;;;;-1:-1:-1;18295:17:41;-1:-1:-1;18332:13:41;-1:-1:-1;18327:848:41;18347:5;;;;;;18327:848;-1:-1:-1;;19203:67:41;;;;;;958:34:0;19203:67:41;962:27112:53;;;;;;19289:8:41;19285:259;14933:13;;;19392:10;19285:259;;19589:13;;;;;:::i;:::-;962:27112:53;;19589:20:41;;19585:98;;19749:2;19741:10;;19737:65;;19285:259;962:27112:53;;18098:13:41;;;19737:65;19771:16;;-1:-1:-1;19771:16:41;;19737:65;;19585:98;19629:16;;;;;;;19663:5;;;;;;;;19285:259;19520:9;;;19285:259;;;19203:67;19247:12;19237:23;19247:12;19237:33;19247:12;;:::i;:::-;962:27112:53;;;19237:23:41;;:::i;:33::-;19203:67;;18332:13;18378:6;;;;;;;;18374:752;;18332:13;962:27112:53;;;;18332:13:41;;;;;;;;;18374:752;18430:12;18420:23;18430:12;;;;:::i;:::-;962:27112:53;;;18420:23:41;;:::i;:::-;-1:-1:-1;962:27112:53;;;18469:14:41;18465:643;;18374:752;;;;;18465:643;18527:12;;;;;;;:::i;:::-;41225:20;962:27112:53;;;18569:18:41;18565:47;;41316:20;18699:21;41316:20;;:::i;:::-;18699:14;:5;;;;:::i;:21::-;962:27112:53;-1:-1:-1;962:27112:53;;;18750:16:41;;18746:45;;18831:5;;;;:14;:5;;:::i;:14::-;962:27112:53;-1:-1:-1;962:27112:53;;;18875:18:41;;18871:47;;41408:19;;18955:17;41408:19;;:::i;:::-;18955:17;;:::i;:::-;962:27112:53;;-1:-1:-1;962:27112:53;;;19002:14:41;18998:43;;19073:12;962:27112:53;19073:12:41;;;;:::i;:::-;18465:643;;;;;;;;;18998:43;19020:11;;;;;;962:27112:53;19033:5:41;;;;18871:47;18897:11;;;;;;962:27112:53;18910:5:41;;;;18746:45;18770:11;;;;;;;962:27112:53;18783:5:41;;;;18565:47;18591:11;;;;;;;962:27112:53;18604:5:41;;;;7206:42:0;7229:19;958:34;7229:19;;;7206:42;;16476:13:41;16600:23;-1:-1:-1;;;16716:5:41;;;;;;16696:953;-1:-1:-1;17677:67:41;;;;958:34:0;17677:67:41;962:27112:53;;;;;;17763:9:41;;;:29;;;17677:67;17759:73;;962:27112:53;;;;23394:2:0;962:27112:53;805:35:0;4536:19;;;:42;;;17677:67:41;962:27112:53;;;;;17873:42:41;962:27112:53;17873:42:41;17933:15;17929:41;;17677:67;962:27112:53;;16476:13:41;;17929:41;962:27112:53;;-1:-1:-1;17929:41:41;;4536:42:0;4559:19;958:34;4559:19;;;4536:42;;17759:73:41;17812:5;;;17763:29;962:27112:53;;;;;17776:16:41;;17763:29;;17677:67;17711:33;17721:12;17711:23;17721:12;;;;:::i;:::-;962:27112:53;;;17711:23:41;;:::i;:33::-;17677:67;;16701:13;16747:6;;;;;;;;;;;;;;;;;;16743:857;;16701:13;962:27112:53;;;;16701:13:41;;;;;;;;;;;;;;;;16743:857;16789:23;16799:12;;;;;:::i;:::-;962:27112:53;;;16789:23:41;;:::i;:::-;-1:-1:-1;962:27112:53;;;16873:14:41;16869:713;;16743:857;;;;;16869:713;16931:12;;;;;;;:::i;:::-;41225:20;962:27112:53;;;17014:18:41;17010:47;;41316:20;17159:14;:5;41316:20;;17159:21;41316:20;;:::i;:::-;17159:5;;:::i;:21::-;-1:-1:-1;962:27112:53;;;17224:16:41;;17220:45;;17305:14;:5;;;;;:::i;:14::-;-1:-1:-1;962:27112:53;;;17349:18:41;;17345:47;;41408:19;17429:17;41408:19;;:::i;:::-;17429:17;;:::i;:::-;962:27112:53;-1:-1:-1;962:27112:53;;;17476:14:41;17472:43;;962:27112:53;17547:12:41;;;;:::i;:::-;16869:713;;;;;;;17472:43;17494:11;;;;962:27112:53;17494:11:41;;;;;;;;;;;;;;17507:5;;;17345:47;17371:11;;;;962:27112:53;17371:11:41;;;;;;;;;;;;;;17384:5;;;16072:75;41100:19;;-1:-1:-1;16072:75:41;;15967:305;16226:35;23394:2:0;962:27112:53;16226:35:41;;;41100:19;16226:35;;;41100:19;;;;;962:27112:53;41100:19:41;962:27112:53;;;41100:19:41;16226:35;15421:13;962:27112:53;15472:12:41;41316:20;15472:40;:12;:30;:12;;;;:::i;:::-;962:27112:53;;;15489:12:41;;;;:::i;:::-;962:27112:53;;;15472:30:41;;:::i;:40::-;41316:20;:::i;:::-;15459:54;;;;:::i;:::-;962:27112:53;;;1890:4:50;;962:27112:53;15421:13:41;;962:27112:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26770:658;27289:19;27173:28;27031:32;;;;:::i;:::-;27173:28;;:::i;:::-;27231:31;;;:::i;:::-;27289:19;;:::i;:::-;962:27112;;;;;;27322:20;27318:80;;26770:658;:::o;23564:4510:41:-;;;;962:27112:53;;;23787:1:41;23772:17;;962:27112:53;;;41100:19:41;-1:-1:-1;962:27112:53;;24005:21:41;23888:29;;;:::i;:::-;962:27112:53;;23927:57:41;23787:1;962:27112:53;;;23935:22:41;23927:57;:::i;24005:21::-;962:27112:53;24036:36:41;23787:1;962:27112:53;;;24044:13:41;24036:36;:::i;:::-;24096:25;;;:::i;:::-;24272:12;962:27112:53;;24272:12:41;;;:::i;:::-;24409:15;;;;:::i;:::-;24439:13;23787:1;24454:5;;;;;;24661:12;24651:23;24661:12;;;;:::i;24651:23::-;962:27112:53;23787:1:41;962:27112:53;;;24768:21:41;24885:13;23787:1;24900:5;;;;;;27977:11;;;;;;;;;962:27112:53;;27977:37:41;;24880:3003;27973:95;;23564:4510::o;27977:37::-;962:27112:53;23787:1:41;962:27112:53;;;27992:22:41;;27977:37;;24885:13;24927:6;;;24923:2919;;24885:13;962:27112:53;;24885:13:41;;;;;24923:2919;24965:23;24975:12;;;;:::i;24965:23::-;23787:1;962:27112:53;;;25048:14:41;25044:2784;;24923:2919;;;;25044:2784;25141:12;;;;;;;;;;:::i;:::-;962:27112:53;;;;25273:18:41;41225:20;25273:18;;25269:203;;805:35:0;41316:20:41;25578:34;:9;;;25592;25578;;:24;:9;;;:::i;:::-;962:27112:53;;;25592:9:41;;:::i;41316:20::-;9170:14:0;;962:27112:53;;25853:15:41;41316:20;25844:25;962:27112:53;23787:1:41;962:27112:53;;;41316:20:41;:::i;:::-;25853:15;:::i;:::-;25844:25;;:::i;:::-;962:27112:53;;41100:19:41;962:27112:53;805:35:0;3652:19;;;:42;;;25044:2784:41;962:27112:53;;;;;23787:1:41;25897:18;;;25893:194;;41408:19;26120:17;41408:19;;:::i;26120:17::-;26275:9;;;;;;;;:::i;:::-;962:27112:53;;;;;;26271:13:41;26267:1188;;27653:17;:9;;27754:16;27653:9;;;;;;;;;;;:::i;:::-;962:27112:53;;;27653:17:41;:::i;:::-;27641:29;;;;:::i;:::-;962:27112:53;;;1890:4:50;;27704:16:41;:9;;;;;:::i;:::-;962:27112:53;;;27704:16:41;:::i;:::-;27692:28;;;;:::i;:::-;962:27112:53;;;1890:4:50;;27754:16:41;:::i;:::-;27792:17;962:27112:53;;;25044:2784:41;;26267:1188;26553:20;26494:9;;;41316:20;26494:9;;;:19;:9;;;;;:::i;:::-;962:27112:53;;;26494:19:41;:::i;41316:20::-;26553:13;;;:::i;:20::-;962:27112:53;23787:1:41;962:27112:53;;;26618:16:41;;26614:207;;26940:13;26930:25;41408:19;26940:13;27241:24;26940:13;;27096:27;26940:13;;:::i;:::-;41408:19;:::i;:::-;26930:25;;:::i;:::-;27096:9;;;;:::i;:27::-;27084:39;;;;:::i;:::-;962:27112:53;;;1890:4:50;;27255:9:41;;;;:::i;27241:24::-;27291:21;23787:1;27291:21;;;;:::i;:::-;1890:4:50;962:27112:53;;;;27424:8:41;;;26614:207;962:27112:53;;;;;;;;;;26786:8:41;;;25893:194;962:27112:53;;;;;;;;;;;26056:8:41;;;3652:42:0;3675:19;958:34;3675:19;;;3652:42;;24439:13:41;24489:12;:32;:12;962:27112:53;24489:12:41;;;:::i;:::-;962:27112:53;;;24506:14:41;;;:::i;:::-;24489:32;;:::i;:::-;24477:44;;;;:::i;:::-;962:27112:53;;;1890:4:50;;962:27112:53;24439:13:41;;962:27112:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3949:219:0;962:27112:53;;;;805:35:0;4084:19;;;:42;;;962:27112:53;;;;;3949:219:0;:::o;:::-;;962:27112:53;;;;;;805:35:0;4084:19;;;:42;;;962:27112:53;;;;;3949:219:0;:::o;1958:169::-;2057:18;2052:23;;962:27112:53;;2112:2:0;962:27112:53;;;1958:169:0;:::o;22569:296::-;962:27112:53;;22661:20:0;22657:24;;962:27112:53;;;22711:21:0;22707:25;;22703:39;;22810:35;22771:83;962:27112:53;;22849:3:0;962:27112:53;;;22771:83:0;:::i;22703:39::-;22734:8;962:27112:53;22734:8:0;:::o;15150:221::-;962:27112:53;;15241:1:0;15237:5;;962:27112:53;;;15241:1:0;14261:13;;14292:19;14286:25;;;14282:56;;15150:221;14349:17;14355:11;14599:3;14349:17;;;14345:48;;15150:221;14410:7;14404:13;;;14400:44;;15150:221;14461:5;14455:11;;;14451:40;;15150:221;14508:4;14502:10;;;14498:39;;15150:221;14554:3;14548:9;;;14544:38;;15150:221;14593:9;;14589:23;;15150:221;962:27112:53;;;14675:2:0;962:27112:53;;14737:3:0;962:27112:53;;14760:31:0;14773:18;14755:176;14793:7;15241:1;14793:7;;;;962:27112:53;15317:34:0;962:27112:53;;;;;15355:3:0;962:27112:53;15150:221:0;:::o;14802:9::-;962:27112:53;;;;;;;;14737:3:0;962:27112:53;;;;;;14802:9:0;14810:1;962:27112:53;14760:31:0;;;;14589:23;962:27112:53;14611:1:0;962:27112:53;14589:23:0;;;14544:38;962:27112:53;;;;;;14544:38:0;;14498:39;14523:1;962:27112:53;;;;;14498:39:0;;14451:40;14477:1;962:27112:53;;;;;14451:40:0;;14400:44;14428:2;962:27112:53;;;;;14400:44:0;;14345:48;14377:2;962:27112:53;;;;;14345:48:0;;14282:56;-1:-1:-1;14322:2:0;;-1:-1:-1;962:27112:53;;;14282:56:0;;15549:6841;962:27112:53;;;15643:20:0;15639:24;;962:27112:53;;;15693:21:0;15689:25;;15685:39;;15763:34;15810:22;962:27112:53;15814:18:0;15810:22;;962:27112:53;;15810:26:0;15806:100;;15549:6841;962:27112:53;15922:18:0;15918:22;;962:27112:53;;15918:26:0;15914:100;;15549:6841;962:27112:53;16030:18:0;16026:22;;962:27112:53;;16026:26:0;16022:100;;15549:6841;962:27112:53;16138:18:0;16134:22;;962:27112:53;;16134:26:0;16130:100;;15549:6841;962:27112:53;16246:17:0;16242:21;;962:27112:53;;16242:25:0;16238:99;;15549:6841;962:27112:53;16353:17:0;16349:21;;962:27112:53;;16349:25:0;16345:99;;15549:6841;962:27112:53;16460:17:0;16456:21;;962:27112:53;;16456:25:0;16452:99;;15549:6841;962:27112:53;16567:17:0;16563:21;;962:27112:53;;16563:25:0;16559:99;;15549:6841;962:27112:53;16674:16:0;16670:20;;962:27112:53;;16670:24:0;16666:98;;15549:6841;962:27112:53;16780:16:0;16776:20;;962:27112:53;;16776:24:0;16772:98;;15549:6841;962:27112:53;16886:16:0;16882:20;;962:27112:53;;16882:24:0;16878:98;;15549:6841;962:27112:53;16992:16:0;16988:20;;962:27112:53;;16988:24:0;16984:98;;15549:6841;962:27112:53;17098:15:0;17094:19;;962:27112:53;;17094:23:0;17090:97;;15549:6841;962:27112:53;17203:15:0;17199:19;;962:27112:53;;17199:23:0;17195:97;;15549:6841;962:27112:53;17308:15:0;17304:19;;962:27112:53;;17304:23:0;17300:97;;15549:6841;962:27112:53;17413:15:0;17409:19;;962:27112:53;;17409:23:0;17405:97;;15549:6841;962:27112:53;17518:14:0;17514:18;;962:27112:53;;17514:22:0;17510:96;;15549:6841;962:27112:53;17622:14:0;17618:18;;962:27112:53;;17618:22:0;17614:96;;15549:6841;962:27112:53;17726:14:0;17722:18;;962:27112:53;;17722:22:0;17718:96;;15549:6841;962:27112:53;17830:14:0;17826:18;;962:27112:53;;17826:22:0;17822:96;;15549:6841;962:27112:53;17934:13:0;17930:17;;962:27112:53;;17930:21:0;17926:95;;15549:6841;962:27112:53;18037:13:0;18033:17;;962:27112:53;;18033:21:0;18029:95;;15549:6841;962:27112:53;18140:13:0;18136:17;;962:27112:53;;18136:21:0;18132:95;;15549:6841;962:27112:53;18243:13:0;18239:17;;962:27112:53;;18239:21:0;18235:95;;15549:6841;962:27112:53;18346:12:0;18342:16;;962:27112:53;;18342:20:0;18338:94;;15549:6841;962:27112:53;18448:12:0;18444:16;;962:27112:53;;18444:20:0;18440:94;;15549:6841;962:27112:53;18550:12:0;18546:16;;962:27112:53;;18546:20:0;18542:94;;15549:6841;962:27112:53;18652:12:0;18648:16;;962:27112:53;;18648:20:0;18644:94;;15549:6841;962:27112:53;18754:11:0;18750:15;;962:27112:53;;18750:19:0;18746:93;;15549:6841;962:27112:53;18855:11:0;18851:15;;962:27112:53;;18851:19:0;18847:93;;15549:6841;962:27112:53;18956:11:0;18952:15;;962:27112:53;;18952:19:0;18948:93;;15549:6841;962:27112:53;19057:11:0;19053:15;;962:27112:53;;19053:19:0;19049:93;;15549:6841;962:27112:53;19158:10:0;19154:14;;962:27112:53;;19154:18:0;19150:92;;15549:6841;962:27112:53;19258:10:0;19254:14;;962:27112:53;;19254:18:0;19250:92;;15549:6841;962:27112:53;19358:10:0;19354:14;;962:27112:53;;19354:18:0;19350:92;;15549:6841;962:27112:53;19458:10:0;19454:14;;962:27112:53;;19454:18:0;19450:92;;15549:6841;962:27112:53;19558:9:0;19554:13;;962:27112:53;;19554:17:0;19550:91;;15549:6841;962:27112:53;19657:9:0;19653:13;;962:27112:53;;19653:17:0;19649:91;;15549:6841;962:27112:53;19756:9:0;19752:13;;962:27112:53;;19752:17:0;19748:91;;15549:6841;962:27112:53;19855:9:0;19851:13;;962:27112:53;;19851:17:0;19847:91;;15549:6841;962:27112:53;19954:8:0;19950:12;;962:27112:53;;19950:16:0;19946:90;;15549:6841;962:27112:53;20052:8:0;20048:12;;962:27112:53;;20048:16:0;20044:90;;15549:6841;962:27112:53;20150:8:0;20146:12;;962:27112:53;;20146:16:0;20142:90;;15549:6841;962:27112:53;20248:8:0;20244:12;;962:27112:53;;20244:16:0;20240:90;;15549:6841;962:27112:53;20346:7:0;20342:11;;962:27112:53;;20342:15:0;20338:89;;15549:6841;962:27112:53;20443:7:0;20439:11;;962:27112:53;;20439:15:0;20435:89;;15549:6841;962:27112:53;20540:7:0;20536:11;;962:27112:53;;20536:15:0;20532:89;;15549:6841;962:27112:53;20637:7:0;20633:11;;962:27112:53;;20633:15:0;20629:89;;15549:6841;962:27112:53;20734:6:0;20730:10;;962:27112:53;;20730:14:0;20726:88;;15549:6841;962:27112:53;20830:6:0;20826:10;;962:27112:53;;20826:14:0;20822:88;;15549:6841;962:27112:53;20926:6:0;20922:10;;962:27112:53;;20922:14:0;20918:88;;15549:6841;962:27112:53;21022:6:0;21018:10;;962:27112:53;;21018:14:0;21014:88;;15549:6841;962:27112:53;21118:5:0;21114:9;;962:27112:53;;21114:13:0;21110:87;;15549:6841;962:27112:53;21213:5:0;21209:9;;962:27112:53;;21209:13:0;21205:87;;15549:6841;962:27112:53;21308:5:0;21304:9;;962:27112:53;;21304:13:0;21300:87;;15549:6841;962:27112:53;21403:5:0;21399:9;;962:27112:53;;21399:13:0;21395:87;;15549:6841;962:27112:53;21498:4:0;21494:8;;962:27112:53;;21494:12:0;21490:86;;15549:6841;962:27112:53;21592:4:0;21588:8;;962:27112:53;;21588:12:0;21584:86;;15549:6841;962:27112:53;21686:4:0;21682:8;;962:27112:53;;21682:12:0;21678:86;;15549:6841;962:27112:53;21780:4:0;21776:8;;962:27112:53;;21776:12:0;21772:86;;15549:6841;962:27112:53;21874:3:0;21870:7;;962:27112:53;;21870:11:0;21866:85;;15549:6841;962:27112:53;21967:3:0;21963:7;;962:27112:53;;21963:11:0;21959:85;;15549:6841;962:27112:53;22060:3:0;22056:7;;962:27112:53;;22056:11:0;22052:85;;15549:6841;22153:3;962:27112:53;22149:7:0;;962:27112:53;;22149:11:0;22145:85;;15549:6841;21592:4;962:27112:53;;;22267:2:0;962:27112:53;;;;958:34:0;22300:38;;962:27112:53;;;;15549:6841:0;:::o;22145:85::-;962:27112:53;22188:35:0;962:27112:53;21498:4:0;962:27112:53;22145:85:0;;;22052;22095:35;962:27112:53;;;21498:4:0;962:27112:53;;22052:85:0;;21959;962:27112:53;22002:35:0;962:27112:53;21498:4:0;962:27112:53;21959:85:0;;;21866;962:27112:53;21909:35:0;962:27112:53;21498:4:0;962:27112:53;21866:85:0;;;21772:86;962:27112:53;21816:35:0;962:27112:53;21498:4:0;962:27112:53;21772:86:0;;;21678;962:27112:53;21722:35:0;962:27112:53;21498:4:0;962:27112:53;21678:86:0;;;21584;962:27112:53;21628:35:0;962:27112:53;21498:4:0;962:27112:53;21584:86:0;;;21490;962:27112:53;21534:35:0;962:27112:53;21498:4:0;962:27112:53;21490:86:0;;;21395:87;962:27112:53;21440:35:0;962:27112:53;21479:3:0;962:27112:53;21395:87:0;;;21300;962:27112:53;21345:35:0;962:27112:53;21384:3:0;962:27112:53;21300:87:0;;;21205;962:27112:53;21250:35:0;962:27112:53;21289:3:0;962:27112:53;21205:87:0;;;21110;962:27112:53;21155:35:0;962:27112:53;21194:3:0;962:27112:53;21110:87:0;;;21014:88;962:27112:53;21060:35:0;962:27112:53;21099:3:0;962:27112:53;21014:88:0;;;20918;962:27112:53;20964:35:0;962:27112:53;21003:3:0;962:27112:53;20918:88:0;;;20822;962:27112:53;20868:35:0;962:27112:53;20907:3:0;962:27112:53;20822:88:0;;;20726;962:27112:53;20772:35:0;962:27112:53;20811:3:0;962:27112:53;20726:88:0;;;20629:89;962:27112:53;20676:35:0;962:27112:53;20715:3:0;962:27112:53;20629:89:0;;;20532;962:27112:53;20579:35:0;962:27112:53;20618:3:0;962:27112:53;20532:89:0;;;20435;962:27112:53;20482:35:0;962:27112:53;20521:3:0;962:27112:53;20435:89:0;;;20338;962:27112:53;20385:35:0;962:27112:53;20424:3:0;962:27112:53;20338:89:0;;;20240:90;962:27112:53;20288:35:0;962:27112:53;20327:3:0;962:27112:53;20240:90:0;;;20142;962:27112:53;20190:35:0;962:27112:53;20229:3:0;962:27112:53;20142:90:0;;;20044;962:27112:53;20092:35:0;962:27112:53;20131:3:0;962:27112:53;20044:90:0;;;19946;962:27112:53;19994:35:0;962:27112:53;20033:3:0;962:27112:53;19946:90:0;;;19847:91;962:27112:53;19896:35:0;962:27112:53;19935:3:0;962:27112:53;19847:91:0;;;19748;962:27112:53;19797:35:0;962:27112:53;19836:3:0;962:27112:53;19748:91:0;;;19649;962:27112:53;19698:35:0;962:27112:53;19737:3:0;962:27112:53;19649:91:0;;;19550;962:27112:53;19599:35:0;962:27112:53;19638:3:0;962:27112:53;19550:91:0;;;19450:92;962:27112:53;19500:35:0;962:27112:53;19539:3:0;962:27112:53;19450:92:0;;;19350;962:27112:53;19400:35:0;962:27112:53;19439:3:0;962:27112:53;19350:92:0;;;19250;962:27112:53;19300:35:0;962:27112:53;19339:3:0;962:27112:53;19250:92:0;;;19150;962:27112:53;19200:35:0;962:27112:53;19239:3:0;962:27112:53;19150:92:0;;;19049:93;962:27112:53;19100:35:0;962:27112:53;19139:3:0;962:27112:53;19049:93:0;;;18948;962:27112:53;18999:35:0;962:27112:53;19038:3:0;962:27112:53;18948:93:0;;;18847;962:27112:53;18898:35:0;962:27112:53;18937:3:0;962:27112:53;18847:93:0;;;18746;962:27112:53;18797:35:0;962:27112:53;18836:3:0;962:27112:53;18746:93:0;;;18644:94;962:27112:53;18696:35:0;962:27112:53;18735:3:0;962:27112:53;18644:94:0;;;18542;962:27112:53;18594:35:0;962:27112:53;18633:3:0;962:27112:53;18542:94:0;;;18440;962:27112:53;18492:35:0;962:27112:53;18531:3:0;962:27112:53;18440:94:0;;;18338;962:27112:53;18390:35:0;962:27112:53;18429:3:0;962:27112:53;18338:94:0;;;18235:95;962:27112:53;18288:35:0;962:27112:53;18327:3:0;962:27112:53;18235:95:0;;;18132;962:27112:53;18185:35:0;962:27112:53;18224:3:0;962:27112:53;18132:95:0;;;18029;962:27112:53;18082:35:0;962:27112:53;18121:3:0;962:27112:53;18029:95:0;;;17926;962:27112:53;17979:35:0;962:27112:53;18018:3:0;962:27112:53;17926:95:0;;;17822:96;962:27112:53;17876:35:0;962:27112:53;17915:3:0;962:27112:53;17822:96:0;;;17718;962:27112:53;17772:35:0;962:27112:53;17811:3:0;962:27112:53;17718:96:0;;;17614;962:27112:53;17668:35:0;962:27112:53;17707:3:0;962:27112:53;17614:96:0;;;17510;962:27112:53;17564:35:0;962:27112:53;17603:3:0;962:27112:53;17510:96:0;;;17405:97;962:27112:53;17460:35:0;962:27112:53;17499:3:0;962:27112:53;17405:97:0;;;17300;962:27112:53;17355:35:0;962:27112:53;17394:3:0;962:27112:53;17300:97:0;;;17195;962:27112:53;17250:35:0;962:27112:53;17289:3:0;962:27112:53;17195:97:0;;;17090;962:27112:53;17145:35:0;962:27112:53;17184:3:0;962:27112:53;17090:97:0;;;16984:98;962:27112:53;17040:35:0;962:27112:53;17079:3:0;962:27112:53;16984:98:0;;;16878;962:27112:53;16934:35:0;962:27112:53;16973:3:0;962:27112:53;16878:98:0;;;16772;962:27112:53;16828:35:0;962:27112:53;16867:3:0;962:27112:53;16772:98:0;;;16666;962:27112:53;16722:35:0;962:27112:53;16761:3:0;962:27112:53;16666:98:0;;;16559:99;962:27112:53;16616:35:0;962:27112:53;16655:3:0;962:27112:53;16559:99:0;;;16452;962:27112:53;16509:35:0;962:27112:53;16548:3:0;962:27112:53;16452:99:0;;;16345;962:27112:53;16402:35:0;962:27112:53;16441:3:0;962:27112:53;16345:99:0;;;16238;962:27112:53;16295:35:0;962:27112:53;16334:3:0;962:27112:53;16238:99:0;;;16130:100;962:27112:53;16188:35:0;962:27112:53;16227:3:0;962:27112:53;16130:100:0;;;16022;962:27112:53;16080:35:0;962:27112:53;16119:3:0;962:27112:53;16022:100:0;;;15914;962:27112:53;15972:35:0;962:27112:53;16011:3:0;962:27112:53;15914:100:0;;;15806;962:27112:53;;-1:-1:-1;15806:100:0;","linkReferences":{},"immutableReferences":{"50124":[{"start":11478,"length":32},{"start":12775,"length":32},{"start":13375,"length":32}]}},"methodIdentifiers":{"burn(address,address,uint256,uint256,bool)":"6863f5bc","burnAmounts(uint256,uint256,uint256[])":"228fa850","burnSwap(address,address,uint256,uint256,uint256,bool,uint256,uint256)":"8d01fa44","burnSwapAmounts(uint256,uint256,uint256,(int128,int128[]),uint256[],uint256)":"f16b7c26","initialMint(address,uint256,int128)":"c5eabfb9","mint(address,address,uint256,uint256)":"b3f1c93d","mintAmounts(uint256,uint256,uint256[])":"cdc2468b","swapMint(address,address,uint256,uint256,uint256,uint256,uint256)":"3dd3c805","swapMintAmounts(uint256,uint256,uint256,(int128,int128[]),uint256[],uint256)":"e9f317f0"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract NativeWrapper\",\"name\":\"wrapper_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpBurned\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFee\",\"type\":\"uint256\"}],\"name\":\"BurnSwap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpMinted\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFee\",\"type\":\"uint256\"}],\"name\":\"SwapMint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"withdrawAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"lpTokenAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"cachedUintBalances\",\"type\":\"uint256[]\"}],\"name\":\"burnAmounts\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"withdrawAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePpm\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolFeePpm\",\"type\":\"uint256\"}],\"name\":\"burnSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outFee\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePpm\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"int128\",\"name\":\"kappa\",\"type\":\"int128\"},{\"internalType\":\"int128[]\",\"name\":\"qInternal\",\"type\":\"int128[]\"}],\"internalType\":\"struct LMSRStabilized.State\",\"name\":\"lmsrState\",\"type\":\"tuple\"},{\"internalType\":\"uint256[]\",\"name\":\"bases_\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply_\",\"type\":\"uint256\"}],\"name\":\"burnSwapAmounts\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outFee\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpTokens\",\"type\":\"uint256\"},{\"internalType\":\"int128\",\"name\":\"KAPPA\",\"type\":\"int128\"}],\"name\":\"initialMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lpMinted\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lpTokenAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lpMinted\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"lpTokenAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"cachedUintBalances\",\"type\":\"uint256[]\"}],\"name\":\"mintAmounts\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"depositAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePpm\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolFeePpm\",\"type\":\"uint256\"}],\"name\":\"swapMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lpMinted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inFee\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"inputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePpm\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"int128\",\"name\":\"kappa\",\"type\":\"int128\"},{\"internalType\":\"int128[]\",\"name\":\"qInternal\",\"type\":\"int128[]\"}],\"internalType\":\"struct LMSRStabilized.State\",\"name\":\"lmsrState\",\"type\":\"tuple\"},{\"internalType\":\"uint256[]\",\"name\":\"bases_\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply_\",\"type\":\"uint256\"}],\"name\":\"swapMintAmounts\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lpMinted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inFee\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract inherits from PartyPoolBase to access storage and internal functions\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"burn(address,address,uint256,uint256,bool)\":{\"details\":\"Payer must own or approve the LP tokens being burned. The function updates LMSR state proportionally to reflect the reduced pool size after the withdrawal.\",\"params\":{\"deadline\":\"timestamp after which the transaction will revert. Pass 0 to ignore.\",\"lpAmount\":\"amount of LP tokens to burn (proportional withdrawal)\",\"payer\":\"address that provides the LP tokens to burn\",\"receiver\":\"address that receives the withdrawn tokens\",\"unwrap\":\"if true and the native token is being withdrawn, it is unwraped and sent as native currency\"}},\"burnSwap(address,address,uint256,uint256,uint256,bool,uint256,uint256)\":{\"details\":\"The function burns LP _tokens (authorization via allowance if needed), sends the single-asset payout and updates LMSR state.\",\"params\":{\"deadline\":\"optional deadline\",\"lpAmount\":\"amount of LP _tokens to burn\",\"outputTokenIndex\":\"index of target asset to receive\",\"payer\":\"who burns LP _tokens\",\"receiver\":\"who receives the single asset\",\"swapFeePpm\":\"fee in parts-per-million for this pool (may be used for future fee logic)\"},\"returns\":{\"amountOut\":\"uint amount of asset i sent to receiver\",\"outFee\":\"uint amount of asset i kept as an LP and protocol fee\"}},\"burnSwapAmounts(uint256,uint256,uint256,(int128,int128[]),uint256[],uint256)\":{\"details\":\"This is a pure view function that computes burn swap amounts from provided state\",\"params\":{\"bases_\":\"scaling _bases for each token\",\"lmsrState\":\"current LMSR state\",\"lpAmount\":\"amount of LP _tokens to burn\",\"outputTokenIndex\":\"index of target asset to receive\",\"swapFeePpm\":\"fee in parts-per-million\",\"totalSupply_\":\"current total LP token supply\"},\"returns\":{\"amountOut\":\"amount of target asset that would be received\"}},\"mintAmounts(uint256,uint256,uint256[])\":{\"details\":\"Returns the minimum token amounts (rounded up) that must be supplied to receive lpTokenAmount LP _tokens at current pool proportions. If the pool is empty (initial deposit) returns zeros because the initial deposit is handled by transferring _tokens then calling mint().\",\"params\":{\"lpTokenAmount\":\"The amount of LP _tokens desired\"},\"returns\":{\"depositAmounts\":\"Array of token amounts to deposit (rounded up)\"}},\"swapMint(address,address,uint256,uint256,uint256,uint256,uint256)\":{\"details\":\"swapMint executes as an exact-in planned swap followed by proportional scaling of qInternal. The function emits SwapMint (gross, net, fee) and also emits Mint for LP issuance.\",\"params\":{\"deadline\":\"optional deadline\",\"inputTokenIndex\":\"index of the input token\",\"maxAmountIn\":\"maximum uint token input (inclusive of fee)\",\"payer\":\"who transfers the input token\",\"receiver\":\"who receives the minted LP _tokens\",\"swapFeePpm\":\"fee in parts-per-million for this pool\"},\"returns\":{\"amountIn\":\"actual input used (uint256), lpMinted actual LP minted (uint256), inFee fee taken from the input (uint256)\"}},\"swapMintAmounts(uint256,uint256,uint256,(int128,int128[]),uint256[],uint256)\":{\"details\":\"This is a pure view function that computes swap mint amounts from provided state\",\"params\":{\"bases_\":\"scaling _bases for each token\",\"inputTokenIndex\":\"index of the input token\",\"lmsrState\":\"current LMSR state\",\"maxAmountIn\":\"maximum amount of token to deposit (inclusive of fee)\",\"swapFeePpm\":\"fee in parts-per-million\",\"totalSupply_\":\"current total LP token supply\"},\"returns\":{\"amountIn\":\"actual input amount used (excluding fee)\",\"inFee\":\"fee amount charged\",\"lpMinted\":\"LP tokens that would be minted\"}}},\"title\":\"PartyPoolMintImpl - Implementation contract for mint and burn functions\",\"version\":1},\"userdoc\":{\"events\":{\"BurnSwap(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted instead of Burn when a burnSwap is executed.\"},\"SwapMint(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted instead of Swap when a single-token swapMint is executed.\"}},\"kind\":\"user\",\"methods\":{\"burn(address,address,uint256,uint256,bool)\":{\"notice\":\"Burn LP tokens and withdraw the proportional basket to receiver. Functional even if the pool has been killed.\"},\"burnSwap(address,address,uint256,uint256,uint256,bool,uint256,uint256)\":{\"notice\":\"Burn LP _tokens then swap the redeemed proportional basket into a single asset `outputTokenIndex` and send to receiver. This version of burn does not work if the vault has been killed, because it involves a swap. Use regular burn() to recover funds if the pool has been killed.\"},\"burnSwapAmounts(uint256,uint256,uint256,(int128,int128[]),uint256[],uint256)\":{\"notice\":\"Calculate the amounts for a burn swap operation\"},\"mintAmounts(uint256,uint256,uint256[])\":{\"notice\":\"Calculate the proportional deposit amounts required for a given LP token amount\"},\"swapMint(address,address,uint256,uint256,uint256,uint256,uint256)\":{\"notice\":\"Single-token mint: deposit a single token, charge swap-LMSR cost, and mint LP.\"},\"swapMintAmounts(uint256,uint256,uint256,(int128,int128[]),uint256[],uint256)\":{\"notice\":\"Calculate the amounts for a swap mint operation\"}},\"notice\":\"This contract contains the mint and burn implementation that will be called via delegatecall\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/PartyPoolMintImpl.sol\":\"PartyPoolMintImpl\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/abdk-libraries-solidity/ABDKMath64x64.sol\":{\"keccak256\":\"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97\",\"license\":\"BSD-4-Clause\",\"urls\":[\"bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7\",\"dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol\":{\"keccak256\":\"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd\",\"dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd\",\"dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168\",\"dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161\",\"dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"src/ERC20Internal.sol\":{\"keccak256\":\"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f\",\"dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk\"]},\"src/IOwnable.sol\":{\"keccak256\":\"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1\",\"dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9\"]},\"src/IPartyPool.sol\":{\"keccak256\":\"0x74b9531bdf2200f256cac6c2cd54c0efad7c1bdfbe694ee910df75448ffe93f4\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://aadd161d7e197b48e6be4198b0f4f81a10016b9904d024e0a361bf2d7f941475\",\"dweb:/ipfs/QmYuGyPZCigmt8va11oAHXPTpHFyF3d7ARDNacyr2jsDfa\"]},\"src/LMSRStabilized.sol\":{\"keccak256\":\"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3\",\"dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB\"]},\"src/NativeWrapper.sol\":{\"keccak256\":\"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238\",\"dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB\"]},\"src/OwnableInternal.sol\":{\"keccak256\":\"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca\",\"dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE\"]},\"src/PartyPoolBase.sol\":{\"keccak256\":\"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5\",\"dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5\"]},\"src/PartyPoolHelpers.sol\":{\"keccak256\":\"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5\",\"dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP\"]},\"src/PartyPoolMintImpl.sol\":{\"keccak256\":\"0xe9d9927cecd46a1f836b2c43e9d6184642b9e695c7462e5fb7c671a38aab7398\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8d821911d7982fc302929198539b27f72be100b91450c98d2e0081519f776499\",\"dweb:/ipfs/QmRChx1DPD1gKXwfD1m6aQ7pgh1aX6CvYLNX41ufdJteaJ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract NativeWrapper","name":"wrapper_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":false},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"uint256[]","name":"amounts","type":"uint256[]","indexed":false},{"internalType":"uint256","name":"lpBurned","type":"uint256","indexed":false}],"type":"event","name":"Burn","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":true},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"contract IERC20","name":"tokenOut","type":"address","indexed":true},{"internalType":"uint256","name":"amountIn","type":"uint256","indexed":false},{"internalType":"uint256","name":"amountOut","type":"uint256","indexed":false},{"internalType":"uint256","name":"lpFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolFee","type":"uint256","indexed":false}],"type":"event","name":"BurnSwap","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":false},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"uint256[]","name":"amounts","type":"uint256[]","indexed":false},{"internalType":"uint256","name":"lpMinted","type":"uint256","indexed":false}],"type":"event","name":"Mint","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":true},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"contract IERC20","name":"tokenIn","type":"address","indexed":true},{"internalType":"uint256","name":"amountIn","type":"uint256","indexed":false},{"internalType":"uint256","name":"amountOut","type":"uint256","indexed":false},{"internalType":"uint256","name":"lpFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolFee","type":"uint256","indexed":false}],"type":"event","name":"SwapMint","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"lpAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"unwrap","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"burn","outputs":[{"internalType":"uint256[]","name":"withdrawAmounts","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"lpTokenAmount","type":"uint256"},{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"internalType":"uint256[]","name":"cachedUintBalances","type":"uint256[]"}],"stateMutability":"pure","type":"function","name":"burnAmounts","outputs":[{"internalType":"uint256[]","name":"withdrawAmounts","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"lpAmount","type":"uint256"},{"internalType":"uint256","name":"outputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"unwrap","type":"bool"},{"internalType":"uint256","name":"swapFeePpm","type":"uint256"},{"internalType":"uint256","name":"protocolFeePpm","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burnSwap","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"outFee","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"lpAmount","type":"uint256"},{"internalType":"uint256","name":"outputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"swapFeePpm","type":"uint256"},{"internalType":"struct LMSRStabilized.State","name":"lmsrState","type":"tuple","components":[{"internalType":"int128","name":"kappa","type":"int128"},{"internalType":"int128[]","name":"qInternal","type":"int128[]"}]},{"internalType":"uint256[]","name":"bases_","type":"uint256[]"},{"internalType":"uint256","name":"totalSupply_","type":"uint256"}],"stateMutability":"pure","type":"function","name":"burnSwapAmounts","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"outFee","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"lpTokens","type":"uint256"},{"internalType":"int128","name":"KAPPA","type":"int128"}],"stateMutability":"payable","type":"function","name":"initialMint","outputs":[{"internalType":"uint256","name":"lpMinted","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"lpTokenAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"payable","type":"function","name":"mint","outputs":[{"internalType":"uint256","name":"lpMinted","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"lpTokenAmount","type":"uint256"},{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"internalType":"uint256[]","name":"cachedUintBalances","type":"uint256[]"}],"stateMutability":"pure","type":"function","name":"mintAmounts","outputs":[{"internalType":"uint256[]","name":"depositAmounts","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"inputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"swapFeePpm","type":"uint256"},{"internalType":"uint256","name":"protocolFeePpm","type":"uint256"}],"stateMutability":"payable","type":"function","name":"swapMint","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"lpMinted","type":"uint256"},{"internalType":"uint256","name":"inFee","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"inputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"uint256","name":"swapFeePpm","type":"uint256"},{"internalType":"struct LMSRStabilized.State","name":"lmsrState","type":"tuple","components":[{"internalType":"int128","name":"kappa","type":"int128"},{"internalType":"int128[]","name":"qInternal","type":"int128[]"}]},{"internalType":"uint256[]","name":"bases_","type":"uint256[]"},{"internalType":"uint256","name":"totalSupply_","type":"uint256"}],"stateMutability":"pure","type":"function","name":"swapMintAmounts","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"lpMinted","type":"uint256"},{"internalType":"uint256","name":"inFee","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"burn(address,address,uint256,uint256,bool)":{"details":"Payer must own or approve the LP tokens being burned. The function updates LMSR state proportionally to reflect the reduced pool size after the withdrawal.","params":{"deadline":"timestamp after which the transaction will revert. Pass 0 to ignore.","lpAmount":"amount of LP tokens to burn (proportional withdrawal)","payer":"address that provides the LP tokens to burn","receiver":"address that receives the withdrawn tokens","unwrap":"if true and the native token is being withdrawn, it is unwraped and sent as native currency"}},"burnSwap(address,address,uint256,uint256,uint256,bool,uint256,uint256)":{"details":"The function burns LP _tokens (authorization via allowance if needed), sends the single-asset payout and updates LMSR state.","params":{"deadline":"optional deadline","lpAmount":"amount of LP _tokens to burn","outputTokenIndex":"index of target asset to receive","payer":"who burns LP _tokens","receiver":"who receives the single asset","swapFeePpm":"fee in parts-per-million for this pool (may be used for future fee logic)"},"returns":{"amountOut":"uint amount of asset i sent to receiver","outFee":"uint amount of asset i kept as an LP and protocol fee"}},"burnSwapAmounts(uint256,uint256,uint256,(int128,int128[]),uint256[],uint256)":{"details":"This is a pure view function that computes burn swap amounts from provided state","params":{"bases_":"scaling _bases for each token","lmsrState":"current LMSR state","lpAmount":"amount of LP _tokens to burn","outputTokenIndex":"index of target asset to receive","swapFeePpm":"fee in parts-per-million","totalSupply_":"current total LP token supply"},"returns":{"amountOut":"amount of target asset that would be received"}},"mintAmounts(uint256,uint256,uint256[])":{"details":"Returns the minimum token amounts (rounded up) that must be supplied to receive lpTokenAmount LP _tokens at current pool proportions. If the pool is empty (initial deposit) returns zeros because the initial deposit is handled by transferring _tokens then calling mint().","params":{"lpTokenAmount":"The amount of LP _tokens desired"},"returns":{"depositAmounts":"Array of token amounts to deposit (rounded up)"}},"swapMint(address,address,uint256,uint256,uint256,uint256,uint256)":{"details":"swapMint executes as an exact-in planned swap followed by proportional scaling of qInternal. The function emits SwapMint (gross, net, fee) and also emits Mint for LP issuance.","params":{"deadline":"optional deadline","inputTokenIndex":"index of the input token","maxAmountIn":"maximum uint token input (inclusive of fee)","payer":"who transfers the input token","receiver":"who receives the minted LP _tokens","swapFeePpm":"fee in parts-per-million for this pool"},"returns":{"amountIn":"actual input used (uint256), lpMinted actual LP minted (uint256), inFee fee taken from the input (uint256)"}},"swapMintAmounts(uint256,uint256,uint256,(int128,int128[]),uint256[],uint256)":{"details":"This is a pure view function that computes swap mint amounts from provided state","params":{"bases_":"scaling _bases for each token","inputTokenIndex":"index of the input token","lmsrState":"current LMSR state","maxAmountIn":"maximum amount of token to deposit (inclusive of fee)","swapFeePpm":"fee in parts-per-million","totalSupply_":"current total LP token supply"},"returns":{"amountIn":"actual input amount used (excluding fee)","inFee":"fee amount charged","lpMinted":"LP tokens that would be minted"}}},"version":1},"userdoc":{"kind":"user","methods":{"burn(address,address,uint256,uint256,bool)":{"notice":"Burn LP tokens and withdraw the proportional basket to receiver. Functional even if the pool has been killed."},"burnSwap(address,address,uint256,uint256,uint256,bool,uint256,uint256)":{"notice":"Burn LP _tokens then swap the redeemed proportional basket into a single asset `outputTokenIndex` and send to receiver. This version of burn does not work if the vault has been killed, because it involves a swap. Use regular burn() to recover funds if the pool has been killed."},"burnSwapAmounts(uint256,uint256,uint256,(int128,int128[]),uint256[],uint256)":{"notice":"Calculate the amounts for a burn swap operation"},"mintAmounts(uint256,uint256,uint256[])":{"notice":"Calculate the proportional deposit amounts required for a given LP token amount"},"swapMint(address,address,uint256,uint256,uint256,uint256,uint256)":{"notice":"Single-token mint: deposit a single token, charge swap-LMSR cost, and mint LP."},"swapMintAmounts(uint256,uint256,uint256,(int128,int128[]),uint256[],uint256)":{"notice":"Calculate the amounts for a swap mint operation"}},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/PartyPoolMintImpl.sol":"PartyPoolMintImpl"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/abdk-libraries-solidity/ABDKMath64x64.sol":{"keccak256":"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97","urls":["bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7","dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN"],"license":"BSD-4-Clause"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d","urls":["bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100","dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc","urls":["bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037","dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44","urls":["bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d","dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol":{"keccak256":"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e","urls":["bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd","dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86","urls":["bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd","dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9","urls":["bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168","dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol":{"keccak256":"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0","urls":["bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161","dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"},"src/ERC20Internal.sol":{"keccak256":"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36","urls":["bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f","dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk"],"license":"UNLICENSED"},"src/IOwnable.sol":{"keccak256":"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990","urls":["bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1","dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9"],"license":"MIT"},"src/IPartyPool.sol":{"keccak256":"0x74b9531bdf2200f256cac6c2cd54c0efad7c1bdfbe694ee910df75448ffe93f4","urls":["bzz-raw://aadd161d7e197b48e6be4198b0f4f81a10016b9904d024e0a361bf2d7f941475","dweb:/ipfs/QmYuGyPZCigmt8va11oAHXPTpHFyF3d7ARDNacyr2jsDfa"],"license":"UNLICENSED"},"src/LMSRStabilized.sol":{"keccak256":"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b","urls":["bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3","dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB"],"license":"UNLICENSED"},"src/NativeWrapper.sol":{"keccak256":"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579","urls":["bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238","dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB"],"license":"UNLICENSED"},"src/OwnableInternal.sol":{"keccak256":"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581","urls":["bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca","dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE"],"license":"MIT"},"src/PartyPoolBase.sol":{"keccak256":"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999","urls":["bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5","dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5"],"license":"UNLICENSED"},"src/PartyPoolHelpers.sol":{"keccak256":"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c","urls":["bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5","dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP"],"license":"UNLICENSED"},"src/PartyPoolMintImpl.sol":{"keccak256":"0xe9d9927cecd46a1f836b2c43e9d6184642b9e695c7462e5fb7c671a38aab7398","urls":["bzz-raw://8d821911d7982fc302929198539b27f72be100b91450c98d2e0081519f776499","dweb:/ipfs/QmRChx1DPD1gKXwfD1m6aQ7pgh1aX6CvYLNX41ufdJteaJ"],"license":"UNLICENSED"}},"version":1},"id":53} \ No newline at end of file diff --git a/deployment/11155111/v1/out/PartyPoolSwapImpl.sol/PartyPoolSwapImpl.json b/deployment/11155111/v1/out/PartyPoolSwapImpl.sol/PartyPoolSwapImpl.json index 2d16c3c..8ce6fd2 100644 --- a/deployment/11155111/v1/out/PartyPoolSwapImpl.sol/PartyPoolSwapImpl.json +++ b/deployment/11155111/v1/out/PartyPoolSwapImpl.sol/PartyPoolSwapImpl.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"wrapper_","type":"address","internalType":"contract NativeWrapper"}],"stateMutability":"nonpayable"},{"type":"function","name":"collectProtocolFees","inputs":[{"name":"dest","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"flashLoan","inputs":[{"name":"receiver","type":"address","internalType":"contract IERC3156FlashBorrower"},{"name":"tokenAddr","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"flashFeePpm","type":"uint256","internalType":"uint256"},{"name":"protocolFeePpm","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapToLimit","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"inputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"outputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"limitPrice","type":"int128","internalType":"int128"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"unwrap","type":"bool","internalType":"bool"},{"name":"swapFeePpm","type":"uint256","internalType":"uint256"},{"name":"protocolFeePpm","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountInUsed","type":"uint256","internalType":"uint256"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"inFee","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"swapToLimitAmounts","inputs":[{"name":"inputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"outputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"limitPrice","type":"int128","internalType":"int128"},{"name":"bases","type":"uint256[]","internalType":"uint256[]"},{"name":"kappa","type":"int128","internalType":"int128"},{"name":"qInternal","type":"int128[]","internalType":"int128[]"},{"name":"swapFeePpm","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"inFee","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"event","name":"Flash","inputs":[{"name":"initiator","type":"address","indexed":true,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"contract IERC3156FlashBorrower"},{"name":"token","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lpFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ProtocolFeesCollected","inputs":[],"anonymous":false},{"type":"event","name":"Swap","inputs":[{"name":"payer","type":"address","indexed":false,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"tokenIn","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"tokenOut","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lpFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60a03461009c57601f6138d638819003918201601f19168301916001600160401b038311848410176100a05780849260209460405283398101031261009c57516001600160a01b038116810361009c5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005560805260405161382190816100b58239608051818181610cfc015281816113670152611dfa0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f5f3560e01c80632a54db01146116555780638a3d858d146109d8578063bf05a0a6146107db5763e49cd47514610046575f80fd5b346107d85760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107d85760043573ffffffffffffffffffffffffffffffffffffffff811681036107d65761009d61192b565b60443567ffffffffffffffff606435116107d2573660236064350112156107d25767ffffffffffffffff60643560040135116107d257366024606435600401356064350101116107d25760a435916100f3611caa565b61010260ff6008541615611aab565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff86165afa9081156107c7578691610795575b5082116107375773ffffffffffffffffffffffffffffffffffffffff81168552600e602052604085205480156106d957807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101116106ac576101c0608435846129da565b50908694801515806106a3575b61060d575b5061020a8473ffffffffffffffffffffffffffffffffffffffff881673ffffffffffffffffffffffffffffffffffffffff8616611d21565b6040517f23e30c8b00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015284604482015282606482015260a060848201526064356004013560a48201526064356004013560246064350160c48301378760c4606435600401358301015260208160c4817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60643560040135011681010301818b73ffffffffffffffffffffffffffffffffffffffff8c165af1801561054e5788906105b7575b7f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd9915003610559576103576103248386611b10565b73ffffffffffffffffffffffffffffffffffffffff851673ffffffffffffffffffffffffffffffffffffffff8916611de2565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff88165afa90811561054e57869798969596916104ef575b507f249e0bf62ff982342c6a63926041694a221796af4b9ebacefc45823da42348139473ffffffffffffffffffffffffffffffffffffffff94936104938461045d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6104566104989761043e61042f846104bd9c016119e4565b90549060031b1c821015611b67565b6104498386016119e4565b90549060031b1c90611a71565b9201611a41565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b611a71565b9583604051948594169816963396846040919493926060820195825260208201520152565b0390a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055602060405160018152f35b94505091906020843d602011610546575b8161050d6020938361195e565b8101031261054257925185939192907f249e0bf62ff982342c6a63926041694a221796af4b9ebacefc45823da42348136103b5565b5f80fd5b3d9150610500565b6040513d8a823e3d90fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f666c6173683a2063616c6c6261636b00000000000000000000000000000000006044820152fd5b506020813d602011610605575b816105d16020938361195e565b81010312610601577f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd990516102ef565b8780fd5b3d91506105c4565b620f424091955061061e9083611b1d565b04938461062c575b5f6101d2565b61069e61065a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83016119e4565b61066a8883548360031b1c611b10565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b610626565b508215156101cd565b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f666c6173683a20746f6b656e206e6f7420696e20706f6f6c00000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f666c6173683a20616d6f756e74203e2062616c616e63650000000000000000006044820152fd5b90506020813d6020116107bf575b816107b06020938361195e565b8101031261054257515f61015b565b3d91506107a3565b6040513d88823e3d90fd5b8380fd5b505b80fd5b50346107d85760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107d8576004356024356044359182600f0b83036107d2576064359067ffffffffffffffff82116109d457366023830112156109d45781600401359161084c836119cc565b9261085a604051948561195e565b8084526024602085019160051b8301019136831161060157602401905b8282106109c45750505061088961194e565b9360a43567ffffffffffffffff81116109c057366023820112156109c05780600401356108b5816119cc565b916108c3604051938461195e565b8183526024602084019260051b820101903682116109bc57602401915b81831061099e575050509161090361091392868361090c98979660c4359a611f9d565b95909184611bcc565b5190612757565b9461091f861515611be0565b9480948061096f575b50509161093b6109429261096b94611bcc565b5190612b1a565b9261094e841515611c45565b604051938493846040919493926060820195825260208201520152565b0390f35b81965061096b949295509261099461098d6109429561093b946129a1565b8098611b10565b9592945092610928565b823580600f0b81036109b8578152602092830192016108e0565b8a80fd5b8980fd5b8680fd5b8135815260209182019101610877565b8480fd5b506101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261054257610a0c611908565b90610a1561192b565b610a1d61194e565b9160c43560a43581151582036105425760e43590610a4060ff6008541615611aab565b610a48611caa565b600b5480604435109081611649575b50156115eb575f86600f0b131561158d578015908115611582575b501561152457602495602073ffffffffffffffffffffffffffffffffffffffff610a9d604435611a29565b90549060031b1c16604051988980927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa958615611294575f966114ef575b60249750602073ffffffffffffffffffffffffffffffffffffffff610b0b606435611a29565b90549060031b1c16604051998a80927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa978815611294575f986114bb575b50600954604051600a80548083525f918252602083019493600f0b91907fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a85b8160018401106114905795610bbf928592610bcc98549181811061147c575b1061146b575b50038361195e565b6064359160443591611f9d565b610bea610bdd604499939935611a59565b90549060031b1c89612757565b97610bf6891515611be0565b5f9789958061144a575b50610c1c610c0f606435611a59565b90549060031b1c84612b1a565b9a610c288c1515611c45565b73ffffffffffffffffffffffffffffffffffffffff610c48604435611a29565b90549060031b1c1696610c5c818989611de2565b604051957f70a082310000000000000000000000000000000000000000000000000000000087523060048801526020876024818c5afa968715611294575f97611412575b5090610cab91611b10565b850361138e5773ffffffffffffffffffffffffffffffffffffffff610cd1606435611a29565b90549060031b1c16978061134f575b1561129f5773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b15610542575f809160248f60405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af1908115611294578d9161127f575b508980808093865af13d1561127a573d67ffffffffffffffff811161124d5760405190610dbe60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116018361195e565b81528a60203d92013e5b156111ef575b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526020816024818c5afa9081156111e4578d908b926111ae575b50610e1e9192611a71565b810361112a5788948a61010435151580611121575b6110c8575b50610e8f91610e6b610e60610e8493610e5561042f6044356119e4565b6104496044356119e4565b61045d604435611a41565b610e7961042f6064356119e4565b6104496064356119e4565b61045d606435611a41565b8782600f0b131561106a578783600f0b131561100c577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c93610f5e610f5360a095610f39610f0673ffffffffffffffffffffffffffffffffffffffff97610ef7604435611f5d565b90549060031b1c600f0b6129ff565b610f11604435611f5d565b9091906fffffffffffffffffffffffffffffffff83549160031b928116831b921b1916179055565b610f44606435611f5d565b90549060031b1c600f0b612a57565b610f11606435611f5d565b610f68818b611a71565b83604051971687528b60208801528c6040880152606087015260808601521692a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015610fdb575b50505061096b90604051938493846040919493926060820195825260208201520152565b8280809381938290611003575b3390f115610ff7578080610fb7565b604051903d90823e3d90fd5b506108fc610fe8565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a20616d6f756e744f7574203c3d20300000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4d53523a20616d6f756e74496e203c3d2030000000000000000000000000006044820152fd5b610e8491965091610e6b610e60620f42406110ea610e8f966101043590611b1d565b0498896110fe575b9350505091508a610e38565b61111c61110c6044356119e4565b61066a8d83548360031b1c611b10565b6110f2565b50801515610e33565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f73776170546f4c696d69743a206e6f6e2d7374616e6461726420746f6b656e4f60448201527f75740000000000000000000000000000000000000000000000000000000000006064820152fd5b9150506020813d6020116111dc575b816111ca6020938361195e565b8101031261054257518c610e1e610e13565b3d91506111bd565b6040513d8c823e3d90fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b60248b7f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b610dc8565b61128c919a505f9061195e565b5f985f610d69565b6040513d5f823e3d90fd5b6040517fa9059cbb000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff83166004528c60245260205f604481808d5af19060015f511482161561132e575b604052610dce57877f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b90600181151661134657893b15153d151616906112fb565b503d5f823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168814610ce0565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f73776170546f4c696d69743a206e6f6e2d7374616e6461726420746f6b656e4960448201527f6e000000000000000000000000000000000000000000000000000000000000006064820152fd5b919096506020823d602011611442575b8161142f6020938361195e565b8101031261054257905195610cab610ca0565b3d9150611422565b909550611459919850896129a1565b96611464888a611b10565b945f610c00565b60801d600f0b81526020015f610bb7565b92602060019184600f0b8152019301610bb1565b8054600f81810b895260809190911d900b602088015260409096019560029290920191600101610b92565b9097506020813d6020116114e7575b816114d76020938361195e565b810103126105425751965f610b53565b3d91506114ca565b95506020873d60201161151c575b8161150a6020938361195e565b81010312610542576024965195610ae5565b3d91506114fd565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f73776170546f4c696d69743a20646561646c696e6520657863656564656400006044820152fd5b90504211155f610a72565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f73776170546f4c696d69743a206c696d6974203c3d20300000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f73776170546f4c696d69743a20696478000000000000000000000000000000006044820152fd5b9050606435105f610a57565b346105425760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105425761168c611908565b611694611caa565b73ffffffffffffffffffffffffffffffffffffffff8116156118aa57600b545f5b818110611706577fd508feb4afc81230b8e5dcca865a405a72db1f928a5064f893ab22ab56ec25215f80a160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055005b61170f816119e4565b90549060031b1c9081156118a1576024602073ffffffffffffffffffffffffffffffffffffffff61173f84611a29565b90549060031b1c16604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa908115611294575f91611870575b5082811061181257826117e06117d760019561180c946117a6876119e4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82549160031b1b19169055611a71565b61045d85611a41565b8573ffffffffffffffffffffffffffffffffffffffff6117ff85611a29565b90549060031b1c16611d21565b016116b5565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f636f6c6c6563743a20666565203e2062616c00000000000000000000000000006044820152fd5b90506020813d8211611899575b8161188a6020938361195e565b81010312610542575185611787565b3d915061187d565b6001915061180c565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f636f6c6c6563743a207a65726f206164647200000000000000000000000000006044820152fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361054257565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361054257565b6084359081600f0b820361054257565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761199f57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b67ffffffffffffffff811161199f5760051b60200190565b600c548110156119fc57600c5f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600b548110156119fc57600b5f5260205f2001905f90565b600f548110156119fc57600f5f5260205f2001905f90565b600d548110156119fc57600d5f5260205f2001905f90565b91908203918211611a7e57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b15611ab257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b91908201809211611a7e57565b81810292918115918404141715611a7e57565b8115611b3a570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b15611b6e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f62616c616e6365203c2070726f746f636f6c206f7765640000000000000000006044820152fd5b80518210156119fc5760209160051b010190565b15611be757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f73776170546f4c696d69743a20696e707574207a65726f0000000000000000006044820152fd5b15611c4c57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f73776170546f4c696d69743a206f7574707574207a65726f00000000000000006044820152fd5b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005414611cf95760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b9173ffffffffffffffffffffffffffffffffffffffff604051927fa9059cbb000000000000000000000000000000000000000000000000000000005f521660045260245260205f60448180865af19060015f5114821615611dca575b60405215611d885750565b73ffffffffffffffffffffffffffffffffffffffff907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b90600181151661134657823b15153d15161690611d7d565b9073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169173ffffffffffffffffffffffffffffffffffffffff82169183831480611f53575b15611e9457505050803b15610542575f906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af1801561129457611e885750565b5f611e929161195e565b565b919390925073ffffffffffffffffffffffffffffffffffffffff604051937f23b872dd000000000000000000000000000000000000000000000000000000005f52166004523060245260445260205f60648180855af19060015f5114821615611f34575b50906040525f60605215611f095750565b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6001821516611f4a573b15153d1516165f611ef8565b823d5f823e3d90fd5b5084341015611e3c565b90600a548210156119fc57600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b93929491909483600f0b905f8213156126f9575f94855b8851871015611fdf57611fd7600191611fcd898c611bcc565b51600f0b906129ff565b960195611fb4565b90929496919395505f81600f0b131561269b57611ffb91612a94565b9081600f0b80156105425770010000000000000000000000000000000005947fffffffffffffffffffffffffffffffff8000000000000000000000000000000086121580612681575b15610542576120806120859161207b61206398600f0b9889928c611bcc565b51600f0b612071888d611bcc565b51600f0b90612a57565b612a94565b612b75565b9081600f0b948512156125fd578161209c91612ad4565b600f0b5f811315610542575f9080680100000000000000008212156125f0575b8064010000000060029212156125e4575b620100008112156125d8575b6101008112156125cc575b60108112156125c0575b60048112156125b5575b12156125ab575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f831361258f57506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d926121638484612a94565b937fffffffffffffffffffffffffffffffff8000000000000000000000000000000081600f0b146105425761219c905f03600f0b612b75565b600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612575575b15610542576121e690600f0b83612a94565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061255b575b1561054257600f0b5f811315610542575f90806801000000000000000082121561254e575b806401000000006002921215612542575b62010000811215612536575b61010081121561252a575b601081121561251e575b6004811215612513575b1215612509575b607f8290031b91907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160401b6780000000000000005b5f81136124e957506122f292506fb17217f7d1cf79abc9e3b39803f2f6af6122ec91600f0b0260801d85612a94565b98611bcc565b51600f0b9383958589600f0b1361230e575b5050505050509190565b85985068010000000000000000929496506120809061232f92949699612a94565b9101907fffffffffffffffffffffffffffffffff80000000000000000000000000000000821215806124cf575b156105425761236d91600f0b612a57565b905f600f83900b13612388575050505b5f8080808080612304565b612393929350612ad4565b600f0b5f811315610542575f9080680100000000000000008212156124c2575b8064010000000060029212156124b6575b620100008112156124aa575b61010081121561249e575b6010811215612492575b6004811215612487575b121561247d575b607f8290031b91907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160401b6780000000000000005b5f811361245d57506124589250600f0b6fb17217f7d1cf79abc9e3b39803f2f6af0260801d90612a94565b61237d565b91928002908160ff1c9182607f011c918302019160011d9291909261242d565b90600101906123f6565b92810192811d6123ef565b6004938401931d6123e5565b6008938401931d6123db565b6010938401931d6123d0565b6020938401931d6123c4565b506040915080821d6123b3565b506f7fffffffffffffffffffffffffffffff82131561235c565b91928002908160ff1c9182607f011c918302019160011d929190926122bd565b9060010190612286565b92810192811d61227f565b6004938401931d612275565b6008938401931d61226b565b6010938401931d612260565b6020938401931d612254565b506040915080821d612243565b506f7fffffffffffffffffffffffffffffff81131561221e565b506f7fffffffffffffffffffffffffffffff8113156121d4565b8002908160ff1c9182607f011c918302019160011d9190612136565b90600101906120ff565b92810192811d6120f8565b6004938401931d6120ee565b6008938401931d6120e4565b6010938401931d6120d9565b6020938401931d6120cd565b506040915080821d6120bc565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4c4d53523a206c696d69745072696365203c3d2063757272656e74207072696360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152fd5b506f7fffffffffffffffffffffffffffffff861315612044565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4c4d53523a206c696d69745072696365203c3d203000000000000000000000006044820152fd5b6127618282612b1a565b9180156105425777ffffffffffffffffffffffffffffffffffffffffffffffff83116127f257612794908360401b611b30565b6fffffffffffffffffffffffffffffffff8111610542576fffffffffffffffffffffffffffffffff16906f7fffffffffffffffffffffffffffffff821161054257600f0b90600f0b126127e45790565b60018101809111611a7e5790565b60c083811c8091640100000000821015612994575b60028262010000612894941015612988575b61010081101561297c575b6010811015612970575b6004811015612965575b101561295d575b8560017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b611b30565b916fffffffffffffffffffffffffffffffff8311610542578060801c83026fffffffffffffffffffffffffffffffff82168402838760401b90828210612933575b5003928160801b9182851061290a575b60801c036128ff576128f79203611b30565b905b01612794565b5050506001906128f9565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906128e5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f6128d5565b60010161283f565b91810191811c612838565b6004928301921c61282e565b6008928301921c612824565b6010928301921c612819565b505060e084811c90612807565b9080156129d4576129b191611b1d565b620f4240810190818111611a7e57620f423f01908111611a7e57620f4240900490565b50505f90565b919080156129f9576129ef6129f691846129a1565b8093611a71565b90565b505f9190565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612a3d575b1561054257600f0b90565b506f7fffffffffffffffffffffffffffffff811315612a32565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612a3d571561054257600f0b90565b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612a3d571561054257600f0b90565b90600f0b9081156105425760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612a3d571561054257600f0b90565b81156129d457600f0b5f8112610542576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116105425760401b81198111610542570190565b600f0b68400000000000000000811215610542577fffffffffffffffffffffffffffffffffffffffffffffffc000000000000000008112612bd257700171547652b82fe1777d0ffda0d23a7d126129f6910260801d600f0b612bd7565b505f90565b80600f0b68400000000000000000811215610542577fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000081126129d4576f80000000000000000000000000000000915f6780000000000000008216600f0b136137d3575b5f6740000000000000008216600f0b136137b6575b5f6720000000000000008216600f0b13613799575b5f6710000000000000008216600f0b1361377c575b5f6708000000000000008216600f0b1361375f575b5f6704000000000000008216600f0b13613742575b5f6702000000000000008216600f0b13613725575b5f6701000000000000008216600f0b13613708575b5f66800000000000008216600f0b136136eb575b5f66400000000000008216600f0b136136ce575b5f66200000000000008216600f0b136136b1575b5f66100000000000008216600f0b13613694575b5f66080000000000008216600f0b13613677575b5f66040000000000008216600f0b1361365a575b5f66020000000000008216600f0b1361363d575b5f66010000000000008216600f0b13613620575b5f658000000000008216600f0b13613603575b5f654000000000008216600f0b136135e6575b5f652000000000008216600f0b136135c9575b5f651000000000008216600f0b136135ac575b5f650800000000008216600f0b1361358f575b5f650400000000008216600f0b13613572575b5f650200000000008216600f0b13613555575b5f650100000000008216600f0b13613538575b5f6480000000008216600f0b1361351b575b5f6440000000008216600f0b136134fe575b5f6420000000008216600f0b136134e1575b5f6410000000008216600f0b136134c4575b5f6408000000008216600f0b136134a7575b5f6404000000008216600f0b1361348a575b5f6402000000008216600f0b1361346d575b5f6401000000008216600f0b13613450575b5f63800000008216600f0b13613433575b5f63400000008216600f0b13613416575b5f63200000008216600f0b136133f9575b5f63100000008216600f0b136133dc575b5f63080000008216600f0b136133bf575b5f63040000008216600f0b136133a2575b5f63020000008216600f0b13613385575b5f63010000008216600f0b13613368575b5f628000008216600f0b1361334b575b5f624000008216600f0b1361332e575b5f622000008216600f0b13613311575b5f621000008216600f0b136132f4575b5f620800008216600f0b136132d7575b5f620400008216600f0b136132ba575b5f620200008216600f0b1361329d575b5f620100008216600f0b13613280575b5f6180008216600f0b13613263575b5f6140008216600f0b13613246575b5f6120008216600f0b13613229575b5f6110008216600f0b1361320c575b5f6108008216600f0b136131ef575b5f6104008216600f0b136131d2575b5f6102008216600f0b136131b5575b5f6101008216600f0b13613198575b5f60808216600f0b1361317b575b5f60408216600f0b1361315e575b5f60208216600f0b13613141575b5f60108216600f0b13613124575b5f60088216600f0b13613107575b5f60048216600f0b136130ea575b5f60028216600f0b136130cc575b60015f9116600f0b136130af575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161054257600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c90613085565b7001000000000000000162e42fefa39ef35890920260801c91613077565b9170010000000000000002c5c85fdf473de6b20260801c91613069565b91700100000000000000058b90bfbe8e7bcd6d0260801c9161305b565b917001000000000000000b17217f7d1cf79afa0260801c9161304d565b91700100000000000000162e42fefa39ef366f0260801c9161303f565b917001000000000000002c5c85fdf473de6eca0260801c91613031565b9170010000000000000058b90bfbe8e7bce5440260801c91613023565b91700100000000000000b17217f7d1cf79e9490260801c91613015565b9170010000000000000162e42fefa39ef44d910260801c91613006565b91700100000000000002c5c85fdf473dea871f0260801c91612ff7565b917001000000000000058b90bfbe8e7bdcbe2e0260801c91612fe8565b9170010000000000000b17217f7d1cf7d83c1a0260801c91612fd9565b917001000000000000162e42fefa39f02b772c0260801c91612fca565b9170010000000000002c5c85fdf473e242ea380260801c91612fbb565b91700100000000000058b90bfbe8e7cc35c3f00260801c91612fac565b917001000000000000b17217f7d1cfb72b45e10260801c91612f9d565b91700100000000000162e42fefa39fe95583c20260801c91612f8d565b917001000000000002c5c85fdf4741bea6e77e0260801c91612f7d565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c91612f6d565b91700100000000000b17217f7d1d351a389d400260801c91612f5d565b9170010000000000162e42fefa3ae53369388c0260801c91612f4d565b91700100000000002c5c85fdf477b662b269450260801c91612f3d565b917001000000000058b90bfbe8f71cb4e4b33d0260801c91612f2d565b9170010000000000b17217f7d20cf927c8e94c0260801c91612f1d565b917001000000000162e42fefa494f1478fde050260801c91612f0c565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c91612efb565b91700100000000058b90bfbe9ddbac5e109cce0260801c91612eea565b917001000000000b17217f7d5a7716bba4a9ae0260801c91612ed9565b91700100000000162e42fefb2fed257559bdaa0260801c91612ec8565b917001000000002c5c85fdf84bd62ae30a74cc0260801c91612eb7565b9170010000000058b90bfbf8479bd5a81b51ad0260801c91612ea6565b91700100000000b17217f80f4ef5aadda455540260801c91612e95565b9170010000000162e42ff0999ce3541b9fffcf0260801c91612e83565b91700100000002c5c85fe31f35a6a30da1be500260801c91612e71565b917001000000058b90bfcdee5acd3c1cedc8230260801c91612e5f565b9170010000000b17217fba9c739aa5819f44f90260801c91612e4d565b917001000000162e42fff037df38aa2b219f060260801c91612e3b565b9170010000002c5c8601cc6b9e94213c72737a0260801c91612e29565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91612e17565b917001000000b1721835514b86e6d96efd1bfe0260801c91612e05565b91700100000162e430e5a18f6119e3c02282a50260801c91612df2565b917001000002c5c863b73f016468f6bac5ca2b0260801c91612ddf565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91612dcc565b91700100000b1721bcfc99d9f890ea069117630260801c91612db9565b9170010000162e43f4f831060e02d839a9d16d0260801c91612da6565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c91612d93565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c91612d80565b9170010000b17255775c040618bf4a4ade83fc0260801c91612d6d565b917001000162e525ee054754457d59952920260260801c91612d59565b9170010002c5cc37da9491d0985c348c68e7b30260801c91612d45565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91612d31565b917001000b175effdc76ba38e31671ca9397250260801c91612d1d565b91700100162f3904051fa128bca9c55c31e5df0260801c91612d09565b917001002c605e2e8cec506d21bfc89a23a00f0260801c91612cf5565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c91612ce1565b91700100b1afa5abcbed6129ab13ec11dc95430260801c91612ccd565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c91612cb8565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c91612ca3565b917001059b0d31585743ae7c548eb68ca417fd0260801c91612c8e565b9170010b5586cf9890f6298b92b71842a983630260801c91612c79565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c91612c64565b917001306fe0a31b7152de8d5a46305c85edec0260801c91612c4f565b6fb504f333f9de6484597d89b3754abe9f9250612c3a56fea2646970667358221220bcd855312fe832ac7c3b814efb1009a00aa9ab02b83ec77246e3ce037c88990c64736f6c634300081e0033","sourceMap":"948:8998:55:-:0;;;;;;;;;;;;;-1:-1:-1;;948:8998:55;;;;-1:-1:-1;;;;;948:8998:55;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;948:8998:55;;;;;;2365:1:31;1505:66;2365:1;1149:24:51;;948:8998:55;;;;;;;;1149:24:51;948:8998:55;;;;;;;;;;;;;;;;;-1:-1:-1;948:8998:55;;;;;;-1:-1:-1;948:8998:55;;;;;-1:-1:-1;948:8998:55","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f5f3560e01c80632a54db01146116555780638a3d858d146109d8578063bf05a0a6146107db5763e49cd47514610046575f80fd5b346107d85760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107d85760043573ffffffffffffffffffffffffffffffffffffffff811681036107d65761009d61192b565b60443567ffffffffffffffff606435116107d2573660236064350112156107d25767ffffffffffffffff60643560040135116107d257366024606435600401356064350101116107d25760a435916100f3611caa565b61010260ff6008541615611aab565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff86165afa9081156107c7578691610795575b5082116107375773ffffffffffffffffffffffffffffffffffffffff81168552600e602052604085205480156106d957807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101116106ac576101c0608435846129da565b50908694801515806106a3575b61060d575b5061020a8473ffffffffffffffffffffffffffffffffffffffff881673ffffffffffffffffffffffffffffffffffffffff8616611d21565b6040517f23e30c8b00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015284604482015282606482015260a060848201526064356004013560a48201526064356004013560246064350160c48301378760c4606435600401358301015260208160c4817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60643560040135011681010301818b73ffffffffffffffffffffffffffffffffffffffff8c165af1801561054e5788906105b7575b7f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd9915003610559576103576103248386611b10565b73ffffffffffffffffffffffffffffffffffffffff851673ffffffffffffffffffffffffffffffffffffffff8916611de2565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff88165afa90811561054e57869798969596916104ef575b507f249e0bf62ff982342c6a63926041694a221796af4b9ebacefc45823da42348139473ffffffffffffffffffffffffffffffffffffffff94936104938461045d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6104566104989761043e61042f846104bd9c016119e4565b90549060031b1c821015611b67565b6104498386016119e4565b90549060031b1c90611a71565b9201611a41565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b611a71565b9583604051948594169816963396846040919493926060820195825260208201520152565b0390a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055602060405160018152f35b94505091906020843d602011610546575b8161050d6020938361195e565b8101031261054257925185939192907f249e0bf62ff982342c6a63926041694a221796af4b9ebacefc45823da42348136103b5565b5f80fd5b3d9150610500565b6040513d8a823e3d90fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f666c6173683a2063616c6c6261636b00000000000000000000000000000000006044820152fd5b506020813d602011610605575b816105d16020938361195e565b81010312610601577f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd990516102ef565b8780fd5b3d91506105c4565b620f424091955061061e9083611b1d565b04938461062c575b5f6101d2565b61069e61065a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83016119e4565b61066a8883548360031b1c611b10565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b610626565b508215156101cd565b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f666c6173683a20746f6b656e206e6f7420696e20706f6f6c00000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f666c6173683a20616d6f756e74203e2062616c616e63650000000000000000006044820152fd5b90506020813d6020116107bf575b816107b06020938361195e565b8101031261054257515f61015b565b3d91506107a3565b6040513d88823e3d90fd5b8380fd5b505b80fd5b50346107d85760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107d8576004356024356044359182600f0b83036107d2576064359067ffffffffffffffff82116109d457366023830112156109d45781600401359161084c836119cc565b9261085a604051948561195e565b8084526024602085019160051b8301019136831161060157602401905b8282106109c45750505061088961194e565b9360a43567ffffffffffffffff81116109c057366023820112156109c05780600401356108b5816119cc565b916108c3604051938461195e565b8183526024602084019260051b820101903682116109bc57602401915b81831061099e575050509161090361091392868361090c98979660c4359a611f9d565b95909184611bcc565b5190612757565b9461091f861515611be0565b9480948061096f575b50509161093b6109429261096b94611bcc565b5190612b1a565b9261094e841515611c45565b604051938493846040919493926060820195825260208201520152565b0390f35b81965061096b949295509261099461098d6109429561093b946129a1565b8098611b10565b9592945092610928565b823580600f0b81036109b8578152602092830192016108e0565b8a80fd5b8980fd5b8680fd5b8135815260209182019101610877565b8480fd5b506101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261054257610a0c611908565b90610a1561192b565b610a1d61194e565b9160c43560a43581151582036105425760e43590610a4060ff6008541615611aab565b610a48611caa565b600b5480604435109081611649575b50156115eb575f86600f0b131561158d578015908115611582575b501561152457602495602073ffffffffffffffffffffffffffffffffffffffff610a9d604435611a29565b90549060031b1c16604051988980927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa958615611294575f966114ef575b60249750602073ffffffffffffffffffffffffffffffffffffffff610b0b606435611a29565b90549060031b1c16604051998a80927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa978815611294575f986114bb575b50600954604051600a80548083525f918252602083019493600f0b91907fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a85b8160018401106114905795610bbf928592610bcc98549181811061147c575b1061146b575b50038361195e565b6064359160443591611f9d565b610bea610bdd604499939935611a59565b90549060031b1c89612757565b97610bf6891515611be0565b5f9789958061144a575b50610c1c610c0f606435611a59565b90549060031b1c84612b1a565b9a610c288c1515611c45565b73ffffffffffffffffffffffffffffffffffffffff610c48604435611a29565b90549060031b1c1696610c5c818989611de2565b604051957f70a082310000000000000000000000000000000000000000000000000000000087523060048801526020876024818c5afa968715611294575f97611412575b5090610cab91611b10565b850361138e5773ffffffffffffffffffffffffffffffffffffffff610cd1606435611a29565b90549060031b1c16978061134f575b1561129f5773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b15610542575f809160248f60405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af1908115611294578d9161127f575b508980808093865af13d1561127a573d67ffffffffffffffff811161124d5760405190610dbe60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116018361195e565b81528a60203d92013e5b156111ef575b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526020816024818c5afa9081156111e4578d908b926111ae575b50610e1e9192611a71565b810361112a5788948a61010435151580611121575b6110c8575b50610e8f91610e6b610e60610e8493610e5561042f6044356119e4565b6104496044356119e4565b61045d604435611a41565b610e7961042f6064356119e4565b6104496064356119e4565b61045d606435611a41565b8782600f0b131561106a578783600f0b131561100c577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c93610f5e610f5360a095610f39610f0673ffffffffffffffffffffffffffffffffffffffff97610ef7604435611f5d565b90549060031b1c600f0b6129ff565b610f11604435611f5d565b9091906fffffffffffffffffffffffffffffffff83549160031b928116831b921b1916179055565b610f44606435611f5d565b90549060031b1c600f0b612a57565b610f11606435611f5d565b610f68818b611a71565b83604051971687528b60208801528c6040880152606087015260808601521692a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015610fdb575b50505061096b90604051938493846040919493926060820195825260208201520152565b8280809381938290611003575b3390f115610ff7578080610fb7565b604051903d90823e3d90fd5b506108fc610fe8565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a20616d6f756e744f7574203c3d20300000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4d53523a20616d6f756e74496e203c3d2030000000000000000000000000006044820152fd5b610e8491965091610e6b610e60620f42406110ea610e8f966101043590611b1d565b0498896110fe575b9350505091508a610e38565b61111c61110c6044356119e4565b61066a8d83548360031b1c611b10565b6110f2565b50801515610e33565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f73776170546f4c696d69743a206e6f6e2d7374616e6461726420746f6b656e4f60448201527f75740000000000000000000000000000000000000000000000000000000000006064820152fd5b9150506020813d6020116111dc575b816111ca6020938361195e565b8101031261054257518c610e1e610e13565b3d91506111bd565b6040513d8c823e3d90fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b60248b7f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b610dc8565b61128c919a505f9061195e565b5f985f610d69565b6040513d5f823e3d90fd5b6040517fa9059cbb000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff83166004528c60245260205f604481808d5af19060015f511482161561132e575b604052610dce57877f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b90600181151661134657893b15153d151616906112fb565b503d5f823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168814610ce0565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f73776170546f4c696d69743a206e6f6e2d7374616e6461726420746f6b656e4960448201527f6e000000000000000000000000000000000000000000000000000000000000006064820152fd5b919096506020823d602011611442575b8161142f6020938361195e565b8101031261054257905195610cab610ca0565b3d9150611422565b909550611459919850896129a1565b96611464888a611b10565b945f610c00565b60801d600f0b81526020015f610bb7565b92602060019184600f0b8152019301610bb1565b8054600f81810b895260809190911d900b602088015260409096019560029290920191600101610b92565b9097506020813d6020116114e7575b816114d76020938361195e565b810103126105425751965f610b53565b3d91506114ca565b95506020873d60201161151c575b8161150a6020938361195e565b81010312610542576024965195610ae5565b3d91506114fd565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f73776170546f4c696d69743a20646561646c696e6520657863656564656400006044820152fd5b90504211155f610a72565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f73776170546f4c696d69743a206c696d6974203c3d20300000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f73776170546f4c696d69743a20696478000000000000000000000000000000006044820152fd5b9050606435105f610a57565b346105425760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105425761168c611908565b611694611caa565b73ffffffffffffffffffffffffffffffffffffffff8116156118aa57600b545f5b818110611706577fd508feb4afc81230b8e5dcca865a405a72db1f928a5064f893ab22ab56ec25215f80a160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055005b61170f816119e4565b90549060031b1c9081156118a1576024602073ffffffffffffffffffffffffffffffffffffffff61173f84611a29565b90549060031b1c16604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa908115611294575f91611870575b5082811061181257826117e06117d760019561180c946117a6876119e4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82549160031b1b19169055611a71565b61045d85611a41565b8573ffffffffffffffffffffffffffffffffffffffff6117ff85611a29565b90549060031b1c16611d21565b016116b5565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f636f6c6c6563743a20666565203e2062616c00000000000000000000000000006044820152fd5b90506020813d8211611899575b8161188a6020938361195e565b81010312610542575185611787565b3d915061187d565b6001915061180c565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f636f6c6c6563743a207a65726f206164647200000000000000000000000000006044820152fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361054257565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361054257565b6084359081600f0b820361054257565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761199f57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b67ffffffffffffffff811161199f5760051b60200190565b600c548110156119fc57600c5f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600b548110156119fc57600b5f5260205f2001905f90565b600f548110156119fc57600f5f5260205f2001905f90565b600d548110156119fc57600d5f5260205f2001905f90565b91908203918211611a7e57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b15611ab257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b91908201809211611a7e57565b81810292918115918404141715611a7e57565b8115611b3a570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b15611b6e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f62616c616e6365203c2070726f746f636f6c206f7765640000000000000000006044820152fd5b80518210156119fc5760209160051b010190565b15611be757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f73776170546f4c696d69743a20696e707574207a65726f0000000000000000006044820152fd5b15611c4c57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f73776170546f4c696d69743a206f7574707574207a65726f00000000000000006044820152fd5b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005414611cf95760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b9173ffffffffffffffffffffffffffffffffffffffff604051927fa9059cbb000000000000000000000000000000000000000000000000000000005f521660045260245260205f60448180865af19060015f5114821615611dca575b60405215611d885750565b73ffffffffffffffffffffffffffffffffffffffff907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b90600181151661134657823b15153d15161690611d7d565b9073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169173ffffffffffffffffffffffffffffffffffffffff82169183831480611f53575b15611e9457505050803b15610542575f906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af1801561129457611e885750565b5f611e929161195e565b565b919390925073ffffffffffffffffffffffffffffffffffffffff604051937f23b872dd000000000000000000000000000000000000000000000000000000005f52166004523060245260445260205f60648180855af19060015f5114821615611f34575b50906040525f60605215611f095750565b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6001821516611f4a573b15153d1516165f611ef8565b823d5f823e3d90fd5b5084341015611e3c565b90600a548210156119fc57600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b93929491909483600f0b905f8213156126f9575f94855b8851871015611fdf57611fd7600191611fcd898c611bcc565b51600f0b906129ff565b960195611fb4565b90929496919395505f81600f0b131561269b57611ffb91612a94565b9081600f0b80156105425770010000000000000000000000000000000005947fffffffffffffffffffffffffffffffff8000000000000000000000000000000086121580612681575b15610542576120806120859161207b61206398600f0b9889928c611bcc565b51600f0b612071888d611bcc565b51600f0b90612a57565b612a94565b612b75565b9081600f0b948512156125fd578161209c91612ad4565b600f0b5f811315610542575f9080680100000000000000008212156125f0575b8064010000000060029212156125e4575b620100008112156125d8575b6101008112156125cc575b60108112156125c0575b60048112156125b5575b12156125ab575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f831361258f57506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d926121638484612a94565b937fffffffffffffffffffffffffffffffff8000000000000000000000000000000081600f0b146105425761219c905f03600f0b612b75565b600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612575575b15610542576121e690600f0b83612a94565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061255b575b1561054257600f0b5f811315610542575f90806801000000000000000082121561254e575b806401000000006002921215612542575b62010000811215612536575b61010081121561252a575b601081121561251e575b6004811215612513575b1215612509575b607f8290031b91907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160401b6780000000000000005b5f81136124e957506122f292506fb17217f7d1cf79abc9e3b39803f2f6af6122ec91600f0b0260801d85612a94565b98611bcc565b51600f0b9383958589600f0b1361230e575b5050505050509190565b85985068010000000000000000929496506120809061232f92949699612a94565b9101907fffffffffffffffffffffffffffffffff80000000000000000000000000000000821215806124cf575b156105425761236d91600f0b612a57565b905f600f83900b13612388575050505b5f8080808080612304565b612393929350612ad4565b600f0b5f811315610542575f9080680100000000000000008212156124c2575b8064010000000060029212156124b6575b620100008112156124aa575b61010081121561249e575b6010811215612492575b6004811215612487575b121561247d575b607f8290031b91907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160401b6780000000000000005b5f811361245d57506124589250600f0b6fb17217f7d1cf79abc9e3b39803f2f6af0260801d90612a94565b61237d565b91928002908160ff1c9182607f011c918302019160011d9291909261242d565b90600101906123f6565b92810192811d6123ef565b6004938401931d6123e5565b6008938401931d6123db565b6010938401931d6123d0565b6020938401931d6123c4565b506040915080821d6123b3565b506f7fffffffffffffffffffffffffffffff82131561235c565b91928002908160ff1c9182607f011c918302019160011d929190926122bd565b9060010190612286565b92810192811d61227f565b6004938401931d612275565b6008938401931d61226b565b6010938401931d612260565b6020938401931d612254565b506040915080821d612243565b506f7fffffffffffffffffffffffffffffff81131561221e565b506f7fffffffffffffffffffffffffffffff8113156121d4565b8002908160ff1c9182607f011c918302019160011d9190612136565b90600101906120ff565b92810192811d6120f8565b6004938401931d6120ee565b6008938401931d6120e4565b6010938401931d6120d9565b6020938401931d6120cd565b506040915080821d6120bc565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4c4d53523a206c696d69745072696365203c3d2063757272656e74207072696360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152fd5b506f7fffffffffffffffffffffffffffffff861315612044565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4c4d53523a206c696d69745072696365203c3d203000000000000000000000006044820152fd5b6127618282612b1a565b9180156105425777ffffffffffffffffffffffffffffffffffffffffffffffff83116127f257612794908360401b611b30565b6fffffffffffffffffffffffffffffffff8111610542576fffffffffffffffffffffffffffffffff16906f7fffffffffffffffffffffffffffffff821161054257600f0b90600f0b126127e45790565b60018101809111611a7e5790565b60c083811c8091640100000000821015612994575b60028262010000612894941015612988575b61010081101561297c575b6010811015612970575b6004811015612965575b101561295d575b8560017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b611b30565b916fffffffffffffffffffffffffffffffff8311610542578060801c83026fffffffffffffffffffffffffffffffff82168402838760401b90828210612933575b5003928160801b9182851061290a575b60801c036128ff576128f79203611b30565b905b01612794565b5050506001906128f9565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906128e5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f6128d5565b60010161283f565b91810191811c612838565b6004928301921c61282e565b6008928301921c612824565b6010928301921c612819565b505060e084811c90612807565b9080156129d4576129b191611b1d565b620f4240810190818111611a7e57620f423f01908111611a7e57620f4240900490565b50505f90565b919080156129f9576129ef6129f691846129a1565b8093611a71565b90565b505f9190565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612a3d575b1561054257600f0b90565b506f7fffffffffffffffffffffffffffffff811315612a32565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612a3d571561054257600f0b90565b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612a3d571561054257600f0b90565b90600f0b9081156105425760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612a3d571561054257600f0b90565b81156129d457600f0b5f8112610542576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116105425760401b81198111610542570190565b600f0b68400000000000000000811215610542577fffffffffffffffffffffffffffffffffffffffffffffffc000000000000000008112612bd257700171547652b82fe1777d0ffda0d23a7d126129f6910260801d600f0b612bd7565b505f90565b80600f0b68400000000000000000811215610542577fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000081126129d4576f80000000000000000000000000000000915f6780000000000000008216600f0b136137d3575b5f6740000000000000008216600f0b136137b6575b5f6720000000000000008216600f0b13613799575b5f6710000000000000008216600f0b1361377c575b5f6708000000000000008216600f0b1361375f575b5f6704000000000000008216600f0b13613742575b5f6702000000000000008216600f0b13613725575b5f6701000000000000008216600f0b13613708575b5f66800000000000008216600f0b136136eb575b5f66400000000000008216600f0b136136ce575b5f66200000000000008216600f0b136136b1575b5f66100000000000008216600f0b13613694575b5f66080000000000008216600f0b13613677575b5f66040000000000008216600f0b1361365a575b5f66020000000000008216600f0b1361363d575b5f66010000000000008216600f0b13613620575b5f658000000000008216600f0b13613603575b5f654000000000008216600f0b136135e6575b5f652000000000008216600f0b136135c9575b5f651000000000008216600f0b136135ac575b5f650800000000008216600f0b1361358f575b5f650400000000008216600f0b13613572575b5f650200000000008216600f0b13613555575b5f650100000000008216600f0b13613538575b5f6480000000008216600f0b1361351b575b5f6440000000008216600f0b136134fe575b5f6420000000008216600f0b136134e1575b5f6410000000008216600f0b136134c4575b5f6408000000008216600f0b136134a7575b5f6404000000008216600f0b1361348a575b5f6402000000008216600f0b1361346d575b5f6401000000008216600f0b13613450575b5f63800000008216600f0b13613433575b5f63400000008216600f0b13613416575b5f63200000008216600f0b136133f9575b5f63100000008216600f0b136133dc575b5f63080000008216600f0b136133bf575b5f63040000008216600f0b136133a2575b5f63020000008216600f0b13613385575b5f63010000008216600f0b13613368575b5f628000008216600f0b1361334b575b5f624000008216600f0b1361332e575b5f622000008216600f0b13613311575b5f621000008216600f0b136132f4575b5f620800008216600f0b136132d7575b5f620400008216600f0b136132ba575b5f620200008216600f0b1361329d575b5f620100008216600f0b13613280575b5f6180008216600f0b13613263575b5f6140008216600f0b13613246575b5f6120008216600f0b13613229575b5f6110008216600f0b1361320c575b5f6108008216600f0b136131ef575b5f6104008216600f0b136131d2575b5f6102008216600f0b136131b5575b5f6101008216600f0b13613198575b5f60808216600f0b1361317b575b5f60408216600f0b1361315e575b5f60208216600f0b13613141575b5f60108216600f0b13613124575b5f60088216600f0b13613107575b5f60048216600f0b136130ea575b5f60028216600f0b136130cc575b60015f9116600f0b136130af575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161054257600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c90613085565b7001000000000000000162e42fefa39ef35890920260801c91613077565b9170010000000000000002c5c85fdf473de6b20260801c91613069565b91700100000000000000058b90bfbe8e7bcd6d0260801c9161305b565b917001000000000000000b17217f7d1cf79afa0260801c9161304d565b91700100000000000000162e42fefa39ef366f0260801c9161303f565b917001000000000000002c5c85fdf473de6eca0260801c91613031565b9170010000000000000058b90bfbe8e7bce5440260801c91613023565b91700100000000000000b17217f7d1cf79e9490260801c91613015565b9170010000000000000162e42fefa39ef44d910260801c91613006565b91700100000000000002c5c85fdf473dea871f0260801c91612ff7565b917001000000000000058b90bfbe8e7bdcbe2e0260801c91612fe8565b9170010000000000000b17217f7d1cf7d83c1a0260801c91612fd9565b917001000000000000162e42fefa39f02b772c0260801c91612fca565b9170010000000000002c5c85fdf473e242ea380260801c91612fbb565b91700100000000000058b90bfbe8e7cc35c3f00260801c91612fac565b917001000000000000b17217f7d1cfb72b45e10260801c91612f9d565b91700100000000000162e42fefa39fe95583c20260801c91612f8d565b917001000000000002c5c85fdf4741bea6e77e0260801c91612f7d565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c91612f6d565b91700100000000000b17217f7d1d351a389d400260801c91612f5d565b9170010000000000162e42fefa3ae53369388c0260801c91612f4d565b91700100000000002c5c85fdf477b662b269450260801c91612f3d565b917001000000000058b90bfbe8f71cb4e4b33d0260801c91612f2d565b9170010000000000b17217f7d20cf927c8e94c0260801c91612f1d565b917001000000000162e42fefa494f1478fde050260801c91612f0c565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c91612efb565b91700100000000058b90bfbe9ddbac5e109cce0260801c91612eea565b917001000000000b17217f7d5a7716bba4a9ae0260801c91612ed9565b91700100000000162e42fefb2fed257559bdaa0260801c91612ec8565b917001000000002c5c85fdf84bd62ae30a74cc0260801c91612eb7565b9170010000000058b90bfbf8479bd5a81b51ad0260801c91612ea6565b91700100000000b17217f80f4ef5aadda455540260801c91612e95565b9170010000000162e42ff0999ce3541b9fffcf0260801c91612e83565b91700100000002c5c85fe31f35a6a30da1be500260801c91612e71565b917001000000058b90bfcdee5acd3c1cedc8230260801c91612e5f565b9170010000000b17217fba9c739aa5819f44f90260801c91612e4d565b917001000000162e42fff037df38aa2b219f060260801c91612e3b565b9170010000002c5c8601cc6b9e94213c72737a0260801c91612e29565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91612e17565b917001000000b1721835514b86e6d96efd1bfe0260801c91612e05565b91700100000162e430e5a18f6119e3c02282a50260801c91612df2565b917001000002c5c863b73f016468f6bac5ca2b0260801c91612ddf565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91612dcc565b91700100000b1721bcfc99d9f890ea069117630260801c91612db9565b9170010000162e43f4f831060e02d839a9d16d0260801c91612da6565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c91612d93565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c91612d80565b9170010000b17255775c040618bf4a4ade83fc0260801c91612d6d565b917001000162e525ee054754457d59952920260260801c91612d59565b9170010002c5cc37da9491d0985c348c68e7b30260801c91612d45565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91612d31565b917001000b175effdc76ba38e31671ca9397250260801c91612d1d565b91700100162f3904051fa128bca9c55c31e5df0260801c91612d09565b917001002c605e2e8cec506d21bfc89a23a00f0260801c91612cf5565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c91612ce1565b91700100b1afa5abcbed6129ab13ec11dc95430260801c91612ccd565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c91612cb8565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c91612ca3565b917001059b0d31585743ae7c548eb68ca417fd0260801c91612c8e565b9170010b5586cf9890f6298b92b71842a983630260801c91612c79565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c91612c64565b917001306fe0a31b7152de8d5a46305c85edec0260801c91612c4f565b6fb504f333f9de6484597d89b3754abe9f9250612c3a56fea2646970667358221220bcd855312fe832ac7c3b814efb1009a00aa9ab02b83ec77246e3ce037c88990c64736f6c634300081e0033","sourceMap":"948:8998:55:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2989:103:31;;;:::i;:::-;3684:27:51;948:8998:55;3693:7:51;948:8998:55;;3692:8:51;3684:27;:::i;:::-;948:8998:55;;;1611:30;;1635:4;948:8998;1611:30;;948:8998;;;;;;;;1611:30;;;;;;;;;;;948:8998;1601:40;;;948:8998;;;;;;;1700:27;948:8998;;;;;;1752:15;;948:8998;;;;;;;;;1854:32;948:8998;;1854:32;;:::i;:::-;1944:22;;;1980:18;;;;:34;;;948:8998;1976:235;;948:8998;;2268:5;948:8998;;;;;;;2268:5;:::i;:::-;948:8998;;;2305:72;;2326:10;948:8998;2305:72;;948:8998;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2305:72;;948:8998;;;;;2305:72;;;;;;;;;;948:8998;1237:45;2305:98;;;1237:45;;2498:17;;;;;:::i;:::-;948:8998;;;;;;2498:17;:::i;:::-;948:8998;;;2602:30;;1635:4;948:8998;2602:30;;948:8998;;;;;;;;2602:30;;;;;;;;;;;;;;;;948:8998;;2819:88;948:8998;;;;2729:74;948:8998;2729:31;948:8998;2763:40;2873:21;948:8998;2642:77;2662:29;948:8998;2819:88;948:8998;;2662:29;:::i;:::-;948:8998;;;;;;2650:41;;;2642:77;:::i;:::-;2774:29;948:8998;;;2774:29;:::i;:::-;948:8998;;;;;;2763:40;;:::i;:::-;948:8998;;2729:31;:::i;:::-;:74;948:8998;;;;;;;;;;;;;;;;;;;2729:74;2873:21;:::i;:::-;948:8998;;;;;;;;;;2326:10;;2819:88;;948:8998;;;;;;;;;;;;;;;;;;2819:88;;;;948:8998;1505:66:31;2407:1;948:8998:55;;;;;;;2602:30;;;;;;948:8998;2602:30;;948:8998;2602:30;;;;;;948:8998;2602:30;;;:::i;:::-;;;948:8998;;;;;;;;2602:30;;948:8998;2819:88;2602:30;;948:8998;-1:-1:-1;948:8998:55;;2602:30;;;-1:-1:-1;2602:30:55;;;948:8998;;;;;;;;;1237:45;948:8998;;;1237:45;;;948:8998;;1237:45;;;;948:8998;1237:45;;948:8998;1237:45;948:8998;;;1237:45;;2305:72;;948:8998;2305:72;;948:8998;2305:72;;;;;;948:8998;2305:72;;;:::i;:::-;;;948:8998;;;;1237:45;948:8998;;2305:72;;948:8998;;;;2305:72;;;-1:-1:-1;2305:72:55;;1976:235;2073:9;2044:25;;;;;;;:::i;:::-;948:8998;2109:14;;2105:96;;1976:235;;;;2105:96;2143:43;:29;948:8998;;;2143:29;:::i;:::-;:43;948:8998;;;;;;;2143:43;:::i;:::-;948:8998;;;;;;;;;;;;;;;;;;2143:43;2105:96;;1980:34;2002:12;;;;1980:34;;948:8998;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1611:30;;;948:8998;1611:30;;948:8998;1611:30;;;;;;948:8998;1611:30;;;:::i;:::-;;;948:8998;;;;;1611:30;;;;;;-1:-1:-1;1611:30:55;;;948:8998;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3379:129;3614:61;948:8998;;;3652:22;948:8998;;;;;;3379:129;:::i;:::-;3652:22;;;;;:::i;:::-;948:8998;3614:61;;:::i;:::-;3693:21;3685:57;3693:21;;;3685:57;:::i;:::-;3772:28;;3814:14;;3810:123;;948:8998;3995:23;;;;5747:40:51;3995:23:55;948:8998;3995:23;;:::i;:::-;948:8998;5747:40:51;;:::i;:::-;4037:13:55;4029:50;4037:13;;;4029:50;:::i;:::-;948:8998;;;;;;;;;;;;;;;;;;;;;;;;;;;;3810:123;3852:39;;;948:8998;3852:39;;;;;3905:17;3852:39;5747:40:51;3852:39:55;3995:23;3852:39;;:::i;:::-;3905:17;;;:::i;:::-;3810:123;;;;;;;948:8998;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;3684:27:51;948:8998:55;3693:7:51;948:8998:55;;3692:8:51;3684:27;:::i;:::-;2989:103:31;;:::i;:::-;4503:7:55;948:8998;;;;4535:19;:43;;;;948:8998;;;;;;;;;4617:22;948:8998;;;4685:13;;:44;;;;;948:8998;;;;;;;;;4855:24;948:8998;;4855:24;:::i;:::-;948:8998;;;;;;;;;4848:57;;;;948:8998;4848:57;;4899:4;948:8998;4848:57;;948:8998;4848:57;;;;;;;948:8998;4848:57;;;948:8998;;;;;;4941:25;948:8998;;4941:25;:::i;:::-;948:8998;;;;;;;;;4934:58;;;;948:8998;4934:58;;4899:4;948:8998;4934:58;;948:8998;4934:58;;;;;;;948:8998;4934:58;;;948:8998;-1:-1:-1;8311:5:55;948:8998;;;9341:11:42;948:8998:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9307:64:42;948:8998:55;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;9307:64:42;;:::i;:::-;8486:62:55;8524:23;948:8998;;;;;8524:23;:::i;:::-;948:8998;;;;;;8486:62;;:::i;:::-;8566:21;8558:57;8566:21;;;8558:57;:::i;:::-;948:8998;8647:27;;8688:14;;8684:126;;948:8998;;5747:40:51;8876:24:55;948:8998;;8876:24;:::i;:::-;948:8998;;;;;;5747:40:51;;:::i;:::-;8919:17:55;8911:54;8919:17;;;8911:54;:::i;:::-;948:8998;5436:24;948:8998;;5436:24;:::i;:::-;948:8998;;;;;;;5504:19;;;;;;:::i;:::-;948:8998;;5554:32;948:8998;5554:32;;4899:4;948:8998;5554:32;;948:8998;;5554:32;948:8998;5554:32;;;;;;;;;948:8998;5554:32;;;948:8998;5617:30;;;;;:::i;:::-;5604:43;;948:8998;;;5779:25;948:8998;;5779:25;:::i;:::-;948:8998;;;;;;;7615:32:51;;;;948:8998:55;7611:265:51;;;948:8998:55;7664:13:51;948:8998:55;7664:30:51;;;;;948:8998:55;;;;;;;7664:30:51;;;;;948:8998:55;7664:30:51;;948:8998:55;7664:30:51;;948:8998:55;7664:30:51;;;;;;;;;;;7611:265;7722:32;;;;;;;;;948:8998:55;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7611:265:51;948:8998:55;;;5899:41;;4899:4;948:8998;5899:41;;948:8998;;5899:41;948:8998;5899:41;;;;;;;;;;;;;;;7611:265:51;5971:24:55;;;;;:::i;:::-;5958:37;;948:8998;;6114:22;948:8998;;;;6150:18;;:33;;;7611:265:51;6146:239:55;;7611:265:51;948:8998:55;6755:87;948:8998;6565:85;6604:46;6795:47;948:8998;6472:83;6493:34;948:8998;;6493:34;:::i;6472:83::-;6616:34;948:8998;;6616:34;:::i;6604:46::-;6565:36;948:8998;;6565:36;:::i;:85::-;6661:84;6682:35;948:8998;;6682:35;:::i;6661:84::-;6807:35;948:8998;;6807:35;:::i;6795:47::-;6755:37;948:8998;;6755:37;:::i;:87::-;948:8998;;;;28654:20:42;948:8998:55;;;;;;;28716:21:42;948:8998:55;;;7091:128;948:8998;28864:46:42;28881:29;948:8998:55;;28809:45:42;28826:28;948:8998:55;;28826:14:42;948:8998:55;;28826:14:42;:::i;:::-;948:8998:55;;;;;;;;28826:28:42;:::i;:::-;28809:14;948:8998:55;;28809:14:42;:::i;:::-;:45;948:8998:55;;;;;;;;;;;;;;;;;;;;;28809:45:42;28881:14;948:8998:55;;28881:14:42;:::i;:::-;948:8998:55;;;;;;;;28881:29:42;:::i;:::-;28864:14;948:8998:55;;28864:14:42;:::i;:46::-;7188:18:55;;;;:::i;:::-;948:8998;;;;;;;;;;;;;;;;;;;;;;;;;;7091:128;;948:8998;1505:66:31;2407:1;3553:21:51;3587:7;;;;3584:57;;7611:265;948:8998:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3584:57:51;3608:33;;;;;;;;;;3584:57;3616:10;3608:33;;;;;3584:57;;;;3608:33;948:8998:55;;;;;;;;;;3608:33:51;;;;;948:8998:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6146:239;6795:47;948:8998;;;;6565:85;6604:46;6242:9;6214:24;6755:87;948:8998;;;6214:24;;:::i;:::-;948:8998;6278:14;;6274:101;;6146:239;;;;;;;;;;6274:101;6312:48;:34;948:8998;;6312:34;:::i;:::-;:48;948:8998;;;;;;;6312:48;:::i;:::-;6274:101;;6150:33;6172:11;;;;6150:33;;948:8998;;;;;;;;;;;;;;;;;;;;;;;;;;;;5899:41;;;;948:8998;5899:41;;948:8998;5899:41;;;;;;948:8998;5899:41;;;:::i;:::-;;;948:8998;;;;;;5971:24;5899:41;;;;;-1:-1:-1;5899:41:55;;;948:8998;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7664:30:51;;;;;948:8998:55;7664:30:51;;:::i;:::-;948:8998:55;7664:30:51;;;;;948:8998:55;;;;;;;;;7611:265:51;948:8998:55;8544:1067:26;8509:24;948:8998:55;8544:1067:26;948:8998:55;8544:1067:26;;948:8998:55;8544:1067:26;;948:8998:55;8544:1067:26;948:8998:55;;;8544:1067:26;;;;;;948:8998:55;;8544:1067:26;;;;;;;7611:265:51;948:8998:55;8544:1067:26;7611:265:51;1301:116:26;1366:40;;948:8998:55;1366:40:26;948:8998:55;;;;1366:40:26;8544:1067;;948:8998:55;8544:1067:26;;;;;;;;;;;;;;;;;;;948:8998:55;8544:1067:26;;;;;7615:32:51;7634:13;948:8998:55;7634:13:51;948:8998:55;7625:22:51;;7615:32;;948:8998:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;5554:32;;;;;948:8998;5554:32;;948:8998;5554:32;;;;;;948:8998;5554:32;;;:::i;:::-;;;948:8998;;;;;;;5617:30;5554:32;;;;;-1:-1:-1;5554:32:55;;8684:126;8728:39;;;;;;;;;:::i;:::-;8781:18;;;;;:::i;:::-;8684:126;;;;948:8998;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4934:58;;;;948:8998;4934:58;;948:8998;4934:58;;;;;;948:8998;4934:58;;;:::i;:::-;;;948:8998;;;;;4934:58;;;;;;;-1:-1:-1;4934:58:55;;4848:57;;;948:8998;4848:57;;948:8998;4848:57;;;;;;948:8998;4848:57;;;:::i;:::-;;;948:8998;;;;;;;4848:57;;;;;;-1:-1:-1;4848:57:55;;948:8998;;;;;;;;;;;;;;;;;;;;;;;4685:44;4702:15;;;:27;;4685:44;;;948:8998;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4535:43;948:8998;;;;4558:20;4535:43;;;948:8998;;;;;;;;;;;;;:::i;:::-;2989:103:31;;:::i;:::-;948:8998:55;;;9255:18;948:8998;;9319:7;948:8998;;9363:5;;;;;;9902:34;948:8998;9902:34;;948:8998;1505:66:31;2407:1;948:8998:55;9370:3;9404:20;;;:::i;:::-;948:8998;;;;;;9442:9;;;9438:23;;9489:43;948:8998;;9496:10;;;:::i;:::-;948:8998;;;;;;;;;9489:43;;;;948:8998;9489:43;;9526:4;948:8998;9489:43;;948:8998;9489:43;;;;;;;948:8998;9489:43;;;9370:3;9554:11;;;;948:8998;;9602:20;9701:35;9726:10;948:8998;9602:20;9871:5;9602:20;;;;:::i;:::-;948:8998;;;;;;;;;;;9726:10;:::i;:::-;9701:22;;;:::i;:35::-;9847:10;948:8998;9847:10;;;:::i;:::-;948:8998;;;;;;;9871:5;:::i;:::-;948:8998;9348:13;;948:8998;;;;;;;;;;;;;9489:43;948:8998;;;;;;;;;9489:43;;;948:8998;9489:43;;;;;;;;;948:8998;9489:43;;;:::i;:::-;;;948:8998;;;;;9489:43;;;;;;-1:-1:-1;9489:43:55;;9438:23;948:8998;9453:8;;;;948:8998;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;948:8998:55;;;;;-1:-1:-1;948:8998:55;;;;;;;;;;;;:::o;:::-;9404:17;948:8998;;;;;;9404:17;-1:-1:-1;948:8998:55;;-1:-1:-1;948:8998:55;;;-1:-1:-1;948:8998:55;:::o;:::-;;;;;;;;;;;9319:7;948:8998;;;;;;9319:7;-1:-1:-1;948:8998:55;;-1:-1:-1;948:8998:55;;;-1:-1:-1;948:8998:55;:::o;:::-;9701:19;948:8998;;;;;;9701:19;-1:-1:-1;948:8998:55;;-1:-1:-1;948:8998:55;;;-1:-1:-1;948:8998:55;:::o;:::-;8524:6;948:8998;;;;;;8524:6;-1:-1:-1;948:8998:55;;-1:-1:-1;948:8998:55;;;-1:-1:-1;948:8998:55;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;3749:292:31;2407:1;1505:66;948:8998:55;4560:63:31;3644:93;;2407:1;1505:66;2407:1;3749:292::o;3644:93::-;3696:30;-1:-1:-1;3696:30:31;;-1:-1:-1;3696:30:31;7509:374:51;;8544:1067:26;;;;8509:24;7611:265:51;8544:1067:26;;;;;;;7611:265:51;8544:1067:26;;;;;;;1338:4;7611:265:51;8544:1067:26;;;;;;;7509:374:51;8544:1067:26;;1305:38;1301:116;;7509:374:51;:::o;1301:116:26:-;8544:1067;1366:40;;7611:265:51;1366:40:26;948:8998:55;8544:1067:26;948:8998:55;8544:1067:26;7611:265:51;1366:40:26;8544:1067;;1338:4;8544:1067;;;;;;;;;;;;;;;;6928:278:51;;948:8998:55;7032:13:51;948:8998:55;;;;;7023:22:51;;;;:45;;;6928:278;7019:180;;;7083:37;;;;;;;;;948:8998:55;7083:37:51;948:8998:55;;7083:37:51;;;;948:8998:55;7083:37:51;;;;;;;;;;7019:180;6928:278::o;7083:37::-;;;;;:::i;:::-;6928:278::o;7019:180::-;1767:47:26;;;;;948:8998:55;10404:1148:26;;;10365:28;-1:-1:-1;10404:1148:26;;;;7185:4:51;10404:1148:26;;;;;-1:-1:-1;10404:1148:26;;;;;;;1809:4;-1:-1:-1;10404:1148:26;;;;;;;7019:180:51;10404:1148:26;;;;-1:-1:-1;10404:1148:26;;1766:48;1762:126;;7019:180:51;6928:278::o;1762:126:26:-;1837:40;-1:-1:-1;1837:40:26;10404:1148;948:8998:55;10404:1148:26;-1:-1:-1;1837:40:26;10404:1148;1809:4;10404:1148;;;;;;;;;;;;;;;;;;-1:-1:-1;10404:1148:26;;;;;7023:45:51;7049:9;;;:19;;7023:45;;948:8998:55;;9341:11:42;948:8998:55;;;;;;9341:11:42;-1:-1:-1;948:8998:55;;;;;;;;;;;;;:::o;10296:2822:42:-;;;;;;;948:8998:55;;;10534:22:42;10554:1;10534:22;;948:8998:55;;;10554:1:42;;;41642:10;948:8998:55;;41654:20:42;;;;;41700:23;948:8998:55;41710:12:42;;;;;:::i;:::-;41100:19;948:8998:55;;41700:23:42;;:::i;:::-;948:8998:55;;41642:10:42;;;41654:20;;;;;;;;;10554:1;948:8998:55;;;10724:22:42;948:8998:55;;;10794:21:42;;;:::i;:::-;10906:25;948:8998:55;;;7136:6:0;;958:34;;948:8998:55;;7206:19:0;805:35;7206:19;;;:42;;;41637:128:42;958:34:0;;;11024:40:42;41316:20;948:8998:55;11024:30:42;:12;948:8998:55;;;11024:12:42;;;;;:::i;:::-;41100:19;948:8998:55;;11041:12:42;;;;:::i;:::-;41100:19;948:8998:55;;11024:30:42;;:::i;:::-;:40;:::i;:::-;41316:20;:::i;:::-;948:8998:55;;;;11192:16:42;;;;11188:90;;11375:18;;;;:::i;:::-;948:8998:55;;10554:1:42;15237:5:0;;958:34;;;10554:1:42;14261:13:0;;41100:19:42;14286:25:0;;;14282:56;;41637:128:42;14349:17:0;14355:11;14599:3;14349:17;;;14345:48;;41637:128:42;14410:7:0;14404:13;;;14400:44;;41637:128:42;14461:5:0;14455:11;;;14451:40;;41637:128:42;14508:4:0;14502:10;;;14498:39;;41637:128:42;14554:3:0;14548:9;;;14544:38;;41637:128:42;14593:9:0;;14589:23;;41637:128:42;948:8998:55;;;7182:2:0;948:8998:55;;14737:3:0;948:8998:55;;14760:31:0;14773:18;14755:176;14793:7;10554:1:42;14793:7:0;;;;948:8998:55;15317:34:0;948:8998:55;;;;;15355:3:0;948:8998:55;11673:23:42;;;;;:::i;:::-;948:8998:55;805:35:0;948:8998:55;;;9170:14:0;958:34;;41316:20:42;948:8998:55;10554:1:42;948:8998:55;;;41316:20:42;:::i;:::-;948:8998:55;;41100:19:42;948:8998:55;805:35:0;4084:19;;;:42;;;14755:176;958:34;;;11910:15:42;948:8998:55;;;11910:15:42;;:::i;:::-;948:8998:55;;41100:19:42;948:8998:55;805:35:0;3652:19;;;:42;;;14755:176;958:34;;;948:8998:55;;10554:1:42;15237:5:0;;958:34;;;10554:1:42;14261:13:0;;41100:19:42;14286:25:0;;;14282:56;;14755:176;14349:17;14355:11;14599:3;14349:17;;;14345:48;;14755:176;14410:7;14404:13;;;14400:44;;14755:176;14461:5;14455:11;;;14451:40;;14755:176;14508:4;14502:10;;;14498:39;;14755:176;14554:3;14548:9;;;14544:38;;14755:176;14593:9;;14589:23;;14755:176;14737:3;948:8998:55;;;;;;;;7182:2:0;948:8998:55;14773:18:0;14793:7;10554:1:42;14793:7:0;;;;948:8998:55;12090:12:42;948:8998:55;;15317:34:0;12003:13:42;948:8998:55;;;;15355:3:0;948:8998:55;12003:13:42;;:::i;:::-;12090:12;;:::i;:::-;41100:19;948:8998:55;;12166:22:42;;12198:21;;;948:8998:55;;12331:16:42;12327:746;;14755:176:0;13083:28:42;;;;;;;10296:2822;:::o;12327:746::-;12363:16;;;41100:19;12363:16;;;;12730:19;12363:16;41316:20;12363:16;;;12730:19;;:::i;41316:20::-;12789:11;948:8998:55;3652:19:0;805:35;3652:19;;;:42;;;12327:746:42;958:34:0;;;12789:18:42;948:8998:55;;;12789:18:42;:::i;:::-;948:8998:55;10554:1:42;948:8998:55;;;;12917:16:42;10554:1;;12953:22;;;12913:150;12327:746;;;;;;;;12913:150;13035:11;;;;;:::i;:::-;948:8998:55;;10554:1:42;15237:5:0;;958:34;;;10554:1:42;14261:13:0;;41100:19:42;14286:25:0;;;14282:56;;12913:150:42;14349:17:0;14355:11;14599:3;14349:17;;;14345:48;;12913:150:42;14410:7:0;14404:13;;;14400:44;;12913:150:42;14461:5:0;14455:11;;;14451:40;;12913:150:42;14508:4:0;14502:10;;;14498:39;;12913:150:42;14554:3:0;14548:9;;;14544:38;;12913:150:42;14593:9:0;;14589:23;;12913:150:42;14737:3:0;948:8998:55;;;;;;;;7182:2:0;948:8998:55;14773:18:0;14793:7;10554:1:42;14793:7:0;;;;-1:-1:-1;13025:23:42;;-1:-1:-1;948:8998:55;;15317:34:0;948:8998:55;15355:3:0;948:8998:55;;13025:23:42;:::i;:::-;12913:150;;14802:9:0;948:8998:55;;;;;;;;;;14737:3:0;948:8998:55;;;;;;14802:9:0;948:8998:55;;14760:31:0;;;;;;14589:23;948:8998:55;;;14589:23:0;;;14544:38;948:8998:55;;;;;;14544:38:0;;14498:39;14554:3;948:8998:55;;;;;14498:39:0;;14451:40;14477:1;948:8998:55;;;;;14451:40:0;;14400:44;14508:4;948:8998:55;;;;;14400:44:0;;14345:48;14377:2;948:8998:55;;;;;14345:48:0;;14282:56;-1:-1:-1;7182:2:0;;-1:-1:-1;948:8998:55;;;14282:56:0;;3652:42;3675:19;958:34;3675:19;;;3652:42;;14802:9;948:8998:55;;;;;;;;;;14737:3:0;948:8998:55;;;;;;14802:9:0;948:8998:55;;14760:31:0;;;;;;14589:23;948:8998:55;;;14589:23:0;;;14544:38;948:8998:55;;;;;;14544:38:0;;14498:39;14554:3;948:8998:55;;;;;14498:39:0;;14451:40;14477:1;948:8998:55;;;;;14451:40:0;;14400:44;14508:4;948:8998:55;;;;;14400:44:0;;14345:48;14377:2;948:8998:55;;;;;14345:48:0;;14282:56;-1:-1:-1;7182:2:0;;-1:-1:-1;948:8998:55;;;14282:56:0;;3652:42;3675:19;958:34;3675:19;;;3652:42;;4084;4107:19;958:34;4107:19;;;4084:42;;14802:9;948:8998:55;;;;;;;;14737:3:0;948:8998:55;;;;;;14802:9:0;948:8998:55;;14760:31:0;;;;14589:23;948:8998:55;;;14589:23:0;;;14544:38;948:8998:55;;;;;;14544:38:0;;14498:39;14523:1;948:8998:55;;;;;14498:39:0;;14451:40;14477:1;948:8998:55;;;;;14451:40:0;;14400:44;14428:2;948:8998:55;;;;;14400:44:0;;14345:48;14377:2;948:8998:55;;;;;14345:48:0;;14282:56;-1:-1:-1;7182:2:0;;-1:-1:-1;948:8998:55;;;14282:56:0;;11188:90:42;11224:43;7182:2:0;948:8998:55;11224:43:42;;;41100:19;11224:43;;;41100:19;;;;;948:8998:55;41100:19:42;948:8998:55;;;41100:19:42;;;;;;11224:43;7206:42:0;7229:19;958:34;7229:19;;;7206:42;;948:8998:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5893:600:51;6059:40;;;;:::i;:::-;8790:6:0;;;958:34;;23319:50;23314:55;;23319:50;;23388:13;948:8998:55;;23394:2:0;948:8998:55;23388:13:0;:::i;:::-;24377:34;24367:44;;958:34;;24377;948:8998:55;8851:29:0;958:34;8851:29;;958:34;;948:8998:55;;;;;6381:30:51;6377:82;;5893:600;:::o;6377:82::-;6447:1;948:8998:55;;;;;;;6427:21:51;:::o;23310:1040:0:-;23438:3;948:8998:55;;;;23486:17:0;23492:11;23486:17;;;23482:48;;23310:1040;23746:3;23543:13;23549:7;23811:45;23543:13;;;23539:44;;23310:1040;23602:5;23596:11;;;23592:40;;23310:1040;23651:4;23645:10;;;23641:39;;23310:1040;23699:3;23693:9;;;23689:38;;23310:1040;23740:9;;23736:23;;23310:1040;948:8998:55;23836:1:0;948:8998:55;;;;;;;;;;;;23811:45:0;:::i;:::-;23875:44;23885:34;23875:44;;958:34;;948:8998:55;23959:3:0;948:8998:55;;;23885:34:0;23996:38;;948:8998:55;;24046:21:0;948:8998:55;24095:2:0;948:8998:55;24112:7:0;;;;24108:20;;23310:1040;948:8998:55;;;;23959:3:0;948:8998:55;24221:7:0;;;;24217:20;;23310:1040;23959:3;948:8998:55;24313:15:0;948:8998:55;;24331:6:0;948:8998:55;;24331:6:0;:::i;:::-;24313:28;;948:8998:55;23310:1040:0;;24313:28;;;;23836:1;24313:28;;;24217:20;948:8998:55;;;24217:20:0;;;24108;948:8998:55;;;-1:-1:-1;24108:20:0;;;23736:23;23758:1;948:8998:55;23736:23:0;;23689:38;948:8998:55;;;;;;23689:38:0;;23641:39;23666:1;948:8998:55;;;;;23641:39:0;;23592:40;23618:1;948:8998:55;;;;;23592:40:0;;23539:44;23567:2;948:8998:55;;;;;23539:44:0;;23482:48;-1:-1:-1;;948:8998:55;;;;;23482:48:0;;403:228:53;;494:11;;490:25;;585:10;;;:::i;:::-;598:9;948:8998:55;;;;;;;;;;;;;;;598:9:53;948:8998:55;;403:228:53;:::o;490:25::-;507:8;;948:8998:55;507:8:53;:::o;903:262::-;;;1026:11;;1022:59;;1100:23;1143:15;1100:23;;;:::i;:::-;1143:15;;;:::i;:::-;903:262;:::o;1022:59::-;1053:17;1036:1;1053:17;;:::o;3517:219:0:-;;948:8998:55;;;;;;805:35:0;3652:19;;;:42;;;3517:219;958:34;;;948:8998:55;;3517:219:0;:::o;3652:42::-;3675:19;958:34;3675:19;;;3652:42;;3949:219;;948:8998:55;;;;;;805:35:0;4084:19;;;:42;;;958:34;;;948:8998:55;;3949:219:0;:::o;4395:225::-;;948:8998:55;;;;;;4517:2:0;948:8998:55;805:35:0;4536:19;;;:42;;;958:34;;;948:8998:55;;4395:225:0;:::o;7038:252::-;;948:8998:55;;7136:6:0;;;958:34;;7182:2;948:8998:55;;;;805:35:0;7206:19;;;:42;;;958:34;;;948:8998:55;;7038:252:0;:::o;6267:513::-;6363:6;;6359:20;;948:8998:55;;;6397:6:0;;958:34;;6455;6451:38;;948:8998:55;;6495:2:0;948:8998:55;;6547:3:0;948:8998:55;;6575:50:0;6569:56;;958:34;;6495:2;948:8998:55;;;6661:85:0;;958:34;;948:8998:55;6267:513:0;:::o;22569:296::-;948:8998:55;;22661:20:0;22657:24;;958:34;;;22711:21;22707:25;;22703:39;;22810:35;22771:83;948:8998:55;;22849:3:0;948:8998:55;;;22771:83:0;:::i;22703:39::-;22734:8;948:8998:55;22734:8:0;:::o;15549:6841::-;948:8998:55;;;15643:20:0;15639:24;;958:34;;;15693:21;15689:25;;15685:39;;15763:34;15810:22;948:8998:55;15814:18:0;15810:22;;948:8998:55;;15810:26:0;15806:100;;15549:6841;948:8998:55;15922:18:0;15918:22;;948:8998:55;;15918:26:0;15914:100;;15549:6841;948:8998:55;16030:18:0;16026:22;;948:8998:55;;16026:26:0;16022:100;;15549:6841;948:8998:55;16138:18:0;16134:22;;948:8998:55;;16134:26:0;16130:100;;15549:6841;948:8998:55;16246:17:0;16242:21;;948:8998:55;;16242:25:0;16238:99;;15549:6841;948:8998:55;16353:17:0;16349:21;;948:8998:55;;16349:25:0;16345:99;;15549:6841;948:8998:55;16460:17:0;16456:21;;948:8998:55;;16456:25:0;16452:99;;15549:6841;948:8998:55;16567:17:0;16563:21;;948:8998:55;;16563:25:0;16559:99;;15549:6841;948:8998:55;16674:16:0;16670:20;;948:8998:55;;16670:24:0;16666:98;;15549:6841;948:8998:55;16780:16:0;16776:20;;948:8998:55;;16776:24:0;16772:98;;15549:6841;948:8998:55;16886:16:0;16882:20;;948:8998:55;;16882:24:0;16878:98;;15549:6841;948:8998:55;16992:16:0;16988:20;;948:8998:55;;16988:24:0;16984:98;;15549:6841;948:8998:55;17098:15:0;17094:19;;948:8998:55;;17094:23:0;17090:97;;15549:6841;948:8998:55;17203:15:0;17199:19;;948:8998:55;;17199:23:0;17195:97;;15549:6841;948:8998:55;17308:15:0;17304:19;;948:8998:55;;17304:23:0;17300:97;;15549:6841;948:8998:55;17413:15:0;17409:19;;948:8998:55;;17409:23:0;17405:97;;15549:6841;948:8998:55;17518:14:0;17514:18;;948:8998:55;;17514:22:0;17510:96;;15549:6841;948:8998:55;17622:14:0;17618:18;;948:8998:55;;17618:22:0;17614:96;;15549:6841;948:8998:55;17726:14:0;17722:18;;948:8998:55;;17722:22:0;17718:96;;15549:6841;948:8998:55;17830:14:0;17826:18;;948:8998:55;;17826:22:0;17822:96;;15549:6841;948:8998:55;17934:13:0;17930:17;;948:8998:55;;17930:21:0;17926:95;;15549:6841;948:8998:55;18037:13:0;18033:17;;948:8998:55;;18033:21:0;18029:95;;15549:6841;948:8998:55;18140:13:0;18136:17;;948:8998:55;;18136:21:0;18132:95;;15549:6841;948:8998:55;18243:13:0;18239:17;;948:8998:55;;18239:21:0;18235:95;;15549:6841;948:8998:55;18346:12:0;18342:16;;948:8998:55;;18342:20:0;18338:94;;15549:6841;948:8998:55;18448:12:0;18444:16;;948:8998:55;;18444:20:0;18440:94;;15549:6841;948:8998:55;18550:12:0;18546:16;;948:8998:55;;18546:20:0;18542:94;;15549:6841;948:8998:55;18652:12:0;18648:16;;948:8998:55;;18648:20:0;18644:94;;15549:6841;948:8998:55;18754:11:0;18750:15;;948:8998:55;;18750:19:0;18746:93;;15549:6841;948:8998:55;18855:11:0;18851:15;;948:8998:55;;18851:19:0;18847:93;;15549:6841;948:8998:55;18956:11:0;18952:15;;948:8998:55;;18952:19:0;18948:93;;15549:6841;948:8998:55;19057:11:0;19053:15;;948:8998:55;;19053:19:0;19049:93;;15549:6841;948:8998:55;19158:10:0;19154:14;;948:8998:55;;19154:18:0;19150:92;;15549:6841;948:8998:55;19258:10:0;19254:14;;948:8998:55;;19254:18:0;19250:92;;15549:6841;948:8998:55;19358:10:0;19354:14;;948:8998:55;;19354:18:0;19350:92;;15549:6841;948:8998:55;19458:10:0;19454:14;;948:8998:55;;19454:18:0;19450:92;;15549:6841;948:8998:55;19558:9:0;19554:13;;948:8998:55;;19554:17:0;19550:91;;15549:6841;948:8998:55;19657:9:0;19653:13;;948:8998:55;;19653:17:0;19649:91;;15549:6841;948:8998:55;19756:9:0;19752:13;;948:8998:55;;19752:17:0;19748:91;;15549:6841;948:8998:55;19855:9:0;19851:13;;948:8998:55;;19851:17:0;19847:91;;15549:6841;948:8998:55;19954:8:0;19950:12;;948:8998:55;;19950:16:0;19946:90;;15549:6841;948:8998:55;20052:8:0;20048:12;;948:8998:55;;20048:16:0;20044:90;;15549:6841;948:8998:55;20150:8:0;20146:12;;948:8998:55;;20146:16:0;20142:90;;15549:6841;948:8998:55;20248:8:0;20244:12;;948:8998:55;;20244:16:0;20240:90;;15549:6841;948:8998:55;20346:7:0;20342:11;;948:8998:55;;20342:15:0;20338:89;;15549:6841;948:8998:55;20443:7:0;20439:11;;948:8998:55;;20439:15:0;20435:89;;15549:6841;948:8998:55;20540:7:0;20536:11;;948:8998:55;;20536:15:0;20532:89;;15549:6841;948:8998:55;20637:7:0;20633:11;;948:8998:55;;20633:15:0;20629:89;;15549:6841;948:8998:55;20734:6:0;20730:10;;948:8998:55;;20730:14:0;20726:88;;15549:6841;948:8998:55;20830:6:0;20826:10;;948:8998:55;;20826:14:0;20822:88;;15549:6841;948:8998:55;20926:6:0;20922:10;;948:8998:55;;20922:14:0;20918:88;;15549:6841;948:8998:55;21022:6:0;21018:10;;948:8998:55;;21018:14:0;21014:88;;15549:6841;948:8998:55;21118:5:0;21114:9;;948:8998:55;;21114:13:0;21110:87;;15549:6841;948:8998:55;21213:5:0;21209:9;;948:8998:55;;21209:13:0;21205:87;;15549:6841;948:8998:55;21308:5:0;21304:9;;948:8998:55;;21304:13:0;21300:87;;15549:6841;948:8998:55;21403:5:0;21399:9;;948:8998:55;;21399:13:0;21395:87;;15549:6841;948:8998:55;21498:4:0;21494:8;;948:8998:55;;21494:12:0;21490:86;;15549:6841;948:8998:55;21592:4:0;21588:8;;948:8998:55;;21588:12:0;21584:86;;15549:6841;948:8998:55;21686:4:0;21682:8;;948:8998:55;;21682:12:0;21678:86;;15549:6841;948:8998:55;21780:4:0;21776:8;;948:8998:55;;21776:12:0;21772:86;;15549:6841;948:8998:55;21874:3:0;21870:7;;948:8998:55;;21870:11:0;21866:85;;15549:6841;948:8998:55;21967:3:0;21963:7;;948:8998:55;;21963:11:0;21959:85;;15549:6841;948:8998:55;22060:3:0;22056:7;;948:8998:55;;22056:11:0;22052:85;;15549:6841;22153:3;948:8998:55;22149:7:0;;948:8998:55;;22149:11:0;22145:85;;15549:6841;21592:4;948:8998:55;;;22267:2:0;948:8998:55;;;;958:34:0;22300:38;;958:34;;948:8998:55;;15549:6841:0;:::o;22145:85::-;948:8998:55;22188:35:0;948:8998:55;21498:4:0;948:8998:55;22145:85:0;;;22052;22095:35;948:8998:55;;;21498:4:0;948:8998:55;;22052:85:0;;21959;948:8998:55;22002:35:0;948:8998:55;21498:4:0;948:8998:55;21959:85:0;;;21866;948:8998:55;21909:35:0;948:8998:55;21498:4:0;948:8998:55;21866:85:0;;;21772:86;948:8998:55;21816:35:0;948:8998:55;21498:4:0;948:8998:55;21772:86:0;;;21678;948:8998:55;21722:35:0;948:8998:55;21498:4:0;948:8998:55;21678:86:0;;;21584;948:8998:55;21628:35:0;948:8998:55;21498:4:0;948:8998:55;21584:86:0;;;21490;948:8998:55;21534:35:0;948:8998:55;21498:4:0;948:8998:55;21490:86:0;;;21395:87;948:8998:55;21440:35:0;948:8998:55;21479:3:0;948:8998:55;21395:87:0;;;21300;948:8998:55;21345:35:0;948:8998:55;21384:3:0;948:8998:55;21300:87:0;;;21205;948:8998:55;21250:35:0;948:8998:55;21289:3:0;948:8998:55;21205:87:0;;;21110;948:8998:55;21155:35:0;948:8998:55;21194:3:0;948:8998:55;21110:87:0;;;21014:88;948:8998:55;21060:35:0;948:8998:55;21099:3:0;948:8998:55;21014:88:0;;;20918;948:8998:55;20964:35:0;948:8998:55;21003:3:0;948:8998:55;20918:88:0;;;20822;948:8998:55;20868:35:0;948:8998:55;20907:3:0;948:8998:55;20822:88:0;;;20726;948:8998:55;20772:35:0;948:8998:55;20811:3:0;948:8998:55;20726:88:0;;;20629:89;948:8998:55;20676:35:0;948:8998:55;20715:3:0;948:8998:55;20629:89:0;;;20532;948:8998:55;20579:35:0;948:8998:55;20618:3:0;948:8998:55;20532:89:0;;;20435;948:8998:55;20482:35:0;948:8998:55;20521:3:0;948:8998:55;20435:89:0;;;20338;948:8998:55;20385:35:0;948:8998:55;20424:3:0;948:8998:55;20338:89:0;;;20240:90;948:8998:55;20288:35:0;948:8998:55;20327:3:0;948:8998:55;20240:90:0;;;20142;948:8998:55;20190:35:0;948:8998:55;20229:3:0;948:8998:55;20142:90:0;;;20044;948:8998:55;20092:35:0;948:8998:55;20131:3:0;948:8998:55;20044:90:0;;;19946;948:8998:55;19994:35:0;948:8998:55;20033:3:0;948:8998:55;19946:90:0;;;19847:91;948:8998:55;19896:35:0;948:8998:55;19935:3:0;948:8998:55;19847:91:0;;;19748;948:8998:55;19797:35:0;948:8998:55;19836:3:0;948:8998:55;19748:91:0;;;19649;948:8998:55;19698:35:0;948:8998:55;19737:3:0;948:8998:55;19649:91:0;;;19550;948:8998:55;19599:35:0;948:8998:55;19638:3:0;948:8998:55;19550:91:0;;;19450:92;948:8998:55;19500:35:0;948:8998:55;19539:3:0;948:8998:55;19450:92:0;;;19350;948:8998:55;19400:35:0;948:8998:55;19439:3:0;948:8998:55;19350:92:0;;;19250;948:8998:55;19300:35:0;948:8998:55;19339:3:0;948:8998:55;19250:92:0;;;19150;948:8998:55;19200:35:0;948:8998:55;19239:3:0;948:8998:55;19150:92:0;;;19049:93;948:8998:55;19100:35:0;948:8998:55;19139:3:0;948:8998:55;19049:93:0;;;18948;948:8998:55;18999:35:0;948:8998:55;19038:3:0;948:8998:55;18948:93:0;;;18847;948:8998:55;18898:35:0;948:8998:55;18937:3:0;948:8998:55;18847:93:0;;;18746;948:8998:55;18797:35:0;948:8998:55;18836:3:0;948:8998:55;18746:93:0;;;18644:94;948:8998:55;18696:35:0;948:8998:55;18735:3:0;948:8998:55;18644:94:0;;;18542;948:8998:55;18594:35:0;948:8998:55;18633:3:0;948:8998:55;18542:94:0;;;18440;948:8998:55;18492:35:0;948:8998:55;18531:3:0;948:8998:55;18440:94:0;;;18338;948:8998:55;18390:35:0;948:8998:55;18429:3:0;948:8998:55;18338:94:0;;;18235:95;948:8998:55;18288:35:0;948:8998:55;18327:3:0;948:8998:55;18235:95:0;;;18132;948:8998:55;18185:35:0;948:8998:55;18224:3:0;948:8998:55;18132:95:0;;;18029;948:8998:55;18082:35:0;948:8998:55;18121:3:0;948:8998:55;18029:95:0;;;17926;948:8998:55;17979:35:0;948:8998:55;18018:3:0;948:8998:55;17926:95:0;;;17822:96;948:8998:55;17876:35:0;948:8998:55;17915:3:0;948:8998:55;17822:96:0;;;17718;948:8998:55;17772:35:0;948:8998:55;17811:3:0;948:8998:55;17718:96:0;;;17614;948:8998:55;17668:35:0;948:8998:55;17707:3:0;948:8998:55;17614:96:0;;;17510;948:8998:55;17564:35:0;948:8998:55;17603:3:0;948:8998:55;17510:96:0;;;17405:97;948:8998:55;17460:35:0;948:8998:55;17499:3:0;948:8998:55;17405:97:0;;;17300;948:8998:55;17355:35:0;948:8998:55;17394:3:0;948:8998:55;17300:97:0;;;17195;948:8998:55;17250:35:0;948:8998:55;17289:3:0;948:8998:55;17195:97:0;;;17090;948:8998:55;17145:35:0;948:8998:55;17184:3:0;948:8998:55;17090:97:0;;;16984:98;948:8998:55;17040:35:0;948:8998:55;17079:3:0;948:8998:55;16984:98:0;;;16878;948:8998:55;16934:35:0;948:8998:55;16973:3:0;948:8998:55;16878:98:0;;;16772;948:8998:55;16828:35:0;948:8998:55;16867:3:0;948:8998:55;16772:98:0;;;16666;948:8998:55;16722:35:0;948:8998:55;16761:3:0;948:8998:55;16666:98:0;;;16559:99;948:8998:55;16616:35:0;948:8998:55;16655:3:0;948:8998:55;16559:99:0;;;16452;948:8998:55;16509:35:0;948:8998:55;16548:3:0;948:8998:55;16452:99:0;;;16345;948:8998:55;16402:35:0;948:8998:55;16441:3:0;948:8998:55;16345:99:0;;;16238;948:8998:55;16295:35:0;948:8998:55;16334:3:0;948:8998:55;16238:99:0;;;16130:100;948:8998:55;16188:35:0;948:8998:55;16227:3:0;948:8998:55;16130:100:0;;;16022;948:8998:55;16080:35:0;948:8998:55;16119:3:0;948:8998:55;16022:100:0;;;15914;948:8998:55;15972:35:0;948:8998:55;16011:3:0;948:8998:55;15914:100:0;;;15806;948:8998:55;;-1:-1:-1;15806:100:0;","linkReferences":{},"immutableReferences":{"50149":[{"start":3324,"length":32},{"start":4967,"length":32},{"start":7674,"length":32}]}},"methodIdentifiers":{"collectProtocolFees(address)":"2a54db01","flashLoan(address,address,uint256,bytes,uint256,uint256)":"e49cd475","swapToLimit(address,address,uint256,uint256,int128,uint256,bool,uint256,uint256)":"8a3d858d","swapToLimitAmounts(uint256,uint256,int128,uint256[],int128,int128[],uint256)":"bf05a0a6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract NativeWrapper\",\"name\":\"wrapper_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC3156FlashBorrower\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFee\",\"type\":\"uint256\"}],\"name\":\"Flash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"ProtocolFeesCollected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFee\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dest\",\"type\":\"address\"}],\"name\":\"collectProtocolFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC3156FlashBorrower\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenAddr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"flashFeePpm\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolFeePpm\",\"type\":\"uint256\"}],\"name\":\"flashLoan\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"int128\",\"name\":\"limitPrice\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePpm\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolFeePpm\",\"type\":\"uint256\"}],\"name\":\"swapToLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountInUsed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inFee\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"inputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"int128\",\"name\":\"limitPrice\",\"type\":\"int128\"},{\"internalType\":\"uint256[]\",\"name\":\"bases\",\"type\":\"uint256[]\"},{\"internalType\":\"int128\",\"name\":\"kappa\",\"type\":\"int128\"},{\"internalType\":\"int128[]\",\"name\":\"qInternal\",\"type\":\"int128[]\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePpm\",\"type\":\"uint256\"}],\"name\":\"swapToLimitAmounts\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inFee\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract inherits from PartyPoolBase to access storage and internal functions\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"events\":{\"ProtocolFeesCollected()\":{\"details\":\"After collection, the protocolFee accounting array will be zeroed out.\"}},\"kind\":\"dev\",\"methods\":{\"collectProtocolFees(address)\":{\"details\":\"Anyone can call; must have protocolFeeAddress != address(0) to be operational.\"}},\"title\":\"PartyPoolSwapMintImpl - Implementation contract for swapMint and burnSwap functions\",\"version\":1},\"userdoc\":{\"events\":{\"ProtocolFeesCollected()\":{\"notice\":\"Emitted when protocol fees are collected from this pool.\"}},\"kind\":\"user\",\"methods\":{\"collectProtocolFees(address)\":{\"notice\":\"Transfer all protocol fees to the configured protocolFeeAddress and zero the ledger.\"}},\"notice\":\"This contract contains the swapMint and burnSwap implementation that will be called via delegatecall\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/PartyPoolSwapImpl.sol\":\"PartyPoolSwapImpl\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/abdk-libraries-solidity/ABDKMath64x64.sol\":{\"keccak256\":\"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97\",\"license\":\"BSD-4-Clause\",\"urls\":[\"bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7\",\"dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol\":{\"keccak256\":\"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd\",\"dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd\",\"dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168\",\"dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161\",\"dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"src/ERC20Internal.sol\":{\"keccak256\":\"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f\",\"dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk\"]},\"src/IOwnable.sol\":{\"keccak256\":\"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1\",\"dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9\"]},\"src/IPartyPool.sol\":{\"keccak256\":\"0x55d3656b1a4c75801852066b7ba871212e5e807917b3b9029349349fae39375c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://009b67ccf1d28a04a2407a05ddda8f954033b7ac70f7fd5cbedbf779e867df9f\",\"dweb:/ipfs/QmS5vQcfma6PN28Q6qQwqa7KmUKu2KST72jwF8ffsj6Bw2\"]},\"src/LMSRStabilized.sol\":{\"keccak256\":\"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3\",\"dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB\"]},\"src/NativeWrapper.sol\":{\"keccak256\":\"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238\",\"dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB\"]},\"src/OwnableInternal.sol\":{\"keccak256\":\"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca\",\"dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE\"]},\"src/PartyPoolBase.sol\":{\"keccak256\":\"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5\",\"dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5\"]},\"src/PartyPoolHelpers.sol\":{\"keccak256\":\"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5\",\"dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP\"]},\"src/PartyPoolSwapImpl.sol\":{\"keccak256\":\"0x71ecbd6d0fb106031baed7e4c21694ef24f0112af7d975325b98b1b0463ba5b2\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://64f8f8bae2f89ca495b9edacd012363b55e78a198f100650beb2b1238e8ef11f\",\"dweb:/ipfs/QmVfihiw9TqncuEfZKx7c6WEHiGFfRQyhtfdTGzfN7emNY\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract NativeWrapper","name":"wrapper_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[{"internalType":"address","name":"initiator","type":"address","indexed":true},{"internalType":"contract IERC3156FlashBorrower","name":"receiver","type":"address","indexed":true},{"internalType":"contract IERC20","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"lpFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolFee","type":"uint256","indexed":false}],"type":"event","name":"Flash","anonymous":false},{"inputs":[],"type":"event","name":"ProtocolFeesCollected","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":false},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"contract IERC20","name":"tokenIn","type":"address","indexed":true},{"internalType":"contract IERC20","name":"tokenOut","type":"address","indexed":true},{"internalType":"uint256","name":"amountIn","type":"uint256","indexed":false},{"internalType":"uint256","name":"amountOut","type":"uint256","indexed":false},{"internalType":"uint256","name":"lpFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolFee","type":"uint256","indexed":false}],"type":"event","name":"Swap","anonymous":false},{"inputs":[{"internalType":"address","name":"dest","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"collectProtocolFees"},{"inputs":[{"internalType":"contract IERC3156FlashBorrower","name":"receiver","type":"address"},{"internalType":"address","name":"tokenAddr","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"flashFeePpm","type":"uint256"},{"internalType":"uint256","name":"protocolFeePpm","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"flashLoan","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"inputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"outputTokenIndex","type":"uint256"},{"internalType":"int128","name":"limitPrice","type":"int128"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"unwrap","type":"bool"},{"internalType":"uint256","name":"swapFeePpm","type":"uint256"},{"internalType":"uint256","name":"protocolFeePpm","type":"uint256"}],"stateMutability":"payable","type":"function","name":"swapToLimit","outputs":[{"internalType":"uint256","name":"amountInUsed","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"inFee","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"inputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"outputTokenIndex","type":"uint256"},{"internalType":"int128","name":"limitPrice","type":"int128"},{"internalType":"uint256[]","name":"bases","type":"uint256[]"},{"internalType":"int128","name":"kappa","type":"int128"},{"internalType":"int128[]","name":"qInternal","type":"int128[]"},{"internalType":"uint256","name":"swapFeePpm","type":"uint256"}],"stateMutability":"pure","type":"function","name":"swapToLimitAmounts","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"inFee","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"collectProtocolFees(address)":{"details":"Anyone can call; must have protocolFeeAddress != address(0) to be operational."}},"version":1},"userdoc":{"kind":"user","methods":{"collectProtocolFees(address)":{"notice":"Transfer all protocol fees to the configured protocolFeeAddress and zero the ledger."}},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/PartyPoolSwapImpl.sol":"PartyPoolSwapImpl"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/abdk-libraries-solidity/ABDKMath64x64.sol":{"keccak256":"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97","urls":["bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7","dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN"],"license":"BSD-4-Clause"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d","urls":["bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100","dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc","urls":["bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037","dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44","urls":["bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d","dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol":{"keccak256":"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e","urls":["bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd","dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86","urls":["bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd","dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9","urls":["bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168","dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol":{"keccak256":"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0","urls":["bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161","dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"},"src/ERC20Internal.sol":{"keccak256":"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36","urls":["bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f","dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk"],"license":"UNLICENSED"},"src/IOwnable.sol":{"keccak256":"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990","urls":["bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1","dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9"],"license":"MIT"},"src/IPartyPool.sol":{"keccak256":"0x55d3656b1a4c75801852066b7ba871212e5e807917b3b9029349349fae39375c","urls":["bzz-raw://009b67ccf1d28a04a2407a05ddda8f954033b7ac70f7fd5cbedbf779e867df9f","dweb:/ipfs/QmS5vQcfma6PN28Q6qQwqa7KmUKu2KST72jwF8ffsj6Bw2"],"license":"UNLICENSED"},"src/LMSRStabilized.sol":{"keccak256":"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b","urls":["bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3","dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB"],"license":"UNLICENSED"},"src/NativeWrapper.sol":{"keccak256":"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579","urls":["bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238","dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB"],"license":"UNLICENSED"},"src/OwnableInternal.sol":{"keccak256":"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581","urls":["bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca","dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE"],"license":"MIT"},"src/PartyPoolBase.sol":{"keccak256":"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999","urls":["bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5","dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5"],"license":"UNLICENSED"},"src/PartyPoolHelpers.sol":{"keccak256":"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c","urls":["bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5","dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP"],"license":"UNLICENSED"},"src/PartyPoolSwapImpl.sol":{"keccak256":"0x71ecbd6d0fb106031baed7e4c21694ef24f0112af7d975325b98b1b0463ba5b2","urls":["bzz-raw://64f8f8bae2f89ca495b9edacd012363b55e78a198f100650beb2b1238e8ef11f","dweb:/ipfs/QmVfihiw9TqncuEfZKx7c6WEHiGFfRQyhtfdTGzfN7emNY"],"license":"UNLICENSED"}},"version":1},"id":55} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"wrapper_","type":"address","internalType":"contract NativeWrapper"}],"stateMutability":"nonpayable"},{"type":"function","name":"collectProtocolFees","inputs":[{"name":"dest","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"flashLoan","inputs":[{"name":"receiver","type":"address","internalType":"contract IERC3156FlashBorrower"},{"name":"tokenAddr","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"flashFeePpm","type":"uint256","internalType":"uint256"},{"name":"protocolFeePpm","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapToLimit","inputs":[{"name":"payer","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"inputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"outputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"limitPrice","type":"int128","internalType":"int128"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"unwrap","type":"bool","internalType":"bool"},{"name":"swapFeePpm","type":"uint256","internalType":"uint256"},{"name":"protocolFeePpm","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountInUsed","type":"uint256","internalType":"uint256"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"inFee","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"swapToLimitAmounts","inputs":[{"name":"inputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"outputTokenIndex","type":"uint256","internalType":"uint256"},{"name":"limitPrice","type":"int128","internalType":"int128"},{"name":"bases","type":"uint256[]","internalType":"uint256[]"},{"name":"kappa","type":"int128","internalType":"int128"},{"name":"qInternal","type":"int128[]","internalType":"int128[]"},{"name":"swapFeePpm","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"inFee","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"event","name":"Flash","inputs":[{"name":"initiator","type":"address","indexed":true,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"contract IERC3156FlashBorrower"},{"name":"token","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lpFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ProtocolFeesCollected","inputs":[],"anonymous":false},{"type":"event","name":"Swap","inputs":[{"name":"payer","type":"address","indexed":false,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"tokenIn","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"tokenOut","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lpFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60a03461009c57601f6138d638819003918201601f19168301916001600160401b038311848410176100a05780849260209460405283398101031261009c57516001600160a01b038116810361009c5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005560805260405161382190816100b58239608051818181610cfc015281816113670152611dfa0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f5f3560e01c80632a54db01146116555780638a3d858d146109d8578063bf05a0a6146107db5763e49cd47514610046575f80fd5b346107d85760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107d85760043573ffffffffffffffffffffffffffffffffffffffff811681036107d65761009d61192b565b60443567ffffffffffffffff606435116107d2573660236064350112156107d25767ffffffffffffffff60643560040135116107d257366024606435600401356064350101116107d25760a435916100f3611caa565b61010260ff6008541615611aab565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff86165afa9081156107c7578691610795575b5082116107375773ffffffffffffffffffffffffffffffffffffffff81168552600e602052604085205480156106d957807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101116106ac576101c0608435846129da565b50908694801515806106a3575b61060d575b5061020a8473ffffffffffffffffffffffffffffffffffffffff881673ffffffffffffffffffffffffffffffffffffffff8616611d21565b6040517f23e30c8b00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015284604482015282606482015260a060848201526064356004013560a48201526064356004013560246064350160c48301378760c4606435600401358301015260208160c4817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60643560040135011681010301818b73ffffffffffffffffffffffffffffffffffffffff8c165af1801561054e5788906105b7575b7f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd9915003610559576103576103248386611b10565b73ffffffffffffffffffffffffffffffffffffffff851673ffffffffffffffffffffffffffffffffffffffff8916611de2565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff88165afa90811561054e57869798969596916104ef575b507f249e0bf62ff982342c6a63926041694a221796af4b9ebacefc45823da42348139473ffffffffffffffffffffffffffffffffffffffff94936104938461045d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6104566104989761043e61042f846104bd9c016119e4565b90549060031b1c821015611b67565b6104498386016119e4565b90549060031b1c90611a71565b9201611a41565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b611a71565b9583604051948594169816963396846040919493926060820195825260208201520152565b0390a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055602060405160018152f35b94505091906020843d602011610546575b8161050d6020938361195e565b8101031261054257925185939192907f249e0bf62ff982342c6a63926041694a221796af4b9ebacefc45823da42348136103b5565b5f80fd5b3d9150610500565b6040513d8a823e3d90fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f666c6173683a2063616c6c6261636b00000000000000000000000000000000006044820152fd5b506020813d602011610605575b816105d16020938361195e565b81010312610601577f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd990516102ef565b8780fd5b3d91506105c4565b620f424091955061061e9083611b1d565b04938461062c575b5f6101d2565b61069e61065a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83016119e4565b61066a8883548360031b1c611b10565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b610626565b508215156101cd565b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f666c6173683a20746f6b656e206e6f7420696e20706f6f6c00000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f666c6173683a20616d6f756e74203e2062616c616e63650000000000000000006044820152fd5b90506020813d6020116107bf575b816107b06020938361195e565b8101031261054257515f61015b565b3d91506107a3565b6040513d88823e3d90fd5b8380fd5b505b80fd5b50346107d85760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107d8576004356024356044359182600f0b83036107d2576064359067ffffffffffffffff82116109d457366023830112156109d45781600401359161084c836119cc565b9261085a604051948561195e565b8084526024602085019160051b8301019136831161060157602401905b8282106109c45750505061088961194e565b9360a43567ffffffffffffffff81116109c057366023820112156109c05780600401356108b5816119cc565b916108c3604051938461195e565b8183526024602084019260051b820101903682116109bc57602401915b81831061099e575050509161090361091392868361090c98979660c4359a611f9d565b95909184611bcc565b5190612757565b9461091f861515611be0565b9480948061096f575b50509161093b6109429261096b94611bcc565b5190612b1a565b9261094e841515611c45565b604051938493846040919493926060820195825260208201520152565b0390f35b81965061096b949295509261099461098d6109429561093b946129a1565b8098611b10565b9592945092610928565b823580600f0b81036109b8578152602092830192016108e0565b8a80fd5b8980fd5b8680fd5b8135815260209182019101610877565b8480fd5b506101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261054257610a0c611908565b90610a1561192b565b610a1d61194e565b9160c43560a43581151582036105425760e43590610a4060ff6008541615611aab565b610a48611caa565b600b5480604435109081611649575b50156115eb575f86600f0b131561158d578015908115611582575b501561152457602495602073ffffffffffffffffffffffffffffffffffffffff610a9d604435611a29565b90549060031b1c16604051988980927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa958615611294575f966114ef575b60249750602073ffffffffffffffffffffffffffffffffffffffff610b0b606435611a29565b90549060031b1c16604051998a80927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa978815611294575f986114bb575b50600954604051600a80548083525f918252602083019493600f0b91907fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a85b8160018401106114905795610bbf928592610bcc98549181811061147c575b1061146b575b50038361195e565b6064359160443591611f9d565b610bea610bdd604499939935611a59565b90549060031b1c89612757565b97610bf6891515611be0565b5f9789958061144a575b50610c1c610c0f606435611a59565b90549060031b1c84612b1a565b9a610c288c1515611c45565b73ffffffffffffffffffffffffffffffffffffffff610c48604435611a29565b90549060031b1c1696610c5c818989611de2565b604051957f70a082310000000000000000000000000000000000000000000000000000000087523060048801526020876024818c5afa968715611294575f97611412575b5090610cab91611b10565b850361138e5773ffffffffffffffffffffffffffffffffffffffff610cd1606435611a29565b90549060031b1c16978061134f575b1561129f5773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b15610542575f809160248f60405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af1908115611294578d9161127f575b508980808093865af13d1561127a573d67ffffffffffffffff811161124d5760405190610dbe60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116018361195e565b81528a60203d92013e5b156111ef575b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526020816024818c5afa9081156111e4578d908b926111ae575b50610e1e9192611a71565b810361112a5788948a61010435151580611121575b6110c8575b50610e8f91610e6b610e60610e8493610e5561042f6044356119e4565b6104496044356119e4565b61045d604435611a41565b610e7961042f6064356119e4565b6104496064356119e4565b61045d606435611a41565b8782600f0b131561106a578783600f0b131561100c577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c93610f5e610f5360a095610f39610f0673ffffffffffffffffffffffffffffffffffffffff97610ef7604435611f5d565b90549060031b1c600f0b6129ff565b610f11604435611f5d565b9091906fffffffffffffffffffffffffffffffff83549160031b928116831b921b1916179055565b610f44606435611f5d565b90549060031b1c600f0b612a57565b610f11606435611f5d565b610f68818b611a71565b83604051971687528b60208801528c6040880152606087015260808601521692a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015610fdb575b50505061096b90604051938493846040919493926060820195825260208201520152565b8280809381938290611003575b3390f115610ff7578080610fb7565b604051903d90823e3d90fd5b506108fc610fe8565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a20616d6f756e744f7574203c3d20300000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4d53523a20616d6f756e74496e203c3d2030000000000000000000000000006044820152fd5b610e8491965091610e6b610e60620f42406110ea610e8f966101043590611b1d565b0498896110fe575b9350505091508a610e38565b61111c61110c6044356119e4565b61066a8d83548360031b1c611b10565b6110f2565b50801515610e33565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f73776170546f4c696d69743a206e6f6e2d7374616e6461726420746f6b656e4f60448201527f75740000000000000000000000000000000000000000000000000000000000006064820152fd5b9150506020813d6020116111dc575b816111ca6020938361195e565b8101031261054257518c610e1e610e13565b3d91506111bd565b6040513d8c823e3d90fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b60248b7f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b610dc8565b61128c919a505f9061195e565b5f985f610d69565b6040513d5f823e3d90fd5b6040517fa9059cbb000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff83166004528c60245260205f604481808d5af19060015f511482161561132e575b604052610dce57877f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b90600181151661134657893b15153d151616906112fb565b503d5f823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168814610ce0565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f73776170546f4c696d69743a206e6f6e2d7374616e6461726420746f6b656e4960448201527f6e000000000000000000000000000000000000000000000000000000000000006064820152fd5b919096506020823d602011611442575b8161142f6020938361195e565b8101031261054257905195610cab610ca0565b3d9150611422565b909550611459919850896129a1565b96611464888a611b10565b945f610c00565b60801d600f0b81526020015f610bb7565b92602060019184600f0b8152019301610bb1565b8054600f81810b895260809190911d900b602088015260409096019560029290920191600101610b92565b9097506020813d6020116114e7575b816114d76020938361195e565b810103126105425751965f610b53565b3d91506114ca565b95506020873d60201161151c575b8161150a6020938361195e565b81010312610542576024965195610ae5565b3d91506114fd565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f73776170546f4c696d69743a20646561646c696e6520657863656564656400006044820152fd5b90504211155f610a72565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f73776170546f4c696d69743a206c696d6974203c3d20300000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f73776170546f4c696d69743a20696478000000000000000000000000000000006044820152fd5b9050606435105f610a57565b346105425760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105425761168c611908565b611694611caa565b73ffffffffffffffffffffffffffffffffffffffff8116156118aa57600b545f5b818110611706577fd508feb4afc81230b8e5dcca865a405a72db1f928a5064f893ab22ab56ec25215f80a160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055005b61170f816119e4565b90549060031b1c9081156118a1576024602073ffffffffffffffffffffffffffffffffffffffff61173f84611a29565b90549060031b1c16604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa908115611294575f91611870575b5082811061181257826117e06117d760019561180c946117a6876119e4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82549160031b1b19169055611a71565b61045d85611a41565b8573ffffffffffffffffffffffffffffffffffffffff6117ff85611a29565b90549060031b1c16611d21565b016116b5565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f636f6c6c6563743a20666565203e2062616c00000000000000000000000000006044820152fd5b90506020813d8211611899575b8161188a6020938361195e565b81010312610542575185611787565b3d915061187d565b6001915061180c565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f636f6c6c6563743a207a65726f206164647200000000000000000000000000006044820152fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361054257565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361054257565b6084359081600f0b820361054257565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761199f57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b67ffffffffffffffff811161199f5760051b60200190565b600c548110156119fc57600c5f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600b548110156119fc57600b5f5260205f2001905f90565b600f548110156119fc57600f5f5260205f2001905f90565b600d548110156119fc57600d5f5260205f2001905f90565b91908203918211611a7e57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b15611ab257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b91908201809211611a7e57565b81810292918115918404141715611a7e57565b8115611b3a570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b15611b6e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f62616c616e6365203c2070726f746f636f6c206f7765640000000000000000006044820152fd5b80518210156119fc5760209160051b010190565b15611be757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f73776170546f4c696d69743a20696e707574207a65726f0000000000000000006044820152fd5b15611c4c57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f73776170546f4c696d69743a206f7574707574207a65726f00000000000000006044820152fd5b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005414611cf95760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b9173ffffffffffffffffffffffffffffffffffffffff604051927fa9059cbb000000000000000000000000000000000000000000000000000000005f521660045260245260205f60448180865af19060015f5114821615611dca575b60405215611d885750565b73ffffffffffffffffffffffffffffffffffffffff907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b90600181151661134657823b15153d15161690611d7d565b9073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169173ffffffffffffffffffffffffffffffffffffffff82169183831480611f53575b15611e9457505050803b15610542575f906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af1801561129457611e885750565b5f611e929161195e565b565b919390925073ffffffffffffffffffffffffffffffffffffffff604051937f23b872dd000000000000000000000000000000000000000000000000000000005f52166004523060245260445260205f60648180855af19060015f5114821615611f34575b50906040525f60605215611f095750565b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6001821516611f4a573b15153d1516165f611ef8565b823d5f823e3d90fd5b5084341015611e3c565b90600a548210156119fc57600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b93929491909483600f0b905f8213156126f9575f94855b8851871015611fdf57611fd7600191611fcd898c611bcc565b51600f0b906129ff565b960195611fb4565b90929496919395505f81600f0b131561269b57611ffb91612a94565b9081600f0b80156105425770010000000000000000000000000000000005947fffffffffffffffffffffffffffffffff8000000000000000000000000000000086121580612681575b15610542576120806120859161207b61206398600f0b9889928c611bcc565b51600f0b612071888d611bcc565b51600f0b90612a57565b612a94565b612b75565b9081600f0b948512156125fd578161209c91612ad4565b600f0b5f811315610542575f9080680100000000000000008212156125f0575b8064010000000060029212156125e4575b620100008112156125d8575b6101008112156125cc575b60108112156125c0575b60048112156125b5575b12156125ab575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f831361258f57506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d926121638484612a94565b937fffffffffffffffffffffffffffffffff8000000000000000000000000000000081600f0b146105425761219c905f03600f0b612b75565b600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612575575b15610542576121e690600f0b83612a94565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061255b575b1561054257600f0b5f811315610542575f90806801000000000000000082121561254e575b806401000000006002921215612542575b62010000811215612536575b61010081121561252a575b601081121561251e575b6004811215612513575b1215612509575b607f8290031b91907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160401b6780000000000000005b5f81136124e957506122f292506fb17217f7d1cf79abc9e3b39803f2f6af6122ec91600f0b0260801d85612a94565b98611bcc565b51600f0b9383958589600f0b1361230e575b5050505050509190565b85985068010000000000000000929496506120809061232f92949699612a94565b9101907fffffffffffffffffffffffffffffffff80000000000000000000000000000000821215806124cf575b156105425761236d91600f0b612a57565b905f600f83900b13612388575050505b5f8080808080612304565b612393929350612ad4565b600f0b5f811315610542575f9080680100000000000000008212156124c2575b8064010000000060029212156124b6575b620100008112156124aa575b61010081121561249e575b6010811215612492575b6004811215612487575b121561247d575b607f8290031b91907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160401b6780000000000000005b5f811361245d57506124589250600f0b6fb17217f7d1cf79abc9e3b39803f2f6af0260801d90612a94565b61237d565b91928002908160ff1c9182607f011c918302019160011d9291909261242d565b90600101906123f6565b92810192811d6123ef565b6004938401931d6123e5565b6008938401931d6123db565b6010938401931d6123d0565b6020938401931d6123c4565b506040915080821d6123b3565b506f7fffffffffffffffffffffffffffffff82131561235c565b91928002908160ff1c9182607f011c918302019160011d929190926122bd565b9060010190612286565b92810192811d61227f565b6004938401931d612275565b6008938401931d61226b565b6010938401931d612260565b6020938401931d612254565b506040915080821d612243565b506f7fffffffffffffffffffffffffffffff81131561221e565b506f7fffffffffffffffffffffffffffffff8113156121d4565b8002908160ff1c9182607f011c918302019160011d9190612136565b90600101906120ff565b92810192811d6120f8565b6004938401931d6120ee565b6008938401931d6120e4565b6010938401931d6120d9565b6020938401931d6120cd565b506040915080821d6120bc565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4c4d53523a206c696d69745072696365203c3d2063757272656e74207072696360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152fd5b506f7fffffffffffffffffffffffffffffff861315612044565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4c4d53523a206c696d69745072696365203c3d203000000000000000000000006044820152fd5b6127618282612b1a565b9180156105425777ffffffffffffffffffffffffffffffffffffffffffffffff83116127f257612794908360401b611b30565b6fffffffffffffffffffffffffffffffff8111610542576fffffffffffffffffffffffffffffffff16906f7fffffffffffffffffffffffffffffff821161054257600f0b90600f0b126127e45790565b60018101809111611a7e5790565b60c083811c8091640100000000821015612994575b60028262010000612894941015612988575b61010081101561297c575b6010811015612970575b6004811015612965575b101561295d575b8560017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b611b30565b916fffffffffffffffffffffffffffffffff8311610542578060801c83026fffffffffffffffffffffffffffffffff82168402838760401b90828210612933575b5003928160801b9182851061290a575b60801c036128ff576128f79203611b30565b905b01612794565b5050506001906128f9565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906128e5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f6128d5565b60010161283f565b91810191811c612838565b6004928301921c61282e565b6008928301921c612824565b6010928301921c612819565b505060e084811c90612807565b9080156129d4576129b191611b1d565b620f4240810190818111611a7e57620f423f01908111611a7e57620f4240900490565b50505f90565b919080156129f9576129ef6129f691846129a1565b8093611a71565b90565b505f9190565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612a3d575b1561054257600f0b90565b506f7fffffffffffffffffffffffffffffff811315612a32565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612a3d571561054257600f0b90565b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612a3d571561054257600f0b90565b90600f0b9081156105425760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612a3d571561054257600f0b90565b81156129d457600f0b5f8112610542576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116105425760401b81198111610542570190565b600f0b68400000000000000000811215610542577fffffffffffffffffffffffffffffffffffffffffffffffc000000000000000008112612bd257700171547652b82fe1777d0ffda0d23a7d126129f6910260801d600f0b612bd7565b505f90565b80600f0b68400000000000000000811215610542577fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000081126129d4576f80000000000000000000000000000000915f6780000000000000008216600f0b136137d3575b5f6740000000000000008216600f0b136137b6575b5f6720000000000000008216600f0b13613799575b5f6710000000000000008216600f0b1361377c575b5f6708000000000000008216600f0b1361375f575b5f6704000000000000008216600f0b13613742575b5f6702000000000000008216600f0b13613725575b5f6701000000000000008216600f0b13613708575b5f66800000000000008216600f0b136136eb575b5f66400000000000008216600f0b136136ce575b5f66200000000000008216600f0b136136b1575b5f66100000000000008216600f0b13613694575b5f66080000000000008216600f0b13613677575b5f66040000000000008216600f0b1361365a575b5f66020000000000008216600f0b1361363d575b5f66010000000000008216600f0b13613620575b5f658000000000008216600f0b13613603575b5f654000000000008216600f0b136135e6575b5f652000000000008216600f0b136135c9575b5f651000000000008216600f0b136135ac575b5f650800000000008216600f0b1361358f575b5f650400000000008216600f0b13613572575b5f650200000000008216600f0b13613555575b5f650100000000008216600f0b13613538575b5f6480000000008216600f0b1361351b575b5f6440000000008216600f0b136134fe575b5f6420000000008216600f0b136134e1575b5f6410000000008216600f0b136134c4575b5f6408000000008216600f0b136134a7575b5f6404000000008216600f0b1361348a575b5f6402000000008216600f0b1361346d575b5f6401000000008216600f0b13613450575b5f63800000008216600f0b13613433575b5f63400000008216600f0b13613416575b5f63200000008216600f0b136133f9575b5f63100000008216600f0b136133dc575b5f63080000008216600f0b136133bf575b5f63040000008216600f0b136133a2575b5f63020000008216600f0b13613385575b5f63010000008216600f0b13613368575b5f628000008216600f0b1361334b575b5f624000008216600f0b1361332e575b5f622000008216600f0b13613311575b5f621000008216600f0b136132f4575b5f620800008216600f0b136132d7575b5f620400008216600f0b136132ba575b5f620200008216600f0b1361329d575b5f620100008216600f0b13613280575b5f6180008216600f0b13613263575b5f6140008216600f0b13613246575b5f6120008216600f0b13613229575b5f6110008216600f0b1361320c575b5f6108008216600f0b136131ef575b5f6104008216600f0b136131d2575b5f6102008216600f0b136131b5575b5f6101008216600f0b13613198575b5f60808216600f0b1361317b575b5f60408216600f0b1361315e575b5f60208216600f0b13613141575b5f60108216600f0b13613124575b5f60088216600f0b13613107575b5f60048216600f0b136130ea575b5f60028216600f0b136130cc575b60015f9116600f0b136130af575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161054257600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c90613085565b7001000000000000000162e42fefa39ef35890920260801c91613077565b9170010000000000000002c5c85fdf473de6b20260801c91613069565b91700100000000000000058b90bfbe8e7bcd6d0260801c9161305b565b917001000000000000000b17217f7d1cf79afa0260801c9161304d565b91700100000000000000162e42fefa39ef366f0260801c9161303f565b917001000000000000002c5c85fdf473de6eca0260801c91613031565b9170010000000000000058b90bfbe8e7bce5440260801c91613023565b91700100000000000000b17217f7d1cf79e9490260801c91613015565b9170010000000000000162e42fefa39ef44d910260801c91613006565b91700100000000000002c5c85fdf473dea871f0260801c91612ff7565b917001000000000000058b90bfbe8e7bdcbe2e0260801c91612fe8565b9170010000000000000b17217f7d1cf7d83c1a0260801c91612fd9565b917001000000000000162e42fefa39f02b772c0260801c91612fca565b9170010000000000002c5c85fdf473e242ea380260801c91612fbb565b91700100000000000058b90bfbe8e7cc35c3f00260801c91612fac565b917001000000000000b17217f7d1cfb72b45e10260801c91612f9d565b91700100000000000162e42fefa39fe95583c20260801c91612f8d565b917001000000000002c5c85fdf4741bea6e77e0260801c91612f7d565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c91612f6d565b91700100000000000b17217f7d1d351a389d400260801c91612f5d565b9170010000000000162e42fefa3ae53369388c0260801c91612f4d565b91700100000000002c5c85fdf477b662b269450260801c91612f3d565b917001000000000058b90bfbe8f71cb4e4b33d0260801c91612f2d565b9170010000000000b17217f7d20cf927c8e94c0260801c91612f1d565b917001000000000162e42fefa494f1478fde050260801c91612f0c565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c91612efb565b91700100000000058b90bfbe9ddbac5e109cce0260801c91612eea565b917001000000000b17217f7d5a7716bba4a9ae0260801c91612ed9565b91700100000000162e42fefb2fed257559bdaa0260801c91612ec8565b917001000000002c5c85fdf84bd62ae30a74cc0260801c91612eb7565b9170010000000058b90bfbf8479bd5a81b51ad0260801c91612ea6565b91700100000000b17217f80f4ef5aadda455540260801c91612e95565b9170010000000162e42ff0999ce3541b9fffcf0260801c91612e83565b91700100000002c5c85fe31f35a6a30da1be500260801c91612e71565b917001000000058b90bfcdee5acd3c1cedc8230260801c91612e5f565b9170010000000b17217fba9c739aa5819f44f90260801c91612e4d565b917001000000162e42fff037df38aa2b219f060260801c91612e3b565b9170010000002c5c8601cc6b9e94213c72737a0260801c91612e29565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91612e17565b917001000000b1721835514b86e6d96efd1bfe0260801c91612e05565b91700100000162e430e5a18f6119e3c02282a50260801c91612df2565b917001000002c5c863b73f016468f6bac5ca2b0260801c91612ddf565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91612dcc565b91700100000b1721bcfc99d9f890ea069117630260801c91612db9565b9170010000162e43f4f831060e02d839a9d16d0260801c91612da6565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c91612d93565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c91612d80565b9170010000b17255775c040618bf4a4ade83fc0260801c91612d6d565b917001000162e525ee054754457d59952920260260801c91612d59565b9170010002c5cc37da9491d0985c348c68e7b30260801c91612d45565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91612d31565b917001000b175effdc76ba38e31671ca9397250260801c91612d1d565b91700100162f3904051fa128bca9c55c31e5df0260801c91612d09565b917001002c605e2e8cec506d21bfc89a23a00f0260801c91612cf5565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c91612ce1565b91700100b1afa5abcbed6129ab13ec11dc95430260801c91612ccd565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c91612cb8565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c91612ca3565b917001059b0d31585743ae7c548eb68ca417fd0260801c91612c8e565b9170010b5586cf9890f6298b92b71842a983630260801c91612c79565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c91612c64565b917001306fe0a31b7152de8d5a46305c85edec0260801c91612c4f565b6fb504f333f9de6484597d89b3754abe9f9250612c3a56fea2646970667358221220e1cf16dbf2fb3dde0a41d9bda8bbba591e29d69326ff632243d789c4d486fbe164736f6c634300081e0033","sourceMap":"948:8998:54:-:0;;;;;;;;;;;;;-1:-1:-1;;948:8998:54;;;;-1:-1:-1;;;;;948:8998:54;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;948:8998:54;;;;;;2365:1:29;1505:66;2365:1;1149:24:50;;948:8998:54;;;;;;;;1149:24:50;948:8998:54;;;;;;;;;;;;;;;;;-1:-1:-1;948:8998:54;;;;;;-1:-1:-1;948:8998:54;;;;;-1:-1:-1;948:8998:54","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f5f3560e01c80632a54db01146116555780638a3d858d146109d8578063bf05a0a6146107db5763e49cd47514610046575f80fd5b346107d85760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107d85760043573ffffffffffffffffffffffffffffffffffffffff811681036107d65761009d61192b565b60443567ffffffffffffffff606435116107d2573660236064350112156107d25767ffffffffffffffff60643560040135116107d257366024606435600401356064350101116107d25760a435916100f3611caa565b61010260ff6008541615611aab565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff86165afa9081156107c7578691610795575b5082116107375773ffffffffffffffffffffffffffffffffffffffff81168552600e602052604085205480156106d957807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101116106ac576101c0608435846129da565b50908694801515806106a3575b61060d575b5061020a8473ffffffffffffffffffffffffffffffffffffffff881673ffffffffffffffffffffffffffffffffffffffff8616611d21565b6040517f23e30c8b00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015284604482015282606482015260a060848201526064356004013560a48201526064356004013560246064350160c48301378760c4606435600401358301015260208160c4817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60643560040135011681010301818b73ffffffffffffffffffffffffffffffffffffffff8c165af1801561054e5788906105b7575b7f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd9915003610559576103576103248386611b10565b73ffffffffffffffffffffffffffffffffffffffff851673ffffffffffffffffffffffffffffffffffffffff8916611de2565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff88165afa90811561054e57869798969596916104ef575b507f249e0bf62ff982342c6a63926041694a221796af4b9ebacefc45823da42348139473ffffffffffffffffffffffffffffffffffffffff94936104938461045d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6104566104989761043e61042f846104bd9c016119e4565b90549060031b1c821015611b67565b6104498386016119e4565b90549060031b1c90611a71565b9201611a41565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b611a71565b9583604051948594169816963396846040919493926060820195825260208201520152565b0390a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055602060405160018152f35b94505091906020843d602011610546575b8161050d6020938361195e565b8101031261054257925185939192907f249e0bf62ff982342c6a63926041694a221796af4b9ebacefc45823da42348136103b5565b5f80fd5b3d9150610500565b6040513d8a823e3d90fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f666c6173683a2063616c6c6261636b00000000000000000000000000000000006044820152fd5b506020813d602011610605575b816105d16020938361195e565b81010312610601577f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd990516102ef565b8780fd5b3d91506105c4565b620f424091955061061e9083611b1d565b04938461062c575b5f6101d2565b61069e61065a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83016119e4565b61066a8883548360031b1c611b10565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b610626565b508215156101cd565b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f666c6173683a20746f6b656e206e6f7420696e20706f6f6c00000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f666c6173683a20616d6f756e74203e2062616c616e63650000000000000000006044820152fd5b90506020813d6020116107bf575b816107b06020938361195e565b8101031261054257515f61015b565b3d91506107a3565b6040513d88823e3d90fd5b8380fd5b505b80fd5b50346107d85760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107d8576004356024356044359182600f0b83036107d2576064359067ffffffffffffffff82116109d457366023830112156109d45781600401359161084c836119cc565b9261085a604051948561195e565b8084526024602085019160051b8301019136831161060157602401905b8282106109c45750505061088961194e565b9360a43567ffffffffffffffff81116109c057366023820112156109c05780600401356108b5816119cc565b916108c3604051938461195e565b8183526024602084019260051b820101903682116109bc57602401915b81831061099e575050509161090361091392868361090c98979660c4359a611f9d565b95909184611bcc565b5190612757565b9461091f861515611be0565b9480948061096f575b50509161093b6109429261096b94611bcc565b5190612b1a565b9261094e841515611c45565b604051938493846040919493926060820195825260208201520152565b0390f35b81965061096b949295509261099461098d6109429561093b946129a1565b8098611b10565b9592945092610928565b823580600f0b81036109b8578152602092830192016108e0565b8a80fd5b8980fd5b8680fd5b8135815260209182019101610877565b8480fd5b506101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261054257610a0c611908565b90610a1561192b565b610a1d61194e565b9160c43560a43581151582036105425760e43590610a4060ff6008541615611aab565b610a48611caa565b600b5480604435109081611649575b50156115eb575f86600f0b131561158d578015908115611582575b501561152457602495602073ffffffffffffffffffffffffffffffffffffffff610a9d604435611a29565b90549060031b1c16604051988980927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa958615611294575f966114ef575b60249750602073ffffffffffffffffffffffffffffffffffffffff610b0b606435611a29565b90549060031b1c16604051998a80927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa978815611294575f986114bb575b50600954604051600a80548083525f918252602083019493600f0b91907fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a85b8160018401106114905795610bbf928592610bcc98549181811061147c575b1061146b575b50038361195e565b6064359160443591611f9d565b610bea610bdd604499939935611a59565b90549060031b1c89612757565b97610bf6891515611be0565b5f9789958061144a575b50610c1c610c0f606435611a59565b90549060031b1c84612b1a565b9a610c288c1515611c45565b73ffffffffffffffffffffffffffffffffffffffff610c48604435611a29565b90549060031b1c1696610c5c818989611de2565b604051957f70a082310000000000000000000000000000000000000000000000000000000087523060048801526020876024818c5afa968715611294575f97611412575b5090610cab91611b10565b850361138e5773ffffffffffffffffffffffffffffffffffffffff610cd1606435611a29565b90549060031b1c16978061134f575b1561129f5773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b15610542575f809160248f60405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af1908115611294578d9161127f575b508980808093865af13d1561127a573d67ffffffffffffffff811161124d5760405190610dbe60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116018361195e565b81528a60203d92013e5b156111ef575b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526020816024818c5afa9081156111e4578d908b926111ae575b50610e1e9192611a71565b810361112a5788948a61010435151580611121575b6110c8575b50610e8f91610e6b610e60610e8493610e5561042f6044356119e4565b6104496044356119e4565b61045d604435611a41565b610e7961042f6064356119e4565b6104496064356119e4565b61045d606435611a41565b8782600f0b131561106a578783600f0b131561100c577f6950339c7661cca450281e53722525cc136590e622b011d5be7e4c4993685a6c93610f5e610f5360a095610f39610f0673ffffffffffffffffffffffffffffffffffffffff97610ef7604435611f5d565b90549060031b1c600f0b6129ff565b610f11604435611f5d565b9091906fffffffffffffffffffffffffffffffff83549160031b928116831b921b1916179055565b610f44606435611f5d565b90549060031b1c600f0b612a57565b610f11606435611f5d565b610f68818b611a71565b83604051971687528b60208801528c6040880152606087015260808601521692a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00554780158015610fdb575b50505061096b90604051938493846040919493926060820195825260208201520152565b8280809381938290611003575b3390f115610ff7578080610fb7565b604051903d90823e3d90fd5b506108fc610fe8565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c4d53523a20616d6f756e744f7574203c3d20300000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c4d53523a20616d6f756e74496e203c3d2030000000000000000000000000006044820152fd5b610e8491965091610e6b610e60620f42406110ea610e8f966101043590611b1d565b0498896110fe575b9350505091508a610e38565b61111c61110c6044356119e4565b61066a8d83548360031b1c611b10565b6110f2565b50801515610e33565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f73776170546f4c696d69743a206e6f6e2d7374616e6461726420746f6b656e4f60448201527f75740000000000000000000000000000000000000000000000000000000000006064820152fd5b9150506020813d6020116111dc575b816111ca6020938361195e565b8101031261054257518c610e1e610e13565b3d91506111bd565b6040513d8c823e3d90fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7265636569766572206e6f742070617961626c650000000000000000000000006044820152fd5b60248b7f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b610dc8565b61128c919a505f9061195e565b5f985f610d69565b6040513d5f823e3d90fd5b6040517fa9059cbb000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff83166004528c60245260205f604481808d5af19060015f511482161561132e575b604052610dce57877f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b90600181151661134657893b15153d151616906112fb565b503d5f823e3d90fd5b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168814610ce0565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f73776170546f4c696d69743a206e6f6e2d7374616e6461726420746f6b656e4960448201527f6e000000000000000000000000000000000000000000000000000000000000006064820152fd5b919096506020823d602011611442575b8161142f6020938361195e565b8101031261054257905195610cab610ca0565b3d9150611422565b909550611459919850896129a1565b96611464888a611b10565b945f610c00565b60801d600f0b81526020015f610bb7565b92602060019184600f0b8152019301610bb1565b8054600f81810b895260809190911d900b602088015260409096019560029290920191600101610b92565b9097506020813d6020116114e7575b816114d76020938361195e565b810103126105425751965f610b53565b3d91506114ca565b95506020873d60201161151c575b8161150a6020938361195e565b81010312610542576024965195610ae5565b3d91506114fd565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f73776170546f4c696d69743a20646561646c696e6520657863656564656400006044820152fd5b90504211155f610a72565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f73776170546f4c696d69743a206c696d6974203c3d20300000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f73776170546f4c696d69743a20696478000000000000000000000000000000006044820152fd5b9050606435105f610a57565b346105425760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105425761168c611908565b611694611caa565b73ffffffffffffffffffffffffffffffffffffffff8116156118aa57600b545f5b818110611706577fd508feb4afc81230b8e5dcca865a405a72db1f928a5064f893ab22ab56ec25215f80a160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055005b61170f816119e4565b90549060031b1c9081156118a1576024602073ffffffffffffffffffffffffffffffffffffffff61173f84611a29565b90549060031b1c16604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa908115611294575f91611870575b5082811061181257826117e06117d760019561180c946117a6876119e4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82549160031b1b19169055611a71565b61045d85611a41565b8573ffffffffffffffffffffffffffffffffffffffff6117ff85611a29565b90549060031b1c16611d21565b016116b5565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f636f6c6c6563743a20666565203e2062616c00000000000000000000000000006044820152fd5b90506020813d8211611899575b8161188a6020938361195e565b81010312610542575185611787565b3d915061187d565b6001915061180c565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f636f6c6c6563743a207a65726f206164647200000000000000000000000000006044820152fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361054257565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361054257565b6084359081600f0b820361054257565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761199f57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b67ffffffffffffffff811161199f5760051b60200190565b600c548110156119fc57600c5f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b600b548110156119fc57600b5f5260205f2001905f90565b600f548110156119fc57600f5f5260205f2001905f90565b600d548110156119fc57600d5f5260205f2001905f90565b91908203918211611a7e57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b15611ab257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6b696c6c656400000000000000000000000000000000000000000000000000006044820152fd5b91908201809211611a7e57565b81810292918115918404141715611a7e57565b8115611b3a570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b15611b6e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f62616c616e6365203c2070726f746f636f6c206f7765640000000000000000006044820152fd5b80518210156119fc5760209160051b010190565b15611be757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f73776170546f4c696d69743a20696e707574207a65726f0000000000000000006044820152fd5b15611c4c57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f73776170546f4c696d69743a206f7574707574207a65726f00000000000000006044820152fd5b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005414611cf95760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b9173ffffffffffffffffffffffffffffffffffffffff604051927fa9059cbb000000000000000000000000000000000000000000000000000000005f521660045260245260205f60448180865af19060015f5114821615611dca575b60405215611d885750565b73ffffffffffffffffffffffffffffffffffffffff907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b90600181151661134657823b15153d15161690611d7d565b9073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169173ffffffffffffffffffffffffffffffffffffffff82169183831480611f53575b15611e9457505050803b15610542575f906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af1801561129457611e885750565b5f611e929161195e565b565b919390925073ffffffffffffffffffffffffffffffffffffffff604051937f23b872dd000000000000000000000000000000000000000000000000000000005f52166004523060245260445260205f60648180855af19060015f5114821615611f34575b50906040525f60605215611f095750565b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6001821516611f4a573b15153d1516165f611ef8565b823d5f823e3d90fd5b5084341015611e3c565b90600a548210156119fc57600a5f52600182901c7fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8019160041b60101690565b93929491909483600f0b905f8213156126f9575f94855b8851871015611fdf57611fd7600191611fcd898c611bcc565b51600f0b906129ff565b960195611fb4565b90929496919395505f81600f0b131561269b57611ffb91612a94565b9081600f0b80156105425770010000000000000000000000000000000005947fffffffffffffffffffffffffffffffff8000000000000000000000000000000086121580612681575b15610542576120806120859161207b61206398600f0b9889928c611bcc565b51600f0b612071888d611bcc565b51600f0b90612a57565b612a94565b612b75565b9081600f0b948512156125fd578161209c91612ad4565b600f0b5f811315610542575f9080680100000000000000008212156125f0575b8064010000000060029212156125e4575b620100008112156125d8575b6101008112156125cc575b60108112156125c0575b60048112156125b5575b12156125ab575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b91607f031b90678000000000000000915b5f831361258f57506fb17217f7d1cf79abc9e3b39803f2f6af9150600f0b0260801d926121638484612a94565b937fffffffffffffffffffffffffffffffff8000000000000000000000000000000081600f0b146105425761219c905f03600f0b612b75565b600f0b68010000000000000000037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612575575b15610542576121e690600f0b83612a94565b600f0b68010000000000000000017fffffffffffffffffffffffffffffffff800000000000000000000000000000008112158061255b575b1561054257600f0b5f811315610542575f90806801000000000000000082121561254e575b806401000000006002921215612542575b62010000811215612536575b61010081121561252a575b601081121561251e575b6004811215612513575b1215612509575b607f8290031b91907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160401b6780000000000000005b5f81136124e957506122f292506fb17217f7d1cf79abc9e3b39803f2f6af6122ec91600f0b0260801d85612a94565b98611bcc565b51600f0b9383958589600f0b1361230e575b5050505050509190565b85985068010000000000000000929496506120809061232f92949699612a94565b9101907fffffffffffffffffffffffffffffffff80000000000000000000000000000000821215806124cf575b156105425761236d91600f0b612a57565b905f600f83900b13612388575050505b5f8080808080612304565b612393929350612ad4565b600f0b5f811315610542575f9080680100000000000000008212156124c2575b8064010000000060029212156124b6575b620100008112156124aa575b61010081121561249e575b6010811215612492575b6004811215612487575b121561247d575b607f8290031b91907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00160401b6780000000000000005b5f811361245d57506124589250600f0b6fb17217f7d1cf79abc9e3b39803f2f6af0260801d90612a94565b61237d565b91928002908160ff1c9182607f011c918302019160011d9291909261242d565b90600101906123f6565b92810192811d6123ef565b6004938401931d6123e5565b6008938401931d6123db565b6010938401931d6123d0565b6020938401931d6123c4565b506040915080821d6123b3565b506f7fffffffffffffffffffffffffffffff82131561235c565b91928002908160ff1c9182607f011c918302019160011d929190926122bd565b9060010190612286565b92810192811d61227f565b6004938401931d612275565b6008938401931d61226b565b6010938401931d612260565b6020938401931d612254565b506040915080821d612243565b506f7fffffffffffffffffffffffffffffff81131561221e565b506f7fffffffffffffffffffffffffffffff8113156121d4565b8002908160ff1c9182607f011c918302019160011d9190612136565b90600101906120ff565b92810192811d6120f8565b6004938401931d6120ee565b6008938401931d6120e4565b6010938401931d6120d9565b6020938401931d6120cd565b506040915080821d6120bc565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4c4d53523a206c696d69745072696365203c3d2063757272656e74207072696360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152fd5b506f7fffffffffffffffffffffffffffffff861315612044565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c4d53523a2073697a65206d6574726963207a65726f000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4c4d53523a206c696d69745072696365203c3d203000000000000000000000006044820152fd5b6127618282612b1a565b9180156105425777ffffffffffffffffffffffffffffffffffffffffffffffff83116127f257612794908360401b611b30565b6fffffffffffffffffffffffffffffffff8111610542576fffffffffffffffffffffffffffffffff16906f7fffffffffffffffffffffffffffffff821161054257600f0b90600f0b126127e45790565b60018101809111611a7e5790565b60c083811c8091640100000000821015612994575b60028262010000612894941015612988575b61010081101561297c575b6010811015612970575b6004811015612965575b101561295d575b8560017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4184011c019160ff031b611b30565b916fffffffffffffffffffffffffffffffff8311610542578060801c83026fffffffffffffffffffffffffffffffff82168402838760401b90828210612933575b5003928160801b9182851061290a575b60801c036128ff576128f79203611b30565b905b01612794565b5050506001906128f9565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906128e5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0194505f6128d5565b60010161283f565b91810191811c612838565b6004928301921c61282e565b6008928301921c612824565b6010928301921c612819565b505060e084811c90612807565b9080156129d4576129b191611b1d565b620f4240810190818111611a7e57620f423f01908111611a7e57620f4240900490565b50505f90565b919080156129f9576129ef6129f691846129a1565b8093611a71565b90565b505f9190565b90600f0b90600f0b017fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612a3d575b1561054257600f0b90565b506f7fffffffffffffffffffffffffffffff811315612a32565b90600f0b90600f0b037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612a3d571561054257600f0b90565b90600f0b90600f0b0260401d7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612a3d571561054257600f0b90565b90600f0b9081156105425760401b60170b057fffffffffffffffffffffffffffffffff8000000000000000000000000000000081121580612a3d571561054257600f0b90565b81156129d457600f0b5f8112610542576fffffffffffffffffffffffffffffffff8216810260401c9160801c0277ffffffffffffffffffffffffffffffffffffffffffffffff81116105425760401b81198111610542570190565b600f0b68400000000000000000811215610542577fffffffffffffffffffffffffffffffffffffffffffffffc000000000000000008112612bd257700171547652b82fe1777d0ffda0d23a7d126129f6910260801d600f0b612bd7565b505f90565b80600f0b68400000000000000000811215610542577fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000081126129d4576f80000000000000000000000000000000915f6780000000000000008216600f0b136137d3575b5f6740000000000000008216600f0b136137b6575b5f6720000000000000008216600f0b13613799575b5f6710000000000000008216600f0b1361377c575b5f6708000000000000008216600f0b1361375f575b5f6704000000000000008216600f0b13613742575b5f6702000000000000008216600f0b13613725575b5f6701000000000000008216600f0b13613708575b5f66800000000000008216600f0b136136eb575b5f66400000000000008216600f0b136136ce575b5f66200000000000008216600f0b136136b1575b5f66100000000000008216600f0b13613694575b5f66080000000000008216600f0b13613677575b5f66040000000000008216600f0b1361365a575b5f66020000000000008216600f0b1361363d575b5f66010000000000008216600f0b13613620575b5f658000000000008216600f0b13613603575b5f654000000000008216600f0b136135e6575b5f652000000000008216600f0b136135c9575b5f651000000000008216600f0b136135ac575b5f650800000000008216600f0b1361358f575b5f650400000000008216600f0b13613572575b5f650200000000008216600f0b13613555575b5f650100000000008216600f0b13613538575b5f6480000000008216600f0b1361351b575b5f6440000000008216600f0b136134fe575b5f6420000000008216600f0b136134e1575b5f6410000000008216600f0b136134c4575b5f6408000000008216600f0b136134a7575b5f6404000000008216600f0b1361348a575b5f6402000000008216600f0b1361346d575b5f6401000000008216600f0b13613450575b5f63800000008216600f0b13613433575b5f63400000008216600f0b13613416575b5f63200000008216600f0b136133f9575b5f63100000008216600f0b136133dc575b5f63080000008216600f0b136133bf575b5f63040000008216600f0b136133a2575b5f63020000008216600f0b13613385575b5f63010000008216600f0b13613368575b5f628000008216600f0b1361334b575b5f624000008216600f0b1361332e575b5f622000008216600f0b13613311575b5f621000008216600f0b136132f4575b5f620800008216600f0b136132d7575b5f620400008216600f0b136132ba575b5f620200008216600f0b1361329d575b5f620100008216600f0b13613280575b5f6180008216600f0b13613263575b5f6140008216600f0b13613246575b5f6120008216600f0b13613229575b5f6110008216600f0b1361320c575b5f6108008216600f0b136131ef575b5f6104008216600f0b136131d2575b5f6102008216600f0b136131b5575b5f6101008216600f0b13613198575b5f60808216600f0b1361317b575b5f60408216600f0b1361315e575b5f60208216600f0b13613141575b5f60108216600f0b13613124575b5f60088216600f0b13613107575b5f60048216600f0b136130ea575b5f60028216600f0b136130cc575b60015f9116600f0b136130af575b60401d600f0b603f03600f0b1c6f7fffffffffffffffffffffffffffffff811161054257600f0b90565b9070010000000000000000b17217f7d1cf79ab0260801c90613085565b7001000000000000000162e42fefa39ef35890920260801c91613077565b9170010000000000000002c5c85fdf473de6b20260801c91613069565b91700100000000000000058b90bfbe8e7bcd6d0260801c9161305b565b917001000000000000000b17217f7d1cf79afa0260801c9161304d565b91700100000000000000162e42fefa39ef366f0260801c9161303f565b917001000000000000002c5c85fdf473de6eca0260801c91613031565b9170010000000000000058b90bfbe8e7bce5440260801c91613023565b91700100000000000000b17217f7d1cf79e9490260801c91613015565b9170010000000000000162e42fefa39ef44d910260801c91613006565b91700100000000000002c5c85fdf473dea871f0260801c91612ff7565b917001000000000000058b90bfbe8e7bdcbe2e0260801c91612fe8565b9170010000000000000b17217f7d1cf7d83c1a0260801c91612fd9565b917001000000000000162e42fefa39f02b772c0260801c91612fca565b9170010000000000002c5c85fdf473e242ea380260801c91612fbb565b91700100000000000058b90bfbe8e7cc35c3f00260801c91612fac565b917001000000000000b17217f7d1cfb72b45e10260801c91612f9d565b91700100000000000162e42fefa39fe95583c20260801c91612f8d565b917001000000000002c5c85fdf4741bea6e77e0260801c91612f7d565b9170010000000000058b90bfbe8e8b2d3d4ede0260801c91612f6d565b91700100000000000b17217f7d1d351a389d400260801c91612f5d565b9170010000000000162e42fefa3ae53369388c0260801c91612f4d565b91700100000000002c5c85fdf477b662b269450260801c91612f3d565b917001000000000058b90bfbe8f71cb4e4b33d0260801c91612f2d565b9170010000000000b17217f7d20cf927c8e94c0260801c91612f1d565b917001000000000162e42fefa494f1478fde050260801c91612f0c565b9170010000000002c5c85fdf4b15de6f17eb0d0260801c91612efb565b91700100000000058b90bfbe9ddbac5e109cce0260801c91612eea565b917001000000000b17217f7d5a7716bba4a9ae0260801c91612ed9565b91700100000000162e42fefb2fed257559bdaa0260801c91612ec8565b917001000000002c5c85fdf84bd62ae30a74cc0260801c91612eb7565b9170010000000058b90bfbf8479bd5a81b51ad0260801c91612ea6565b91700100000000b17217f80f4ef5aadda455540260801c91612e95565b9170010000000162e42ff0999ce3541b9fffcf0260801c91612e83565b91700100000002c5c85fe31f35a6a30da1be500260801c91612e71565b917001000000058b90bfcdee5acd3c1cedc8230260801c91612e5f565b9170010000000b17217fba9c739aa5819f44f90260801c91612e4d565b917001000000162e42fff037df38aa2b219f060260801c91612e3b565b9170010000002c5c8601cc6b9e94213c72737a0260801c91612e29565b91700100000058b90c0b48c6be5df846c5b2ef0260801c91612e17565b917001000000b1721835514b86e6d96efd1bfe0260801c91612e05565b91700100000162e430e5a18f6119e3c02282a50260801c91612df2565b917001000002c5c863b73f016468f6bac5ca2b0260801c91612ddf565b9170010000058b90cf1e6d97f9ca14dbcc16280260801c91612dcc565b91700100000b1721bcfc99d9f890ea069117630260801c91612db9565b9170010000162e43f4f831060e02d839a9d16d0260801c91612da6565b91700100002c5c89d5ec6ca4d7c8acc017b7c90260801c91612d93565b917001000058b91b5bc9ae2eed81e9b7d4cfab0260801c91612d80565b9170010000b17255775c040618bf4a4ade83fc0260801c91612d6d565b917001000162e525ee054754457d59952920260260801c91612d59565b9170010002c5cc37da9491d0985c348c68e7b30260801c91612d45565b91700100058ba01fb9f96d6cacd4b180917c3d0260801c91612d31565b917001000b175effdc76ba38e31671ca9397250260801c91612d1d565b91700100162f3904051fa128bca9c55c31e5df0260801c91612d09565b917001002c605e2e8cec506d21bfc89a23a00f0260801c91612cf5565b9170010058c86da1c09ea1ff19d294cf2f679b0260801c91612ce1565b91700100b1afa5abcbed6129ab13ec11dc95430260801c91612ccd565b9170010163da9fb33356d84a66ae336dcdfa3f0260801c91612cb8565b91700102c9a3e778060ee6f7caca4f7a29bde80260801c91612ca3565b917001059b0d31585743ae7c548eb68ca417fd0260801c91612c8e565b9170010b5586cf9890f6298b92b71842a983630260801c91612c79565b917001172b83c7d517adcdf7c8c50eb14a791f0260801c91612c64565b917001306fe0a31b7152de8d5a46305c85edec0260801c91612c4f565b6fb504f333f9de6484597d89b3754abe9f9250612c3a56fea2646970667358221220e1cf16dbf2fb3dde0a41d9bda8bbba591e29d69326ff632243d789c4d486fbe164736f6c634300081e0033","sourceMap":"948:8998:54:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2989:103:29;;;:::i;:::-;3684:27:50;948:8998:54;3693:7:50;948:8998:54;;3692:8:50;3684:27;:::i;:::-;948:8998:54;;;1611:30;;1635:4;948:8998;1611:30;;948:8998;;;;;;;;1611:30;;;;;;;;;;;948:8998;1601:40;;;948:8998;;;;;;;1700:27;948:8998;;;;;;1752:15;;948:8998;;;;;;;;;1854:32;948:8998;;1854:32;;:::i;:::-;1944:22;;;1980:18;;;;:34;;;948:8998;1976:235;;948:8998;;2268:5;948:8998;;;;;;;2268:5;:::i;:::-;948:8998;;;2305:72;;2326:10;948:8998;2305:72;;948:8998;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2305:72;;948:8998;;;;;2305:72;;;;;;;;;;948:8998;1237:45;2305:98;;;1237:45;;2498:17;;;;;:::i;:::-;948:8998;;;;;;2498:17;:::i;:::-;948:8998;;;2602:30;;1635:4;948:8998;2602:30;;948:8998;;;;;;;;2602:30;;;;;;;;;;;;;;;;948:8998;;2819:88;948:8998;;;;2729:74;948:8998;2729:31;948:8998;2763:40;2873:21;948:8998;2642:77;2662:29;948:8998;2819:88;948:8998;;2662:29;:::i;:::-;948:8998;;;;;;2650:41;;;2642:77;:::i;:::-;2774:29;948:8998;;;2774:29;:::i;:::-;948:8998;;;;;;2763:40;;:::i;:::-;948:8998;;2729:31;:::i;:::-;:74;948:8998;;;;;;;;;;;;;;;;;;;2729:74;2873:21;:::i;:::-;948:8998;;;;;;;;;;2326:10;;2819:88;;948:8998;;;;;;;;;;;;;;;;;;2819:88;;;;948:8998;1505:66:29;2407:1;948:8998:54;;;;;;;2602:30;;;;;;948:8998;2602:30;;948:8998;2602:30;;;;;;948:8998;2602:30;;;:::i;:::-;;;948:8998;;;;;;;;2602:30;;948:8998;2819:88;2602:30;;948:8998;-1:-1:-1;948:8998:54;;2602:30;;;-1:-1:-1;2602:30:54;;;948:8998;;;;;;;;;1237:45;948:8998;;;1237:45;;;948:8998;;1237:45;;;;948:8998;1237:45;;948:8998;1237:45;948:8998;;;1237:45;;2305:72;;948:8998;2305:72;;948:8998;2305:72;;;;;;948:8998;2305:72;;;:::i;:::-;;;948:8998;;;;1237:45;948:8998;;2305:72;;948:8998;;;;2305:72;;;-1:-1:-1;2305:72:54;;1976:235;2073:9;2044:25;;;;;;;:::i;:::-;948:8998;2109:14;;2105:96;;1976:235;;;;2105:96;2143:43;:29;948:8998;;;2143:29;:::i;:::-;:43;948:8998;;;;;;;2143:43;:::i;:::-;948:8998;;;;;;;;;;;;;;;;;;2143:43;2105:96;;1980:34;2002:12;;;;1980:34;;948:8998;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1611:30;;;948:8998;1611:30;;948:8998;1611:30;;;;;;948:8998;1611:30;;;:::i;:::-;;;948:8998;;;;;1611:30;;;;;;-1:-1:-1;1611:30:54;;;948:8998;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3379:129;3614:61;948:8998;;;3652:22;948:8998;;;;;;3379:129;:::i;:::-;3652:22;;;;;:::i;:::-;948:8998;3614:61;;:::i;:::-;3693:21;3685:57;3693:21;;;3685:57;:::i;:::-;3772:28;;3814:14;;3810:123;;948:8998;3995:23;;;;5747:40:50;3995:23:54;948:8998;3995:23;;:::i;:::-;948:8998;5747:40:50;;:::i;:::-;4037:13:54;4029:50;4037:13;;;4029:50;:::i;:::-;948:8998;;;;;;;;;;;;;;;;;;;;;;;;;;;;3810:123;3852:39;;;948:8998;3852:39;;;;;3905:17;3852:39;5747:40:50;3852:39:54;3995:23;3852:39;;:::i;:::-;3905:17;;;:::i;:::-;3810:123;;;;;;;948:8998;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;3684:27:50;948:8998:54;3693:7:50;948:8998:54;;3692:8:50;3684:27;:::i;:::-;2989:103:29;;:::i;:::-;4503:7:54;948:8998;;;;4535:19;:43;;;;948:8998;;;;;;;;;4617:22;948:8998;;;4685:13;;:44;;;;;948:8998;;;;;;;;;4855:24;948:8998;;4855:24;:::i;:::-;948:8998;;;;;;;;;4848:57;;;;948:8998;4848:57;;4899:4;948:8998;4848:57;;948:8998;4848:57;;;;;;;948:8998;4848:57;;;948:8998;;;;;;4941:25;948:8998;;4941:25;:::i;:::-;948:8998;;;;;;;;;4934:58;;;;948:8998;4934:58;;4899:4;948:8998;4934:58;;948:8998;4934:58;;;;;;;948:8998;4934:58;;;948:8998;-1:-1:-1;8311:5:54;948:8998;;;9341:11:41;948:8998:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9307:64:41;948:8998:54;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;9307:64:41;;:::i;:::-;8486:62:54;8524:23;948:8998;;;;;8524:23;:::i;:::-;948:8998;;;;;;8486:62;;:::i;:::-;8566:21;8558:57;8566:21;;;8558:57;:::i;:::-;948:8998;8647:27;;8688:14;;8684:126;;948:8998;;5747:40:50;8876:24:54;948:8998;;8876:24;:::i;:::-;948:8998;;;;;;5747:40:50;;:::i;:::-;8919:17:54;8911:54;8919:17;;;8911:54;:::i;:::-;948:8998;5436:24;948:8998;;5436:24;:::i;:::-;948:8998;;;;;;;5504:19;;;;;;:::i;:::-;948:8998;;5554:32;948:8998;5554:32;;4899:4;948:8998;5554:32;;948:8998;;5554:32;948:8998;5554:32;;;;;;;;;948:8998;5554:32;;;948:8998;5617:30;;;;;:::i;:::-;5604:43;;948:8998;;;5779:25;948:8998;;5779:25;:::i;:::-;948:8998;;;;;;;7615:32:50;;;;948:8998:54;7611:265:50;;;948:8998:54;7664:13:50;948:8998:54;7664:30:50;;;;;948:8998:54;;;;;;;7664:30:50;;;;;948:8998:54;7664:30:50;;948:8998:54;7664:30:50;;948:8998:54;7664:30:50;;;;;;;;;;;7611:265;7722:32;;;;;;;;;948:8998:54;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7611:265:50;948:8998:54;;;5899:41;;4899:4;948:8998;5899:41;;948:8998;;5899:41;948:8998;5899:41;;;;;;;;;;;;;;;7611:265:50;5971:24:54;;;;;:::i;:::-;5958:37;;948:8998;;6114:22;948:8998;;;;6150:18;;:33;;;7611:265:50;6146:239:54;;7611:265:50;948:8998:54;6755:87;948:8998;6565:85;6604:46;6795:47;948:8998;6472:83;6493:34;948:8998;;6493:34;:::i;6472:83::-;6616:34;948:8998;;6616:34;:::i;6604:46::-;6565:36;948:8998;;6565:36;:::i;:85::-;6661:84;6682:35;948:8998;;6682:35;:::i;6661:84::-;6807:35;948:8998;;6807:35;:::i;6795:47::-;6755:37;948:8998;;6755:37;:::i;:87::-;948:8998;;;;28654:20:41;948:8998:54;;;;;;;28716:21:41;948:8998:54;;;7091:128;948:8998;28864:46:41;28881:29;948:8998:54;;28809:45:41;28826:28;948:8998:54;;28826:14:41;948:8998:54;;28826:14:41;:::i;:::-;948:8998:54;;;;;;;;28826:28:41;:::i;:::-;28809:14;948:8998:54;;28809:14:41;:::i;:::-;:45;948:8998:54;;;;;;;;;;;;;;;;;;;;;28809:45:41;28881:14;948:8998:54;;28881:14:41;:::i;:::-;948:8998:54;;;;;;;;28881:29:41;:::i;:::-;28864:14;948:8998:54;;28864:14:41;:::i;:46::-;7188:18:54;;;;:::i;:::-;948:8998;;;;;;;;;;;;;;;;;;;;;;;;;;7091:128;;948:8998;1505:66:29;2407:1;3553:21:50;3587:7;;;;3584:57;;7611:265;948:8998:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3584:57:50;3608:33;;;;;;;;;;3584:57;3616:10;3608:33;;;;;3584:57;;;;3608:33;948:8998:54;;;;;;;;;;3608:33:50;;;;;948:8998:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6146:239;6795:47;948:8998;;;;6565:85;6604:46;6242:9;6214:24;6755:87;948:8998;;;6214:24;;:::i;:::-;948:8998;6278:14;;6274:101;;6146:239;;;;;;;;;;6274:101;6312:48;:34;948:8998;;6312:34;:::i;:::-;:48;948:8998;;;;;;;6312:48;:::i;:::-;6274:101;;6150:33;6172:11;;;;6150:33;;948:8998;;;;;;;;;;;;;;;;;;;;;;;;;;;;5899:41;;;;948:8998;5899:41;;948:8998;5899:41;;;;;;948:8998;5899:41;;;:::i;:::-;;;948:8998;;;;;;5971:24;5899:41;;;;;-1:-1:-1;5899:41:54;;;948:8998;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7664:30:50;;;;;948:8998:54;7664:30:50;;:::i;:::-;948:8998:54;7664:30:50;;;;;948:8998:54;;;;;;;;;7611:265:50;948:8998:54;8544:1067:24;8509:24;948:8998:54;8544:1067:24;948:8998:54;8544:1067:24;;948:8998:54;8544:1067:24;;948:8998:54;8544:1067:24;948:8998:54;;;8544:1067:24;;;;;;948:8998:54;;8544:1067:24;;;;;;;7611:265:50;948:8998:54;8544:1067:24;7611:265:50;1301:116:24;1366:40;;948:8998:54;1366:40:24;948:8998:54;;;;1366:40:24;8544:1067;;948:8998:54;8544:1067:24;;;;;;;;;;;;;;;;;;;948:8998:54;8544:1067:24;;;;;7615:32:50;7634:13;948:8998:54;7634:13:50;948:8998:54;7625:22:50;;7615:32;;948:8998:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;5554:32;;;;;948:8998;5554:32;;948:8998;5554:32;;;;;;948:8998;5554:32;;;:::i;:::-;;;948:8998;;;;;;;5617:30;5554:32;;;;;-1:-1:-1;5554:32:54;;8684:126;8728:39;;;;;;;;;:::i;:::-;8781:18;;;;;:::i;:::-;8684:126;;;;948:8998;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4934:58;;;;948:8998;4934:58;;948:8998;4934:58;;;;;;948:8998;4934:58;;;:::i;:::-;;;948:8998;;;;;4934:58;;;;;;;-1:-1:-1;4934:58:54;;4848:57;;;948:8998;4848:57;;948:8998;4848:57;;;;;;948:8998;4848:57;;;:::i;:::-;;;948:8998;;;;;;;4848:57;;;;;;-1:-1:-1;4848:57:54;;948:8998;;;;;;;;;;;;;;;;;;;;;;;4685:44;4702:15;;;:27;;4685:44;;;948:8998;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4535:43;948:8998;;;;4558:20;4535:43;;;948:8998;;;;;;;;;;;;;:::i;:::-;2989:103:29;;:::i;:::-;948:8998:54;;;9255:18;948:8998;;9319:7;948:8998;;9363:5;;;;;;9902:34;948:8998;9902:34;;948:8998;1505:66:29;2407:1;948:8998:54;9370:3;9404:20;;;:::i;:::-;948:8998;;;;;;9442:9;;;9438:23;;9489:43;948:8998;;9496:10;;;:::i;:::-;948:8998;;;;;;;;;9489:43;;;;948:8998;9489:43;;9526:4;948:8998;9489:43;;948:8998;9489:43;;;;;;;948:8998;9489:43;;;9370:3;9554:11;;;;948:8998;;9602:20;9701:35;9726:10;948:8998;9602:20;9871:5;9602:20;;;;:::i;:::-;948:8998;;;;;;;;;;;9726:10;:::i;:::-;9701:22;;;:::i;:35::-;9847:10;948:8998;9847:10;;;:::i;:::-;948:8998;;;;;;;9871:5;:::i;:::-;948:8998;9348:13;;948:8998;;;;;;;;;;;;;9489:43;948:8998;;;;;;;;;9489:43;;;948:8998;9489:43;;;;;;;;;948:8998;9489:43;;;:::i;:::-;;;948:8998;;;;;9489:43;;;;;;-1:-1:-1;9489:43:54;;9438:23;948:8998;9453:8;;;;948:8998;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;948:8998:54;;;;;-1:-1:-1;948:8998:54;;;;;;;;;;;;:::o;:::-;9404:17;948:8998;;;;;;9404:17;-1:-1:-1;948:8998:54;;-1:-1:-1;948:8998:54;;;-1:-1:-1;948:8998:54;:::o;:::-;;;;;;;;;;;9319:7;948:8998;;;;;;9319:7;-1:-1:-1;948:8998:54;;-1:-1:-1;948:8998:54;;;-1:-1:-1;948:8998:54;:::o;:::-;9701:19;948:8998;;;;;;9701:19;-1:-1:-1;948:8998:54;;-1:-1:-1;948:8998:54;;;-1:-1:-1;948:8998:54;:::o;:::-;8524:6;948:8998;;;;;;8524:6;-1:-1:-1;948:8998:54;;-1:-1:-1;948:8998:54;;;-1:-1:-1;948:8998:54;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;3749:292:29;2407:1;1505:66;948:8998:54;4560:63:29;3644:93;;2407:1;1505:66;2407:1;3749:292::o;3644:93::-;3696:30;-1:-1:-1;3696:30:29;;-1:-1:-1;3696:30:29;7509:374:50;;8544:1067:24;;;;8509:24;7611:265:50;8544:1067:24;;;;;;;7611:265:50;8544:1067:24;;;;;;;1338:4;7611:265:50;8544:1067:24;;;;;;;7509:374:50;8544:1067:24;;1305:38;1301:116;;7509:374:50;:::o;1301:116:24:-;8544:1067;1366:40;;7611:265:50;1366:40:24;948:8998:54;8544:1067:24;948:8998:54;8544:1067:24;7611:265:50;1366:40:24;8544:1067;;1338:4;8544:1067;;;;;;;;;;;;;;;;6928:278:50;;948:8998:54;7032:13:50;948:8998:54;;;;;7023:22:50;;;;:45;;;6928:278;7019:180;;;7083:37;;;;;;;;;948:8998:54;7083:37:50;948:8998:54;;7083:37:50;;;;948:8998:54;7083:37:50;;;;;;;;;;7019:180;6928:278::o;7083:37::-;;;;;:::i;:::-;6928:278::o;7019:180::-;1767:47:24;;;;;948:8998:54;10404:1148:24;;;10365:28;-1:-1:-1;10404:1148:24;;;;7185:4:50;10404:1148:24;;;;;-1:-1:-1;10404:1148:24;;;;;;;1809:4;-1:-1:-1;10404:1148:24;;;;;;;7019:180:50;10404:1148:24;;;;-1:-1:-1;10404:1148:24;;1766:48;1762:126;;7019:180:50;6928:278::o;1762:126:24:-;1837:40;-1:-1:-1;1837:40:24;10404:1148;948:8998:54;10404:1148:24;-1:-1:-1;1837:40:24;10404:1148;1809:4;10404:1148;;;;;;;;;;;;;;;;;;-1:-1:-1;10404:1148:24;;;;;7023:45:50;7049:9;;;:19;;7023:45;;948:8998:54;;9341:11:41;948:8998:54;;;;;;9341:11:41;-1:-1:-1;948:8998:54;;;;;;;;;;;;;:::o;10296:2822:41:-;;;;;;;948:8998:54;;;10534:22:41;10554:1;10534:22;;948:8998:54;;;10554:1:41;;;41642:10;948:8998:54;;41654:20:41;;;;;41700:23;948:8998:54;41710:12:41;;;;;:::i;:::-;41100:19;948:8998:54;;41700:23:41;;:::i;:::-;948:8998:54;;41642:10:41;;;41654:20;;;;;;;;;10554:1;948:8998:54;;;10724:22:41;948:8998:54;;;10794:21:41;;;:::i;:::-;10906:25;948:8998:54;;;7136:6:0;;958:34;;948:8998:54;;7206:19:0;805:35;7206:19;;;:42;;;41637:128:41;958:34:0;;;11024:40:41;41316:20;948:8998:54;11024:30:41;:12;948:8998:54;;;11024:12:41;;;;;:::i;:::-;41100:19;948:8998:54;;11041:12:41;;;;:::i;:::-;41100:19;948:8998:54;;11024:30:41;;:::i;:::-;:40;:::i;:::-;41316:20;:::i;:::-;948:8998:54;;;;11192:16:41;;;;11188:90;;11375:18;;;;:::i;:::-;948:8998:54;;10554:1:41;15237:5:0;;958:34;;;10554:1:41;14261:13:0;;41100:19:41;14286:25:0;;;14282:56;;41637:128:41;14349:17:0;14355:11;14599:3;14349:17;;;14345:48;;41637:128:41;14410:7:0;14404:13;;;14400:44;;41637:128:41;14461:5:0;14455:11;;;14451:40;;41637:128:41;14508:4:0;14502:10;;;14498:39;;41637:128:41;14554:3:0;14548:9;;;14544:38;;41637:128:41;14593:9:0;;14589:23;;41637:128:41;948:8998:54;;;7182:2:0;948:8998:54;;14737:3:0;948:8998:54;;14760:31:0;14773:18;14755:176;14793:7;10554:1:41;14793:7:0;;;;948:8998:54;15317:34:0;948:8998:54;;;;;15355:3:0;948:8998:54;11673:23:41;;;;;:::i;:::-;948:8998:54;805:35:0;948:8998:54;;;9170:14:0;958:34;;41316:20:41;948:8998:54;10554:1:41;948:8998:54;;;41316:20:41;:::i;:::-;948:8998:54;;41100:19:41;948:8998:54;805:35:0;4084:19;;;:42;;;14755:176;958:34;;;11910:15:41;948:8998:54;;;11910:15:41;;:::i;:::-;948:8998:54;;41100:19:41;948:8998:54;805:35:0;3652:19;;;:42;;;14755:176;958:34;;;948:8998:54;;10554:1:41;15237:5:0;;958:34;;;10554:1:41;14261:13:0;;41100:19:41;14286:25:0;;;14282:56;;14755:176;14349:17;14355:11;14599:3;14349:17;;;14345:48;;14755:176;14410:7;14404:13;;;14400:44;;14755:176;14461:5;14455:11;;;14451:40;;14755:176;14508:4;14502:10;;;14498:39;;14755:176;14554:3;14548:9;;;14544:38;;14755:176;14593:9;;14589:23;;14755:176;14737:3;948:8998:54;;;;;;;;7182:2:0;948:8998:54;14773:18:0;14793:7;10554:1:41;14793:7:0;;;;948:8998:54;12090:12:41;948:8998:54;;15317:34:0;12003:13:41;948:8998:54;;;;15355:3:0;948:8998:54;12003:13:41;;:::i;:::-;12090:12;;:::i;:::-;41100:19;948:8998:54;;12166:22:41;;12198:21;;;948:8998:54;;12331:16:41;12327:746;;14755:176:0;13083:28:41;;;;;;;10296:2822;:::o;12327:746::-;12363:16;;;41100:19;12363:16;;;;12730:19;12363:16;41316:20;12363:16;;;12730:19;;:::i;41316:20::-;12789:11;948:8998:54;3652:19:0;805:35;3652:19;;;:42;;;12327:746:41;958:34:0;;;12789:18:41;948:8998:54;;;12789:18:41;:::i;:::-;948:8998:54;10554:1:41;948:8998:54;;;;12917:16:41;10554:1;;12953:22;;;12913:150;12327:746;;;;;;;;12913:150;13035:11;;;;;:::i;:::-;948:8998:54;;10554:1:41;15237:5:0;;958:34;;;10554:1:41;14261:13:0;;41100:19:41;14286:25:0;;;14282:56;;12913:150:41;14349:17:0;14355:11;14599:3;14349:17;;;14345:48;;12913:150:41;14410:7:0;14404:13;;;14400:44;;12913:150:41;14461:5:0;14455:11;;;14451:40;;12913:150:41;14508:4:0;14502:10;;;14498:39;;12913:150:41;14554:3:0;14548:9;;;14544:38;;12913:150:41;14593:9:0;;14589:23;;12913:150:41;14737:3:0;948:8998:54;;;;;;;;7182:2:0;948:8998:54;14773:18:0;14793:7;10554:1:41;14793:7:0;;;;-1:-1:-1;13025:23:41;;-1:-1:-1;948:8998:54;;15317:34:0;948:8998:54;15355:3:0;948:8998:54;;13025:23:41;:::i;:::-;12913:150;;14802:9:0;948:8998:54;;;;;;;;;;14737:3:0;948:8998:54;;;;;;14802:9:0;948:8998:54;;14760:31:0;;;;;;14589:23;948:8998:54;;;14589:23:0;;;14544:38;948:8998:54;;;;;;14544:38:0;;14498:39;14554:3;948:8998:54;;;;;14498:39:0;;14451:40;14477:1;948:8998:54;;;;;14451:40:0;;14400:44;14508:4;948:8998:54;;;;;14400:44:0;;14345:48;14377:2;948:8998:54;;;;;14345:48:0;;14282:56;-1:-1:-1;7182:2:0;;-1:-1:-1;948:8998:54;;;14282:56:0;;3652:42;3675:19;958:34;3675:19;;;3652:42;;14802:9;948:8998:54;;;;;;;;;;14737:3:0;948:8998:54;;;;;;14802:9:0;948:8998:54;;14760:31:0;;;;;;14589:23;948:8998:54;;;14589:23:0;;;14544:38;948:8998:54;;;;;;14544:38:0;;14498:39;14554:3;948:8998:54;;;;;14498:39:0;;14451:40;14477:1;948:8998:54;;;;;14451:40:0;;14400:44;14508:4;948:8998:54;;;;;14400:44:0;;14345:48;14377:2;948:8998:54;;;;;14345:48:0;;14282:56;-1:-1:-1;7182:2:0;;-1:-1:-1;948:8998:54;;;14282:56:0;;3652:42;3675:19;958:34;3675:19;;;3652:42;;4084;4107:19;958:34;4107:19;;;4084:42;;14802:9;948:8998:54;;;;;;;;14737:3:0;948:8998:54;;;;;;14802:9:0;948:8998:54;;14760:31:0;;;;14589:23;948:8998:54;;;14589:23:0;;;14544:38;948:8998:54;;;;;;14544:38:0;;14498:39;14523:1;948:8998:54;;;;;14498:39:0;;14451:40;14477:1;948:8998:54;;;;;14451:40:0;;14400:44;14428:2;948:8998:54;;;;;14400:44:0;;14345:48;14377:2;948:8998:54;;;;;14345:48:0;;14282:56;-1:-1:-1;7182:2:0;;-1:-1:-1;948:8998:54;;;14282:56:0;;11188:90:41;11224:43;7182:2:0;948:8998:54;11224:43:41;;;41100:19;11224:43;;;41100:19;;;;;948:8998:54;41100:19:41;948:8998:54;;;41100:19:41;;;;;;11224:43;7206:42:0;7229:19;958:34;7229:19;;;7206:42;;948:8998:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5893:600:50;6059:40;;;;:::i;:::-;8790:6:0;;;958:34;;23319:50;23314:55;;23319:50;;23388:13;948:8998:54;;23394:2:0;948:8998:54;23388:13:0;:::i;:::-;24377:34;24367:44;;958:34;;24377;948:8998:54;8851:29:0;958:34;8851:29;;958:34;;948:8998:54;;;;;6381:30:50;6377:82;;5893:600;:::o;6377:82::-;6447:1;948:8998:54;;;;;;;6427:21:50;:::o;23310:1040:0:-;23438:3;948:8998:54;;;;23486:17:0;23492:11;23486:17;;;23482:48;;23310:1040;23746:3;23543:13;23549:7;23811:45;23543:13;;;23539:44;;23310:1040;23602:5;23596:11;;;23592:40;;23310:1040;23651:4;23645:10;;;23641:39;;23310:1040;23699:3;23693:9;;;23689:38;;23310:1040;23740:9;;23736:23;;23310:1040;948:8998:54;23836:1:0;948:8998:54;;;;;;;;;;;;23811:45:0;:::i;:::-;23875:44;23885:34;23875:44;;958:34;;948:8998:54;23959:3:0;948:8998:54;;;23885:34:0;23996:38;;948:8998:54;;24046:21:0;948:8998:54;24095:2:0;948:8998:54;24112:7:0;;;;24108:20;;23310:1040;948:8998:54;;;;23959:3:0;948:8998:54;24221:7:0;;;;24217:20;;23310:1040;23959:3;948:8998:54;24313:15:0;948:8998:54;;24331:6:0;948:8998:54;;24331:6:0;:::i;:::-;24313:28;;948:8998:54;23310:1040:0;;24313:28;;;;23836:1;24313:28;;;24217:20;948:8998:54;;;24217:20:0;;;24108;948:8998:54;;;-1:-1:-1;24108:20:0;;;23736:23;23758:1;948:8998:54;23736:23:0;;23689:38;948:8998:54;;;;;;23689:38:0;;23641:39;23666:1;948:8998:54;;;;;23641:39:0;;23592:40;23618:1;948:8998:54;;;;;23592:40:0;;23539:44;23567:2;948:8998:54;;;;;23539:44:0;;23482:48;-1:-1:-1;;948:8998:54;;;;;23482:48:0;;403:228:52;;494:11;;490:25;;585:10;;;:::i;:::-;598:9;948:8998:54;;;;;;;;;;;;;;;598:9:52;948:8998:54;;403:228:52;:::o;490:25::-;507:8;;948:8998:54;507:8:52;:::o;903:262::-;;;1026:11;;1022:59;;1100:23;1143:15;1100:23;;;:::i;:::-;1143:15;;;:::i;:::-;903:262;:::o;1022:59::-;1053:17;1036:1;1053:17;;:::o;3517:219:0:-;;948:8998:54;;;;;;805:35:0;3652:19;;;:42;;;3517:219;958:34;;;948:8998:54;;3517:219:0;:::o;3652:42::-;3675:19;958:34;3675:19;;;3652:42;;3949:219;;948:8998:54;;;;;;805:35:0;4084:19;;;:42;;;958:34;;;948:8998:54;;3949:219:0;:::o;4395:225::-;;948:8998:54;;;;;;4517:2:0;948:8998:54;805:35:0;4536:19;;;:42;;;958:34;;;948:8998:54;;4395:225:0;:::o;7038:252::-;;948:8998:54;;7136:6:0;;;958:34;;7182:2;948:8998:54;;;;805:35:0;7206:19;;;:42;;;958:34;;;948:8998:54;;7038:252:0;:::o;6267:513::-;6363:6;;6359:20;;948:8998:54;;;6397:6:0;;958:34;;6455;6451:38;;948:8998:54;;6495:2:0;948:8998:54;;6547:3:0;948:8998:54;;6575:50:0;6569:56;;958:34;;6495:2;948:8998:54;;;6661:85:0;;958:34;;948:8998:54;6267:513:0;:::o;22569:296::-;948:8998:54;;22661:20:0;22657:24;;958:34;;;22711:21;22707:25;;22703:39;;22810:35;22771:83;948:8998:54;;22849:3:0;948:8998:54;;;22771:83:0;:::i;22703:39::-;22734:8;948:8998:54;22734:8:0;:::o;15549:6841::-;948:8998:54;;;15643:20:0;15639:24;;958:34;;;15693:21;15689:25;;15685:39;;15763:34;15810:22;948:8998:54;15814:18:0;15810:22;;948:8998:54;;15810:26:0;15806:100;;15549:6841;948:8998:54;15922:18:0;15918:22;;948:8998:54;;15918:26:0;15914:100;;15549:6841;948:8998:54;16030:18:0;16026:22;;948:8998:54;;16026:26:0;16022:100;;15549:6841;948:8998:54;16138:18:0;16134:22;;948:8998:54;;16134:26:0;16130:100;;15549:6841;948:8998:54;16246:17:0;16242:21;;948:8998:54;;16242:25:0;16238:99;;15549:6841;948:8998:54;16353:17:0;16349:21;;948:8998:54;;16349:25:0;16345:99;;15549:6841;948:8998:54;16460:17:0;16456:21;;948:8998:54;;16456:25:0;16452:99;;15549:6841;948:8998:54;16567:17:0;16563:21;;948:8998:54;;16563:25:0;16559:99;;15549:6841;948:8998:54;16674:16:0;16670:20;;948:8998:54;;16670:24:0;16666:98;;15549:6841;948:8998:54;16780:16:0;16776:20;;948:8998:54;;16776:24:0;16772:98;;15549:6841;948:8998:54;16886:16:0;16882:20;;948:8998:54;;16882:24:0;16878:98;;15549:6841;948:8998:54;16992:16:0;16988:20;;948:8998:54;;16988:24:0;16984:98;;15549:6841;948:8998:54;17098:15:0;17094:19;;948:8998:54;;17094:23:0;17090:97;;15549:6841;948:8998:54;17203:15:0;17199:19;;948:8998:54;;17199:23:0;17195:97;;15549:6841;948:8998:54;17308:15:0;17304:19;;948:8998:54;;17304:23:0;17300:97;;15549:6841;948:8998:54;17413:15:0;17409:19;;948:8998:54;;17409:23:0;17405:97;;15549:6841;948:8998:54;17518:14:0;17514:18;;948:8998:54;;17514:22:0;17510:96;;15549:6841;948:8998:54;17622:14:0;17618:18;;948:8998:54;;17618:22:0;17614:96;;15549:6841;948:8998:54;17726:14:0;17722:18;;948:8998:54;;17722:22:0;17718:96;;15549:6841;948:8998:54;17830:14:0;17826:18;;948:8998:54;;17826:22:0;17822:96;;15549:6841;948:8998:54;17934:13:0;17930:17;;948:8998:54;;17930:21:0;17926:95;;15549:6841;948:8998:54;18037:13:0;18033:17;;948:8998:54;;18033:21:0;18029:95;;15549:6841;948:8998:54;18140:13:0;18136:17;;948:8998:54;;18136:21:0;18132:95;;15549:6841;948:8998:54;18243:13:0;18239:17;;948:8998:54;;18239:21:0;18235:95;;15549:6841;948:8998:54;18346:12:0;18342:16;;948:8998:54;;18342:20:0;18338:94;;15549:6841;948:8998:54;18448:12:0;18444:16;;948:8998:54;;18444:20:0;18440:94;;15549:6841;948:8998:54;18550:12:0;18546:16;;948:8998:54;;18546:20:0;18542:94;;15549:6841;948:8998:54;18652:12:0;18648:16;;948:8998:54;;18648:20:0;18644:94;;15549:6841;948:8998:54;18754:11:0;18750:15;;948:8998:54;;18750:19:0;18746:93;;15549:6841;948:8998:54;18855:11:0;18851:15;;948:8998:54;;18851:19:0;18847:93;;15549:6841;948:8998:54;18956:11:0;18952:15;;948:8998:54;;18952:19:0;18948:93;;15549:6841;948:8998:54;19057:11:0;19053:15;;948:8998:54;;19053:19:0;19049:93;;15549:6841;948:8998:54;19158:10:0;19154:14;;948:8998:54;;19154:18:0;19150:92;;15549:6841;948:8998:54;19258:10:0;19254:14;;948:8998:54;;19254:18:0;19250:92;;15549:6841;948:8998:54;19358:10:0;19354:14;;948:8998:54;;19354:18:0;19350:92;;15549:6841;948:8998:54;19458:10:0;19454:14;;948:8998:54;;19454:18:0;19450:92;;15549:6841;948:8998:54;19558:9:0;19554:13;;948:8998:54;;19554:17:0;19550:91;;15549:6841;948:8998:54;19657:9:0;19653:13;;948:8998:54;;19653:17:0;19649:91;;15549:6841;948:8998:54;19756:9:0;19752:13;;948:8998:54;;19752:17:0;19748:91;;15549:6841;948:8998:54;19855:9:0;19851:13;;948:8998:54;;19851:17:0;19847:91;;15549:6841;948:8998:54;19954:8:0;19950:12;;948:8998:54;;19950:16:0;19946:90;;15549:6841;948:8998:54;20052:8:0;20048:12;;948:8998:54;;20048:16:0;20044:90;;15549:6841;948:8998:54;20150:8:0;20146:12;;948:8998:54;;20146:16:0;20142:90;;15549:6841;948:8998:54;20248:8:0;20244:12;;948:8998:54;;20244:16:0;20240:90;;15549:6841;948:8998:54;20346:7:0;20342:11;;948:8998:54;;20342:15:0;20338:89;;15549:6841;948:8998:54;20443:7:0;20439:11;;948:8998:54;;20439:15:0;20435:89;;15549:6841;948:8998:54;20540:7:0;20536:11;;948:8998:54;;20536:15:0;20532:89;;15549:6841;948:8998:54;20637:7:0;20633:11;;948:8998:54;;20633:15:0;20629:89;;15549:6841;948:8998:54;20734:6:0;20730:10;;948:8998:54;;20730:14:0;20726:88;;15549:6841;948:8998:54;20830:6:0;20826:10;;948:8998:54;;20826:14:0;20822:88;;15549:6841;948:8998:54;20926:6:0;20922:10;;948:8998:54;;20922:14:0;20918:88;;15549:6841;948:8998:54;21022:6:0;21018:10;;948:8998:54;;21018:14:0;21014:88;;15549:6841;948:8998:54;21118:5:0;21114:9;;948:8998:54;;21114:13:0;21110:87;;15549:6841;948:8998:54;21213:5:0;21209:9;;948:8998:54;;21209:13:0;21205:87;;15549:6841;948:8998:54;21308:5:0;21304:9;;948:8998:54;;21304:13:0;21300:87;;15549:6841;948:8998:54;21403:5:0;21399:9;;948:8998:54;;21399:13:0;21395:87;;15549:6841;948:8998:54;21498:4:0;21494:8;;948:8998:54;;21494:12:0;21490:86;;15549:6841;948:8998:54;21592:4:0;21588:8;;948:8998:54;;21588:12:0;21584:86;;15549:6841;948:8998:54;21686:4:0;21682:8;;948:8998:54;;21682:12:0;21678:86;;15549:6841;948:8998:54;21780:4:0;21776:8;;948:8998:54;;21776:12:0;21772:86;;15549:6841;948:8998:54;21874:3:0;21870:7;;948:8998:54;;21870:11:0;21866:85;;15549:6841;948:8998:54;21967:3:0;21963:7;;948:8998:54;;21963:11:0;21959:85;;15549:6841;948:8998:54;22060:3:0;22056:7;;948:8998:54;;22056:11:0;22052:85;;15549:6841;22153:3;948:8998:54;22149:7:0;;948:8998:54;;22149:11:0;22145:85;;15549:6841;21592:4;948:8998:54;;;22267:2:0;948:8998:54;;;;958:34:0;22300:38;;958:34;;948:8998:54;;15549:6841:0;:::o;22145:85::-;948:8998:54;22188:35:0;948:8998:54;21498:4:0;948:8998:54;22145:85:0;;;22052;22095:35;948:8998:54;;;21498:4:0;948:8998:54;;22052:85:0;;21959;948:8998:54;22002:35:0;948:8998:54;21498:4:0;948:8998:54;21959:85:0;;;21866;948:8998:54;21909:35:0;948:8998:54;21498:4:0;948:8998:54;21866:85:0;;;21772:86;948:8998:54;21816:35:0;948:8998:54;21498:4:0;948:8998:54;21772:86:0;;;21678;948:8998:54;21722:35:0;948:8998:54;21498:4:0;948:8998:54;21678:86:0;;;21584;948:8998:54;21628:35:0;948:8998:54;21498:4:0;948:8998:54;21584:86:0;;;21490;948:8998:54;21534:35:0;948:8998:54;21498:4:0;948:8998:54;21490:86:0;;;21395:87;948:8998:54;21440:35:0;948:8998:54;21479:3:0;948:8998:54;21395:87:0;;;21300;948:8998:54;21345:35:0;948:8998:54;21384:3:0;948:8998:54;21300:87:0;;;21205;948:8998:54;21250:35:0;948:8998:54;21289:3:0;948:8998:54;21205:87:0;;;21110;948:8998:54;21155:35:0;948:8998:54;21194:3:0;948:8998:54;21110:87:0;;;21014:88;948:8998:54;21060:35:0;948:8998:54;21099:3:0;948:8998:54;21014:88:0;;;20918;948:8998:54;20964:35:0;948:8998:54;21003:3:0;948:8998:54;20918:88:0;;;20822;948:8998:54;20868:35:0;948:8998:54;20907:3:0;948:8998:54;20822:88:0;;;20726;948:8998:54;20772:35:0;948:8998:54;20811:3:0;948:8998:54;20726:88:0;;;20629:89;948:8998:54;20676:35:0;948:8998:54;20715:3:0;948:8998:54;20629:89:0;;;20532;948:8998:54;20579:35:0;948:8998:54;20618:3:0;948:8998:54;20532:89:0;;;20435;948:8998:54;20482:35:0;948:8998:54;20521:3:0;948:8998:54;20435:89:0;;;20338;948:8998:54;20385:35:0;948:8998:54;20424:3:0;948:8998:54;20338:89:0;;;20240:90;948:8998:54;20288:35:0;948:8998:54;20327:3:0;948:8998:54;20240:90:0;;;20142;948:8998:54;20190:35:0;948:8998:54;20229:3:0;948:8998:54;20142:90:0;;;20044;948:8998:54;20092:35:0;948:8998:54;20131:3:0;948:8998:54;20044:90:0;;;19946;948:8998:54;19994:35:0;948:8998:54;20033:3:0;948:8998:54;19946:90:0;;;19847:91;948:8998:54;19896:35:0;948:8998:54;19935:3:0;948:8998:54;19847:91:0;;;19748;948:8998:54;19797:35:0;948:8998:54;19836:3:0;948:8998:54;19748:91:0;;;19649;948:8998:54;19698:35:0;948:8998:54;19737:3:0;948:8998:54;19649:91:0;;;19550;948:8998:54;19599:35:0;948:8998:54;19638:3:0;948:8998:54;19550:91:0;;;19450:92;948:8998:54;19500:35:0;948:8998:54;19539:3:0;948:8998:54;19450:92:0;;;19350;948:8998:54;19400:35:0;948:8998:54;19439:3:0;948:8998:54;19350:92:0;;;19250;948:8998:54;19300:35:0;948:8998:54;19339:3:0;948:8998:54;19250:92:0;;;19150;948:8998:54;19200:35:0;948:8998:54;19239:3:0;948:8998:54;19150:92:0;;;19049:93;948:8998:54;19100:35:0;948:8998:54;19139:3:0;948:8998:54;19049:93:0;;;18948;948:8998:54;18999:35:0;948:8998:54;19038:3:0;948:8998:54;18948:93:0;;;18847;948:8998:54;18898:35:0;948:8998:54;18937:3:0;948:8998:54;18847:93:0;;;18746;948:8998:54;18797:35:0;948:8998:54;18836:3:0;948:8998:54;18746:93:0;;;18644:94;948:8998:54;18696:35:0;948:8998:54;18735:3:0;948:8998:54;18644:94:0;;;18542;948:8998:54;18594:35:0;948:8998:54;18633:3:0;948:8998:54;18542:94:0;;;18440;948:8998:54;18492:35:0;948:8998:54;18531:3:0;948:8998:54;18440:94:0;;;18338;948:8998:54;18390:35:0;948:8998:54;18429:3:0;948:8998:54;18338:94:0;;;18235:95;948:8998:54;18288:35:0;948:8998:54;18327:3:0;948:8998:54;18235:95:0;;;18132;948:8998:54;18185:35:0;948:8998:54;18224:3:0;948:8998:54;18132:95:0;;;18029;948:8998:54;18082:35:0;948:8998:54;18121:3:0;948:8998:54;18029:95:0;;;17926;948:8998:54;17979:35:0;948:8998:54;18018:3:0;948:8998:54;17926:95:0;;;17822:96;948:8998:54;17876:35:0;948:8998:54;17915:3:0;948:8998:54;17822:96:0;;;17718;948:8998:54;17772:35:0;948:8998:54;17811:3:0;948:8998:54;17718:96:0;;;17614;948:8998:54;17668:35:0;948:8998:54;17707:3:0;948:8998:54;17614:96:0;;;17510;948:8998:54;17564:35:0;948:8998:54;17603:3:0;948:8998:54;17510:96:0;;;17405:97;948:8998:54;17460:35:0;948:8998:54;17499:3:0;948:8998:54;17405:97:0;;;17300;948:8998:54;17355:35:0;948:8998:54;17394:3:0;948:8998:54;17300:97:0;;;17195;948:8998:54;17250:35:0;948:8998:54;17289:3:0;948:8998:54;17195:97:0;;;17090;948:8998:54;17145:35:0;948:8998:54;17184:3:0;948:8998:54;17090:97:0;;;16984:98;948:8998:54;17040:35:0;948:8998:54;17079:3:0;948:8998:54;16984:98:0;;;16878;948:8998:54;16934:35:0;948:8998:54;16973:3:0;948:8998:54;16878:98:0;;;16772;948:8998:54;16828:35:0;948:8998:54;16867:3:0;948:8998:54;16772:98:0;;;16666;948:8998:54;16722:35:0;948:8998:54;16761:3:0;948:8998:54;16666:98:0;;;16559:99;948:8998:54;16616:35:0;948:8998:54;16655:3:0;948:8998:54;16559:99:0;;;16452;948:8998:54;16509:35:0;948:8998:54;16548:3:0;948:8998:54;16452:99:0;;;16345;948:8998:54;16402:35:0;948:8998:54;16441:3:0;948:8998:54;16345:99:0;;;16238;948:8998:54;16295:35:0;948:8998:54;16334:3:0;948:8998:54;16238:99:0;;;16130:100;948:8998:54;16188:35:0;948:8998:54;16227:3:0;948:8998:54;16130:100:0;;;16022;948:8998:54;16080:35:0;948:8998:54;16119:3:0;948:8998:54;16022:100:0;;;15914;948:8998:54;15972:35:0;948:8998:54;16011:3:0;948:8998:54;15914:100:0;;;15806;948:8998:54;;-1:-1:-1;15806:100:0;","linkReferences":{},"immutableReferences":{"50124":[{"start":3324,"length":32},{"start":4967,"length":32},{"start":7674,"length":32}]}},"methodIdentifiers":{"collectProtocolFees(address)":"2a54db01","flashLoan(address,address,uint256,bytes,uint256,uint256)":"e49cd475","swapToLimit(address,address,uint256,uint256,int128,uint256,bool,uint256,uint256)":"8a3d858d","swapToLimitAmounts(uint256,uint256,int128,uint256[],int128,int128[],uint256)":"bf05a0a6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract NativeWrapper\",\"name\":\"wrapper_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC3156FlashBorrower\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFee\",\"type\":\"uint256\"}],\"name\":\"Flash\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"ProtocolFeesCollected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFee\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dest\",\"type\":\"address\"}],\"name\":\"collectProtocolFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC3156FlashBorrower\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenAddr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"flashFeePpm\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolFeePpm\",\"type\":\"uint256\"}],\"name\":\"flashLoan\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"int128\",\"name\":\"limitPrice\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"unwrap\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePpm\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolFeePpm\",\"type\":\"uint256\"}],\"name\":\"swapToLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountInUsed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inFee\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"inputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputTokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"int128\",\"name\":\"limitPrice\",\"type\":\"int128\"},{\"internalType\":\"uint256[]\",\"name\":\"bases\",\"type\":\"uint256[]\"},{\"internalType\":\"int128\",\"name\":\"kappa\",\"type\":\"int128\"},{\"internalType\":\"int128[]\",\"name\":\"qInternal\",\"type\":\"int128[]\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePpm\",\"type\":\"uint256\"}],\"name\":\"swapToLimitAmounts\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inFee\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract inherits from PartyPoolBase to access storage and internal functions\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"events\":{\"ProtocolFeesCollected()\":{\"details\":\"After collection, the protocolFee accounting array will be zeroed out.\"}},\"kind\":\"dev\",\"methods\":{\"collectProtocolFees(address)\":{\"details\":\"Anyone can call; must have protocolFeeAddress != address(0) to be operational.\"}},\"title\":\"PartyPoolSwapMintImpl - Implementation contract for swapMint and burnSwap functions\",\"version\":1},\"userdoc\":{\"events\":{\"ProtocolFeesCollected()\":{\"notice\":\"Emitted when protocol fees are collected from this pool.\"}},\"kind\":\"user\",\"methods\":{\"collectProtocolFees(address)\":{\"notice\":\"Transfer all protocol fees to the configured protocolFeeAddress and zero the ledger.\"}},\"notice\":\"This contract contains the swapMint and burnSwap implementation that will be called via delegatecall\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/PartyPoolSwapImpl.sol\":\"PartyPoolSwapImpl\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/abdk-libraries-solidity/ABDKMath64x64.sol\":{\"keccak256\":\"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97\",\"license\":\"BSD-4-Clause\",\"urls\":[\"bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7\",\"dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol\":{\"keccak256\":\"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd\",\"dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd\",\"dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168\",\"dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161\",\"dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"src/ERC20Internal.sol\":{\"keccak256\":\"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f\",\"dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk\"]},\"src/IOwnable.sol\":{\"keccak256\":\"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1\",\"dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9\"]},\"src/IPartyPool.sol\":{\"keccak256\":\"0x74b9531bdf2200f256cac6c2cd54c0efad7c1bdfbe694ee910df75448ffe93f4\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://aadd161d7e197b48e6be4198b0f4f81a10016b9904d024e0a361bf2d7f941475\",\"dweb:/ipfs/QmYuGyPZCigmt8va11oAHXPTpHFyF3d7ARDNacyr2jsDfa\"]},\"src/LMSRStabilized.sol\":{\"keccak256\":\"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3\",\"dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB\"]},\"src/NativeWrapper.sol\":{\"keccak256\":\"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238\",\"dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB\"]},\"src/OwnableInternal.sol\":{\"keccak256\":\"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca\",\"dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE\"]},\"src/PartyPoolBase.sol\":{\"keccak256\":\"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5\",\"dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5\"]},\"src/PartyPoolHelpers.sol\":{\"keccak256\":\"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5\",\"dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP\"]},\"src/PartyPoolSwapImpl.sol\":{\"keccak256\":\"0x71ecbd6d0fb106031baed7e4c21694ef24f0112af7d975325b98b1b0463ba5b2\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://64f8f8bae2f89ca495b9edacd012363b55e78a198f100650beb2b1238e8ef11f\",\"dweb:/ipfs/QmVfihiw9TqncuEfZKx7c6WEHiGFfRQyhtfdTGzfN7emNY\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract NativeWrapper","name":"wrapper_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[{"internalType":"address","name":"initiator","type":"address","indexed":true},{"internalType":"contract IERC3156FlashBorrower","name":"receiver","type":"address","indexed":true},{"internalType":"contract IERC20","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"lpFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolFee","type":"uint256","indexed":false}],"type":"event","name":"Flash","anonymous":false},{"inputs":[],"type":"event","name":"ProtocolFeesCollected","anonymous":false},{"inputs":[{"internalType":"address","name":"payer","type":"address","indexed":false},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"contract IERC20","name":"tokenIn","type":"address","indexed":true},{"internalType":"contract IERC20","name":"tokenOut","type":"address","indexed":true},{"internalType":"uint256","name":"amountIn","type":"uint256","indexed":false},{"internalType":"uint256","name":"amountOut","type":"uint256","indexed":false},{"internalType":"uint256","name":"lpFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolFee","type":"uint256","indexed":false}],"type":"event","name":"Swap","anonymous":false},{"inputs":[{"internalType":"address","name":"dest","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"collectProtocolFees"},{"inputs":[{"internalType":"contract IERC3156FlashBorrower","name":"receiver","type":"address"},{"internalType":"address","name":"tokenAddr","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"flashFeePpm","type":"uint256"},{"internalType":"uint256","name":"protocolFeePpm","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"flashLoan","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"inputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"outputTokenIndex","type":"uint256"},{"internalType":"int128","name":"limitPrice","type":"int128"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"unwrap","type":"bool"},{"internalType":"uint256","name":"swapFeePpm","type":"uint256"},{"internalType":"uint256","name":"protocolFeePpm","type":"uint256"}],"stateMutability":"payable","type":"function","name":"swapToLimit","outputs":[{"internalType":"uint256","name":"amountInUsed","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"inFee","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"inputTokenIndex","type":"uint256"},{"internalType":"uint256","name":"outputTokenIndex","type":"uint256"},{"internalType":"int128","name":"limitPrice","type":"int128"},{"internalType":"uint256[]","name":"bases","type":"uint256[]"},{"internalType":"int128","name":"kappa","type":"int128"},{"internalType":"int128[]","name":"qInternal","type":"int128[]"},{"internalType":"uint256","name":"swapFeePpm","type":"uint256"}],"stateMutability":"pure","type":"function","name":"swapToLimitAmounts","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"inFee","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"collectProtocolFees(address)":{"details":"Anyone can call; must have protocolFeeAddress != address(0) to be operational."}},"version":1},"userdoc":{"kind":"user","methods":{"collectProtocolFees(address)":{"notice":"Transfer all protocol fees to the configured protocolFeeAddress and zero the ledger."}},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/PartyPoolSwapImpl.sol":"PartyPoolSwapImpl"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/abdk-libraries-solidity/ABDKMath64x64.sol":{"keccak256":"0x1364fdc24192b982f647c7fc68dcb2f6fc1b5e201843e773144bd23a76cb3b97","urls":["bzz-raw://490712cc07db32f274899b17aade9c975f06010848c21500b8a5ead6898e09c7","dweb:/ipfs/QmZMPKjDgwCFSGdLWJW6g5E7hDLByA9hNjXzAwJ4GKTZvN"],"license":"BSD-4-Clause"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d","urls":["bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100","dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc","urls":["bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037","dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44","urls":["bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d","dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol":{"keccak256":"0x4e4b982b56b50290dd1dcaa2fef1178b1574dfc7c0f0a8ef9cb68a207d72582e","urls":["bzz-raw://eb7adc69bcb4d8ef0b001869b24e831edd411b6c5405e03c5e95ca109a7b7bcd","dweb:/ipfs/QmWeXYWVPUuwVWPjLXn44PrEnv7bJg3JiVkFm7riDkgTVk"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86","urls":["bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd","dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9","urls":["bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168","dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol":{"keccak256":"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0","urls":["bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161","dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"},"src/ERC20Internal.sol":{"keccak256":"0x0b2cd3a393d7e6be95eda2365630834725c2019e2cd38fc7d6477f03711fff36","urls":["bzz-raw://623d7b77f1094b2b6eff5d3ba8d41ca9e957a45d1a3839626e5f5fc5ccea515f","dweb:/ipfs/QmPUjfLsa7EghB3TDANHVoD9K8QUoG7wg9QT6pWXVjAytk"],"license":"UNLICENSED"},"src/IOwnable.sol":{"keccak256":"0x7462267790c0d2312be1cbce077e5565aa86dac0789718c87ad0948174ecb990","urls":["bzz-raw://7eca10ffa6a7985d11eb476a351b1c09701056b0bdf8146612173bb19764e3f1","dweb:/ipfs/QmTPF85yFSL3jDt2atZDLT4RV3zs8ch8P3G7YzCUiU8gR9"],"license":"MIT"},"src/IPartyPool.sol":{"keccak256":"0x74b9531bdf2200f256cac6c2cd54c0efad7c1bdfbe694ee910df75448ffe93f4","urls":["bzz-raw://aadd161d7e197b48e6be4198b0f4f81a10016b9904d024e0a361bf2d7f941475","dweb:/ipfs/QmYuGyPZCigmt8va11oAHXPTpHFyF3d7ARDNacyr2jsDfa"],"license":"UNLICENSED"},"src/LMSRStabilized.sol":{"keccak256":"0x0a242f1378f609f0af4a2d9686287b33a7279fb987df0db43705f417b46ab68b","urls":["bzz-raw://b9f834fcccf2e080fb5578afbe34dc3d8ac02b3f3364e0c2224bf30dcb32c1f3","dweb:/ipfs/QmdN7rT5AnGNTyiHC22mYpxkk6T7cmjEkFgtcJvGM3roLB"],"license":"UNLICENSED"},"src/NativeWrapper.sol":{"keccak256":"0xca6c8828bbc6e45737dd881d9bcc4077bc058ddcc118189ed49b4ee331ab5579","urls":["bzz-raw://ddb1604ad481e4c58d0f216c8b262515cb735c03fd93a5b36c4e69c81df5a238","dweb:/ipfs/QmPhSjWsZksacUW8hR7tXNVRScoMSv6TQArbJBHcXJiRVB"],"license":"UNLICENSED"},"src/OwnableInternal.sol":{"keccak256":"0x4dd94a81962a9708a07fdeba0f2b63bb5e17ef22f3b7a4d1e6afc5e589f95581","urls":["bzz-raw://efecf80e2ef5afc06fb1f201270a41e15bed831275650d0e47c0d933e7b192ca","dweb:/ipfs/QmNo4q3htXm758T8tKruR671mrDL2K1kkzRJjSKr7BTuiE"],"license":"MIT"},"src/PartyPoolBase.sol":{"keccak256":"0x0d5a9e1fce91f72ccc2046b399cb2ebee43f23368a0e04b16d8b7c3f10921999","urls":["bzz-raw://4eda566e4f81bfc8ba284ef779054f753230bc66d7ad83fd23fa457bad7c91d5","dweb:/ipfs/QmRsBbBGjyEFktKKTPSy5WUiyRBZZPbqkVZHV3tNb5mWA5"],"license":"UNLICENSED"},"src/PartyPoolHelpers.sol":{"keccak256":"0xd43b635d12b6684ae38a685eea4bc5783cebb3696514d8aafe3f4ce34f5e759c","urls":["bzz-raw://832046b365d443c4c1c715f98fe3de224e3ba82c67960053d51e6a79847c4af5","dweb:/ipfs/QmZ4nWMwyYQzaBGF7rBE73GYTs4z3DRNYL1ZrGAsxN6RfP"],"license":"UNLICENSED"},"src/PartyPoolSwapImpl.sol":{"keccak256":"0x71ecbd6d0fb106031baed7e4c21694ef24f0112af7d975325b98b1b0463ba5b2","urls":["bzz-raw://64f8f8bae2f89ca495b9edacd012363b55e78a198f100650beb2b1238e8ef11f","dweb:/ipfs/QmVfihiw9TqncuEfZKx7c6WEHiGFfRQyhtfdTGzfN7emNY"],"license":"UNLICENSED"}},"version":1},"id":54} \ No newline at end of file diff --git a/deployment/11155111/v1/out/ReentrancyGuard.sol/ReentrancyGuard.json b/deployment/11155111/v1/out/ReentrancyGuard.sol/ReentrancyGuard.json index 4ba9ee5..f7be926 100644 --- a/deployment/11155111/v1/out/ReentrancyGuard.sol/ReentrancyGuard.json +++ b/deployment/11155111/v1/out/ReentrancyGuard.sol/ReentrancyGuard.json @@ -1 +1 @@ -{"abi":[{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"}],\"devdoc\":{\"custom:stateless\":\"\",\"details\":\"Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If EIP-1153 (transient storage) is available on the chain you're deploying at, consider using {ReentrancyGuardTransient} instead. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. IMPORTANT: Deprecated. This storage-based reentrancy guard will be removed and replaced by the {ReentrancyGuardTransient} variant in v6.0.\",\"errors\":{\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol\":\"ReentrancyGuard\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161\",\"dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol":"ReentrancyGuard"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol":{"keccak256":"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0","urls":["bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161","dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"}},"version":1},"id":31} \ No newline at end of file +{"abi":[{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"}],\"devdoc\":{\"custom:stateless\":\"\",\"details\":\"Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If EIP-1153 (transient storage) is available on the chain you're deploying at, consider using {ReentrancyGuardTransient} instead. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. IMPORTANT: Deprecated. This storage-based reentrancy guard will be removed and replaced by the {ReentrancyGuardTransient} variant in v6.0.\",\"errors\":{\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol\":\"ReentrancyGuard\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161\",\"dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol":"ReentrancyGuard"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol":{"keccak256":"0x6f9ed073e3dab12233a79cd85153f72c9e0f99c1f5512f6d5b1ef09fb46abbb0","urls":["bzz-raw://093d2a804b792a0000883c2215585963ed98ec4341b45bc4224844623387d161","dweb:/ipfs/QmR5shjVosAoxdmY3EfkUWgFNV4CVUcbRNS7tkvbipssPX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"}},"version":1},"id":29} \ No newline at end of file diff --git a/deployment/11155111/v1/out/SafeERC20.sol/SafeERC20.json b/deployment/11155111/v1/out/SafeERC20.sol/SafeERC20.json index ffa8c03..34cd685 100644 --- a/deployment/11155111/v1/out/SafeERC20.sol/SafeERC20.json +++ b/deployment/11155111/v1/out/SafeERC20.sol/SafeERC20.json @@ -1 +1 @@ -{"abi":[{"type":"error","name":"SafeERC20FailedDecreaseAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"currentAllowance","type":"uint256","internalType":"uint256"},{"name":"requestedDecrease","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220ad7cbb801ec31f6341c10c63945735460c95581fca8de0a0a54fc75f426474db64736f6c634300081e0033","sourceMap":"698:12615:26:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea2646970667358221220ad7cbb801ec31f6341c10c63945735460c95581fca8de0a0a54fc75f426474db64736f6c634300081e0033","sourceMap":"698:12615:26:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentAllowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requestedDecrease\",\"type\":\"uint256\"}],\"name\":\"SafeERC20FailedDecreaseAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Wrappers around ERC-20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"errors\":{\"SafeERC20FailedDecreaseAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failed `decreaseAllowance` request.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168\",\"dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"currentAllowance","type":"uint256"},{"internalType":"uint256","name":"requestedDecrease","type":"uint256"}],"type":"error","name":"SafeERC20FailedDecreaseAllowance"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":"SafeERC20"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d","urls":["bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100","dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc","urls":["bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037","dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44","urls":["bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d","dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9","urls":["bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168","dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"}},"version":1},"id":26} \ No newline at end of file +{"abi":[{"type":"error","name":"SafeERC20FailedDecreaseAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"currentAllowance","type":"uint256","internalType":"uint256"},{"name":"requestedDecrease","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220ad7cbb801ec31f6341c10c63945735460c95581fca8de0a0a54fc75f426474db64736f6c634300081e0033","sourceMap":"698:12615:24:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea2646970667358221220ad7cbb801ec31f6341c10c63945735460c95581fca8de0a0a54fc75f426474db64736f6c634300081e0033","sourceMap":"698:12615:24:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentAllowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requestedDecrease\",\"type\":\"uint256\"}],\"name\":\"SafeERC20FailedDecreaseAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Wrappers around ERC-20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"errors\":{\"SafeERC20FailedDecreaseAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failed `decreaseAllowance` request.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168\",\"dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"currentAllowance","type":"uint256"},{"internalType":"uint256","name":"requestedDecrease","type":"uint256"}],"type":"error","name":"SafeERC20FailedDecreaseAllowance"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":"SafeERC20"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d","urls":["bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100","dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc","urls":["bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037","dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44","urls":["bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d","dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x869c06fcfd4e33df584f63c033467c3d4f5e51bdf78bc69d0eeef5c07e395ad9","urls":["bzz-raw://436721c3801101a789b998f14f161de63edb64229ff307b0951a97a964f07168","dweb:/ipfs/QmaFWLRmVXFL629AyThz8Nc8W7RakZBVGo14AWB2WLyKcP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"}},"version":1},"id":24} \ No newline at end of file diff --git a/deployment/11155111/v1/out/StorageSlot.sol/StorageSlot.json b/deployment/11155111/v1/out/StorageSlot.sol/StorageSlot.json index 243043b..60d8ab3 100644 --- a/deployment/11155111/v1/out/StorageSlot.sol/StorageSlot.json +++ b/deployment/11155111/v1/out/StorageSlot.sol/StorageSlot.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220ea5a41e6dbc6ca08b6521f0969fc2f079cea68e510c192f94e81f843a5e6d3b264736f6c634300081e0033","sourceMap":"1407:2774:32:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea2646970667358221220ea5a41e6dbc6ca08b6521f0969fc2f079cea68e510c192f94e81f843a5e6d3b264736f6c634300081e0033","sourceMap":"1407:2774:32:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC-1967 implementation slot: ```solidity contract ERC1967 { // Define the slot. Alternatively, use the SlotDerivation library to derive the slot. bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(newImplementation.code.length > 0); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ``` TIP: Consider using this library along with {SlotDerivation}.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":\"StorageSlot\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":"StorageSlot"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"}},"version":1},"id":32} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220ea5a41e6dbc6ca08b6521f0969fc2f079cea68e510c192f94e81f843a5e6d3b264736f6c634300081e0033","sourceMap":"1407:2774:30:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea2646970667358221220ea5a41e6dbc6ca08b6521f0969fc2f079cea68e510c192f94e81f843a5e6d3b264736f6c634300081e0033","sourceMap":"1407:2774:30:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC-1967 implementation slot: ```solidity contract ERC1967 { // Define the slot. Alternatively, use the SlotDerivation library to derive the slot. bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(newImplementation.code.length > 0); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ``` TIP: Consider using this library along with {SlotDerivation}.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":\"StorageSlot\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":"StorageSlot"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"}},"version":1},"id":30} \ No newline at end of file diff --git a/deployment/11155111/v1/out/draft-IERC6093.sol/IERC1155Errors.json b/deployment/11155111/v1/out/draft-IERC6093.sol/IERC1155Errors.json index b01eb3b..0e02e24 100644 --- a/deployment/11155111/v1/out/draft-IERC6093.sol/IERC1155Errors.json +++ b/deployment/11155111/v1/out/draft-IERC6093.sol/IERC1155Errors.json @@ -1 +1 @@ -{"abi":[{"type":"error","name":"ERC1155InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC1155InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155InvalidArrayLength","inputs":[{"name":"idsLength","type":"uint256","internalType":"uint256"},{"name":"valuesLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC1155InvalidOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155MissingApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC1155InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valuesLength\",\"type\":\"uint256\"}],\"name\":\"ERC1155InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC1155MissingApprovalForAll\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\",\"errors\":{\"ERC1155InsufficientBalance(address,uint256,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC1155InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC1155InvalidArrayLength(uint256,uint256)\":[{\"details\":\"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.\",\"params\":{\"idsLength\":\"Length of the array of token identifiers\",\"valuesLength\":\"Length of the array of token amounts\"}}],\"ERC1155InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC1155InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC1155InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC1155MissingApprovalForAll(address,address)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"owner\":\"Address of the current owner of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":\"IERC1155Errors\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd\",\"dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC1155InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC1155InvalidApprover"},{"inputs":[{"internalType":"uint256","name":"idsLength","type":"uint256"},{"internalType":"uint256","name":"valuesLength","type":"uint256"}],"type":"error","name":"ERC1155InvalidArrayLength"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"ERC1155InvalidOperator"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC1155InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC1155InvalidSender"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC1155MissingApprovalForAll"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":"IERC1155Errors"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86","urls":["bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd","dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz"],"license":"MIT"}},"version":1},"id":21} \ No newline at end of file +{"abi":[{"type":"error","name":"ERC1155InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC1155InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155InvalidArrayLength","inputs":[{"name":"idsLength","type":"uint256","internalType":"uint256"},{"name":"valuesLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC1155InvalidOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155MissingApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC1155InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valuesLength\",\"type\":\"uint256\"}],\"name\":\"ERC1155InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC1155MissingApprovalForAll\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\",\"errors\":{\"ERC1155InsufficientBalance(address,uint256,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC1155InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC1155InvalidArrayLength(uint256,uint256)\":[{\"details\":\"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.\",\"params\":{\"idsLength\":\"Length of the array of token identifiers\",\"valuesLength\":\"Length of the array of token amounts\"}}],\"ERC1155InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC1155InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC1155InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC1155MissingApprovalForAll(address,address)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"owner\":\"Address of the current owner of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":\"IERC1155Errors\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd\",\"dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC1155InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC1155InvalidApprover"},{"inputs":[{"internalType":"uint256","name":"idsLength","type":"uint256"},{"internalType":"uint256","name":"valuesLength","type":"uint256"}],"type":"error","name":"ERC1155InvalidArrayLength"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"ERC1155InvalidOperator"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC1155InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC1155InvalidSender"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC1155MissingApprovalForAll"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":"IERC1155Errors"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86","urls":["bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd","dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz"],"license":"MIT"}},"version":1},"id":20} \ No newline at end of file diff --git a/deployment/11155111/v1/out/draft-IERC6093.sol/IERC20Errors.json b/deployment/11155111/v1/out/draft-IERC6093.sol/IERC20Errors.json index 4aac7cf..5687da7 100644 --- a/deployment/11155111/v1/out/draft-IERC6093.sol/IERC20Errors.json +++ b/deployment/11155111/v1/out/draft-IERC6093.sol/IERC20Errors.json @@ -1 +1 @@ -{"abi":[{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":\"IERC20Errors\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd\",\"dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":"IERC20Errors"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86","urls":["bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd","dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz"],"license":"MIT"}},"version":1},"id":21} \ No newline at end of file +{"abi":[{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":\"IERC20Errors\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd\",\"dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":"IERC20Errors"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86","urls":["bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd","dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz"],"license":"MIT"}},"version":1},"id":20} \ No newline at end of file diff --git a/deployment/11155111/v1/out/draft-IERC6093.sol/IERC721Errors.json b/deployment/11155111/v1/out/draft-IERC6093.sol/IERC721Errors.json index d07942b..8d06803 100644 --- a/deployment/11155111/v1/out/draft-IERC6093.sol/IERC721Errors.json +++ b/deployment/11155111/v1/out/draft-IERC6093.sol/IERC721Errors.json @@ -1 +1 @@ -{"abi":[{"type":"error","name":"ERC721IncorrectOwner","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InsufficientApproval","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC721InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721NonexistentToken","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-721. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":\"IERC721Errors\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd\",\"dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721IncorrectOwner"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721InsufficientApproval"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC721InvalidApprover"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"ERC721InvalidOperator"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721InvalidOwner"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC721InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC721InvalidSender"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721NonexistentToken"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":"IERC721Errors"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86","urls":["bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd","dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz"],"license":"MIT"}},"version":1},"id":21} \ No newline at end of file +{"abi":[{"type":"error","name":"ERC721IncorrectOwner","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InsufficientApproval","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC721InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721NonexistentToken","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-721. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":\"IERC721Errors\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@abdk/=lib/abdk-libraries-solidity/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":abdk-libraries-solidity/=lib/abdk-libraries-solidity/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd\",\"dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721IncorrectOwner"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721InsufficientApproval"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC721InvalidApprover"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"ERC721InvalidOperator"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721InvalidOwner"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC721InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC721InvalidSender"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721NonexistentToken"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@abdk/=lib/abdk-libraries-solidity/","@openzeppelin/=lib/openzeppelin-contracts/","abdk-libraries-solidity/=lib/abdk-libraries-solidity/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":"IERC721Errors"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x981460d505328349eed07798a87d2cb432da70633e45ac3c60b1081b3d7a8e86","urls":["bzz-raw://f04330ec0b36ce165f97fac5d37a1e463e1735caca291d8b18d1249e4a6523cd","dweb:/ipfs/Qma3R3iRhfz3pZuSnriZrmJsSJ5mexyYZVTNXEfDqczRhz"],"license":"MIT"}},"version":1},"id":20} \ No newline at end of file