Loading
[ { "inputs": [ { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "uint256", "name": "amplificationParameter", "type": "uint256" }, { "internalType": "string", "name": "version", "type": "string" } ], "internalType": "struct StablePool.NewPoolParams", "name": "params", "type": "tuple" }, { "internalType": "contract IVault", "name": "vault", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AmpUpdateAlreadyStarted", "type": "error" }, { "inputs": [], "name": "AmpUpdateDurationTooShort", "type": "error" }, { "inputs": [], "name": "AmpUpdateNotStarted", "type": "error" }, { "inputs": [], "name": "AmpUpdateRateTooFast", "type": "error" }, { "inputs": [], "name": "AmplificationFactorTooHigh", "type": "error" }, { "inputs": [], "name": "AmplificationFactorTooLow", "type": "error" }, { "inputs": [], "name": "ECDSAInvalidSignature", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "ECDSAInvalidSignatureLength", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "ECDSAInvalidSignatureS", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "deadline", "type": "uint256" } ], "name": "ERC2612ExpiredSignature", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "signer", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC2612InvalidSigner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "currentNonce", "type": "uint256" } ], "name": "InvalidAccountNonce", "type": "error" }, { "inputs": [], "name": "InvalidShortString", "type": "error" }, { "inputs": [ { "internalType": "uint8", "name": "bits", "type": "uint8" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "SafeCastOverflowedUintDowncast", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "SenderIsNotVault", "type": "error" }, { "inputs": [], "name": "SenderNotAllowed", "type": "error" }, { "inputs": [], "name": "StableGetBalanceDidNotConverge", "type": "error" }, { "inputs": [], "name": "StableInvariantDidNotConverge", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "type": "error" }, { "inputs": [], "name": "ZeroDivision", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "startValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "endValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "startTime", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "endTime", "type": "uint256" } ], "name": "AmpUpdateStarted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "currentValue", "type": "uint256" } ], "name": "AmpUpdateStopped", "type": "event" }, { "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": [], "name": "EIP712DomainChanged", "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": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PERMIT_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "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": "amount", "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": "uint256[]", "name": "balancesLiveScaled18", "type": "uint256[]" }, { "internalType": "uint256", "name": "tokenInIndex", "type": "uint256" }, { "internalType": "uint256", "name": "invariantRatio", "type": "uint256" } ], "name": "computeBalance", "outputs": [ { "internalType": "uint256", "name": "newBalance", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "balancesLiveScaled18", "type": "uint256[]" } ], "name": "computeInvariant", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "emitApproval", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "emitTransfer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "selector", "type": "bytes4" } ], "name": "getActionId", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getAggregateFeePercentages", "outputs": [ { "internalType": "uint256", "name": "aggregateSwapFeePercentage", "type": "uint256" }, { "internalType": "uint256", "name": "aggregateYieldFeePercentage", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getAmplificationParameter", "outputs": [ { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "bool", "name": "isUpdating", "type": "bool" }, { "internalType": "uint256", "name": "precision", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getCurrentLiveBalances", "outputs": [ { "internalType": "uint256[]", "name": "balancesLiveScaled18", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getMaximumInvariantRatio", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "getMaximumSwapFeePercentage", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "getMinimumInvariantRatio", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "getMinimumSwapFeePercentage", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "getRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getStablePoolDynamicData", "outputs": [ { "components": [ { "internalType": "uint256[]", "name": "balancesLiveScaled18", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "tokenRates", "type": "uint256[]" }, { "internalType": "uint256", "name": "staticSwapFeePercentage", "type": "uint256" }, { "internalType": "uint256", "name": "totalSupply", "type": "uint256" }, { "internalType": "uint256", "name": "bptRate", "type": "uint256" }, { "internalType": "uint256", "name": "amplificationParameter", "type": "uint256" }, { "internalType": "bool", "name": "isAmpUpdating", "type": "bool" } ], "internalType": "struct StablePoolDynamicData", "name": "data", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getStablePoolImmutableData", "outputs": [ { "components": [ { "internalType": "contract IERC20[]", "name": "tokens", "type": "address[]" }, { "internalType": "uint256[]", "name": "decimalScalingFactors", "type": "uint256[]" }, { "internalType": "uint256", "name": "amplificationParameterPrecision", "type": "uint256" } ], "internalType": "struct StablePoolImmutableData", "name": "data", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getStaticSwapFeePercentage", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTokenInfo", "outputs": [ { "internalType": "contract IERC20[]", "name": "tokens", "type": "address[]" }, { "components": [ { "internalType": "enum TokenType", "name": "tokenType", "type": "uint8" }, { "internalType": "contract IRateProvider", "name": "rateProvider", "type": "address" }, { "internalType": "bool", "name": "paysYieldFees", "type": "bool" } ], "internalType": "struct TokenInfo[]", "name": "tokenInfo", "type": "tuple[]" }, { "internalType": "uint256[]", "name": "balancesRaw", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "lastBalancesLiveScaled18", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTokens", "outputs": [ { "internalType": "contract IERC20[]", "name": "tokens", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getVault", "outputs": [ { "internalType": "contract IVault", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "enum SwapKind", "name": "kind", "type": "uint8" }, { "internalType": "uint256", "name": "amountGivenScaled18", "type": "uint256" }, { "internalType": "uint256[]", "name": "balancesScaled18", "type": "uint256[]" }, { "internalType": "uint256", "name": "indexIn", "type": "uint256" }, { "internalType": "uint256", "name": "indexOut", "type": "uint256" }, { "internalType": "address", "name": "router", "type": "address" }, { "internalType": "bytes", "name": "userData", "type": "bytes" } ], "internalType": "struct PoolSwapParams", "name": "request", "type": "tuple" } ], "name": "onSwap", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "rawEndValue", "type": "uint256" }, { "internalType": "uint256", "name": "endTime", "type": "uint256" } ], "name": "startAmplificationParameterUpdate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "stopAmplificationParameterUpdate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": "amount", "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": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "version", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" } ]
6101e0806040523462000869576200369980380380916200002182856200086d565b83398101604082820312620008695781516001600160401b038111620008695782019060809283838303126200086957604051918483016001600160401b038111848210176200062a5760405283516001600160401b0381116200086957816200008d918601620008b4565b835260208401516001600160401b038111620008695781620000b1918601620008b4565b60208401908152604080860151908501526060850151909490916001600160401b0383116200086957602092620000e99201620008b4565b60608401819052910151916001600160a01b038316830362000869578051935160408051959086016001600160401b038111878210176200062a576040526001865260208601603160f81b815262000141826200090f565b61012052620001508762000aa8565b6101405281516020830120968760e05251902095610100968088524660a0526040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f84526040830152606082015246898201523060a082015260a0815260c0810181811060018060401b038211176200062a5760405251902087523060c0526101608590528051906001600160401b0382116200062a5760035490600182811c921680156200085e575b60208310146200060b5781601f849311620007eb575b50602090601f83116001146200075e575f9262000752575b50508160011b915f199060031b1c1916176003555b8051906001600160401b0382116200062a5760045490600182811c9216801562000747575b60208310146200060b5781601f849311620006d7575b50602090601f83116001146200064a575f926200063e575b50508160011b915f199060031b1c1916176004555b610180903382526101a0928484526101c0948552805160018060401b0381116200062a57600591825490600182811c921680156200061f575b60208310146200060b5781601f849311620005b8575b50602090601f83116001146200054f575f9262000543575b50508160011b915f199060031b1c19161790555b600160408201511062000531576113886040820151116200051f57604001516103e8908181029181830414901517156200050b576001600160401b038111620004ec57600654906001600160401b03811663ffffffff4211620004cd574280891b63ffffffff60801b16604093841b6fffffffffffffffff0000000000000000166001600160c01b03199095168317949094179390931760a09390931b63ffffffff60a01b1692909217600655519081527fa0d01593e47e69d07e0ccd87bece09411e07dd1ed40ca8f2e7af2976542a023390602090a160405193612aa8958662000bf18739518561258a015260a05185612655015260c05185612554015260e051856125d9015251846125ff01526101205184610dbe01526101405184610de80152610160518481816102e30152818161049a0152818161062501528181610bca01528181610d3f015281816112390152818161135c0152818161187301528181611d1701528181611f18015261235101525183612063015251826123ce01525181818161056a01528181610818015281816108c701528181610af90152610ec20152f35b6040516306dfcc6560e41b815260206004820152426024820152604490fd5b604490604051906306dfcc6560e41b8252604060048301526024820152fd5b634e487b7160e01b5f52601160045260245ffd5b6040516309b80d3960e41b8152600490fd5b60405163ab92332360e01b8152600490fd5b015190505f8062000313565b5f858152602081209350601f198516905b8181106200059f575090846001959493921062000586575b505050811b01905562000327565b01515f1960f88460031b161c191690555f808062000578565b9293602060018192878601518155019501930162000560565b909150835f5260205f20601f8401851c8101916020851062000600575b90601f8594939201861c01905b818110620005f15750620002fb565b5f8155849350600101620005e2565b9091508190620005d5565b634e487b7160e01b5f52602260045260245ffd5b91607f1691620002e5565b634e487b7160e01b5f52604160045260245ffd5b015190505f8062000297565b60045f90815293507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b91905b601f1984168510620006bb576001945083601f19811610620006a2575b505050811b01600455620002ac565b01515f1960f88460031b161c191690555f808062000693565b8181015183556020948501946001909301929091019062000676565b60045f529091507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f840160051c8101602085106200073f575b90849392915b601f830160051c82018110620007305750506200027f565b5f815585945060010162000718565b508062000712565b91607f169162000269565b015190505f806200022f565b60035f90815293507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b91905b601f1984168510620007cf576001945083601f19811610620007b6575b505050811b0160035562000244565b01515f1960f88460031b161c191690555f8080620007a7565b818101518355602094850194600190930192909101906200078a565b60035f529091507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f840160051c8101916020851062000853575b90601f859493920160051c01905b81811062000844575062000217565b5f815584935060010162000835565b909150819062000827565b91607f169162000201565b5f80fd5b601f909101601f19168101906001600160401b038211908210176200062a57604052565b5f5b838110620008a35750505f910152565b818101518382015260200162000893565b81601f82011215620008695780516001600160401b0381116200062a5760405192620008eb601f8301601f1916602001856200086d565b8184526020828401011162000869576200090c916020808501910162000891565b90565b8051602090818110156200098c5750601f8251116200094a57808251920151908083106200093c57501790565b825f19910360031b1b161790565b6044906200097e9260405193849263305a27a960e01b84528060048501528251928391826024870152868601910162000891565b601f01601f19168101030190fd5b906001600160401b0382116200062a575f54926001938481811c9116801562000a9d575b838210146200060b57601f811162000a67575b5081601f841160011462000a0157509282939183925f94620009f5575b50501b915f199060031b1c1916175f5560ff90565b015192505f80620009e0565b919083601f1981165f8052845f20945f905b8883831062000a4c575050501062000a33575b505050811b015f5560ff90565b01515f1960f88460031b161c191690555f808062000a26565b85870151885590960195948501948793509081019062000a13565b5f805284601f845f20920160051c820191601f860160051c015b82811062000a91575050620009c3565b5f815501859062000a81565b90607f1690620009b0565b80516020908181101562000ad55750601f8251116200094a57808251920151908083106200093c57501790565b9192916001600160401b0381116200062a5760019182548381811c9116801562000be5575b828210146200060b57601f811162000baf575b5080601f831160011462000b4b5750819293945f9262000b3f575b50505f19600383901b1c191690821b17905560ff90565b015190505f8062000b28565b90601f19831695845f52825f20925f905b88821062000b97575050838596971062000b7e575b505050811b01905560ff90565b01515f1960f88460031b161c191690555f808062000b71565b80878596829496860151815501950193019062000b5c565b835f5283601f835f20920160051c820191601f850160051c015b82811062000bd957505062000b0d565b5f815501849062000bc9565b90607f169062000afa56fe6080604081815260049182361015610015575f80fd5b60e05f35811c91826301ffc9a714611a3e5750816306fdde031461198f578163095ea7b31461193757816316a0b3e0146118c557816318160ddd146118a957816323b872dd1461182757816323de6651146117f5578163273c1adf146117d35781632f1a0bc9146115e457816330adf81f146115aa578163313ce5671461158f5781633644e5151461157357816354fd4d50146114a15781635687f2b81461144f5781635c1e625914611316578163654cf15d146112f4578163679aefce146112d85781636daccffa146112a757816370a08231146111e357816372c98186146110d05781637ecebe001461109957816380de451d1461105557816381fa807c14610e9357816384b0196e14610da6578163851c1bb314610d6e5781638d928af814610d2b57816395d89b4114610c43578163a9059cbb14610b6d578163aa6ca80814610acc578163abb1dc4414610892578163b156aa0a146107eb578163b677fa56146107c9578163cbd4e280146105ca578163ce20ece7146105ab578163d335b0cf1461053c578163d505accf1461035b57508063dd62ed3e1461028d5763eb0f24d6146101c3575f80fd5b34610289575f366003190112610289576101db612399565b6101e36120e8565b9290921561027b577fa0d01593e47e69d07e0ccd87bece09411e07dd1ed40ca8f2e7af2976542a0233602083610218866124ee565b6006546001600160401b038216929161023042612521565b608081901b63ffffffff60801b1691841b67ffffffffffffffff60401b166001600160c01b03199093168517929092171760a09190911b63ffffffff60a01b161760065551908152a1005b9051634673a67560e01b8152fd5b5f80fd5b503461028957806003193601126102895760206102a8611ab1565b60646102b2611ac7565b845163927da10560e01b815230968101969096526001600160a01b03928316602487015282166044860152849182907f0000000000000000000000000000000000000000000000000000000000000000165afa908115610352575f9161031d575b6020925051908152f35b90506020823d60201161034a575b8161033860209383611b5d565b81010312610289576020915190610313565b3d915061032b565b513d5f823e3d90fd5b9050346102895736600319011261028957610374611ab1565b9061037d611ac7565b60443593606435936084359160ff83168303610289578542116105255761045160018060a01b039361044885851691825f52886020809b600282528d835f2090815491600183019055878551948501957f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c987528501528b8d166060850152608084015260a083015260c082015260c0815261041781611b0c565b519020610422612551565b908a519161190160f01b83526002830152602282015260c43591604260a4359220612981565b90939193612a03565b848216036104f85750845163e1f21c6760e01b81526001600160a01b039283169181019182529190931660208401526040830195909552839185919082905f90829060600103927f0000000000000000000000000000000000000000000000000000000000000000165af190811561035257506104ca57005b81813d83116104f1575b6104de8183611b5d565b81010312610289576104ef90611cef565b005b503d6104d4565b85516325c0072360e11b81526001600160a01b039182169281019283529216602082015281906040010390fd5b845163313c898160e11b8152908101869052602490fd5b505034610289575f36600319011261028957805163b45090f960e01b815230928101929092526020826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610352575f9161031d576020925051908152f35b8234610289575f366003190112610289576020905164e8d4a510008152f35b828434610289575f366003190112610289578151926105e884611b0c565b6060845260209283850160608152818601935f8552606087015f815260808801915f835260a08901935f855260c08a01955f875260018060a01b037f0000000000000000000000000000000000000000000000000000000000000000169281516329ae7ec560e11b815230828201525f81602481885afa90811561079d575f916107a7575b508c528151633f1b0def60e11b815230828201525f81602481885afa90811561079d57908c92915f91610779575b508452602483518096819363b45090f960e01b835230908301525afa801561076f575f90610740575b61071c935089526106d3611cfc565b84526106dd611efd565b85526106e76120e8565b1515885286526107098a8983519d8e9d8e5251918d01526101008c0190611c66565b915190601f198b840301908b0152611c66565b955160608801525160808701525160a08601525160c0850152511515908301520390f35b508983813d8311610768575b6107568183611b5d565b810103126102895761071c92516106c4565b503d61074c565b50513d5f823e3d90fd5b61079591503d805f833e61078d8183611b5d565b810190611eba565b90508e61069b565b83513d5f823e3d90fd5b6107c391503d805f833e6107bb8183611b5d565b8101906120a5565b8d61066d565b8234610289575f3660031901126102895760209051670853a0d2313c00008152f35b828434610289575f3660031901126102895781516329ae7ec560e11b815230918101919091525f816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108885791610868925f9261086c575b5051918291602083526020830190611c66565b0390f35b6108819192503d805f833e6107bb8183611b5d565b9083610855565b82513d5f823e3d90fd5b828434610289575f3660031901126102895781516333f0703b60e11b815230918101919091526001600160a01b035f826024817f000000000000000000000000000000000000000000000000000000000000000085165afa91821561079d575f935f925f925f956109a3575b509061091b95949392918151968796608088526080880190611c2a565b6020878203818901528080875193848152019601925f905b83821061095f57898803868b015289806108688b6109518c8c611c66565b908382036060850152611c66565b918498995060608697986001939597839751805161097c81611c99565b83528685820151168584015201511515898201520198019201899897969594929391610933565b955093509150503d805f853e6109b98185611b5d565b830192608081850312610289578051916001600160401b039283811161028957856109e5918401611dc0565b916020958682015185811161028957820181601f8201121561028957805190610a0d82611b7e565b98610a1a86519a8b611b5d565b828a52808a0181606080950284010192858411610289578201905b838210610a7a575050505050828201518581116102895781610a58918401611e59565b94606083015190811161028957610a6f9201611e59565b9194929193866108fe565b848287031261028957875190610a8f82611add565b8251600281101561028957825283830151908c82168203610289578285928389950152610abd8b8601611cef565b8b820152815201910190610a35565b828434610289575f36600319011261028957815163ca4f280360e01b815230918101919091525f816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108885791610868925f92610b49575b5051918291602083526020830190611c2a565b610b669192503d805f833e610b5e8183611b5d565b810190611e31565b9083610b36565b5050346102895780600319360112610289576020610bc592610b8d611ab1565b83516317d5759960e31b8152339281019283526001600160a01b03909116602083015260243560408301529384918291606090910190565b03815f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1801561076f57610c09575b6020905160018152f35b6020823d602011610c3b575b81610c2260209383611b5d565b8101031261028957610c35602092611cef565b50610bff565b3d9150610c15565b828434610289575f36600319011261028957815191825f8354610c6581611cb7565b90818452602095600191876001821691825f14610d04575050600114610ca8575b5050506108689291610c99910385611b5d565b51928284938452830190611a73565b5f90815286935091907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b828410610cec5750505082010181610c99610868610c86565b8054848a018601528895508794909301928101610cd3565b60ff19168782015293151560051b86019093019350849250610c9991506108689050610c86565b8234610289575f36600319011261028957517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b8284346102895760203660031901126102895735906001600160e01b03198216820361028957610d9f602092612059565b9051908152f35b90508234610289575f36600319011261028957610de27f00000000000000000000000000000000000000000000000000000000000000006127c6565b92610e0c7f00000000000000000000000000000000000000000000000000000000000000006128c3565b81519260208401908482106001600160401b03831117610e80575091610e6091610868949382525f8452610e538251978897600f60f81b89528060208a0152880190611a73565b9186830390870152611a73565b904660608501523060808501525f60a085015283820360c0850152611c66565b604190634e487b7160e01b5f525260245ffd5b90508234610289575f36600319011261028957825163f29486a160e01b815230828201526101a09283826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa93841561104b575f94610f11575b858560608282015191015182519182526020820152f35b909180939450813d8311611044575b610f2a8183611b5d565b810103928184126102895785519461014094858701918783106001600160401b03841117610e8057506080908289521261028957610f6781611b27565b610f7082611cef565b8152610f7e60208301611cef565b906101609182880152610f92888401611cef565b936101809485890152610fa760608501611cef565b9088015286526080820151602087015260a08201518787015260c082015160608701528382015164ffffffffff8116810361028957608087015261010090818301519063ffffffff82168203610289576110379561102d9260a08a0152611022610120986110168a8801611cef565b60c08c01528601611cef565b908901528301611cef565b9086015201611cef565b9082015282808080610efa565b503d610f20565b85513d5f823e3d90fd5b505034610289576020366003190112610289578135916001600160401b0383116102895761108b610d9f91602094369101611b95565b6110936120e8565b5061267b565b8234610289576020366003190112610289576020906001600160a01b036110be611ab1565b165f5260028252805f20549051908152f35b828434610289576020926003198481360112610289578235916001600160401b03918284116102895783360301126102895783519161110e83611b0c565b80840135600281101561028957835260248101358684015260448101358281116102895761114190853691840101611b95565b83860152606481013560608401526084810135608084015260a48101356001600160a01b03811681036102895760a084015260c481013590828211610289570192366023850112156102895780840135918211610e8057508351906111af601f8201601f1916870183611b5d565b80825236602482860101116102895785815f926024610d9f9701838601378301015260c08201526111de61234f565b611f53565b8284346102895760209182600319360112610289578261123592611205611ab1565b8351633de222bb60e21b8152309281019283526001600160a01b0390911660208301529384918291604090910190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561076f575f92611278575b5051908152f35b9091508281813d83116112a0575b6112908183611b5d565b8101031261028957519083611271565b503d611286565b8234610289575f366003190112610289576060906103e86112c66120e8565b83519182521515602082015291820152f35b8234610289575f36600319011261028957602090610d9f611efd565b8234610289575f366003190112610289576020905167016345785d8a00008152f35b828434610289575f3660031901126102895781519061133482611add565b6060808352602083019081525f848401818152855163ca4f280360e01b8152308186015290937f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169282602481865afa8015611445575f92839161142b575b5086526024875180948193633f1b0def60e11b835230908301525afa90811561104b579461140592916113f2965f91611410575b5082526103e8845280519586956020875251606060208801526080870190611c2a565b915190601f198684030190860152611c66565b905160608301520390f35b61142491503d805f833e61078d8183611b5d565b50876113cf565b61143f91503d8085833e610b5e8183611b5d565b8861139b565b87513d5f823e3d90fd5b82346102895760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92561148136611bf5565b93919461148c61234f565b519384526001600160a01b03908116941692a3005b8234610289575f3660031901126102895780516005549091825f6114c484611cb7565b808352602094600190866001821691825f146115515750506001146114f6575b50506108689291610c99910385611b5d565b9085925060055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0915f925b8284106115395750505082010181610c996114e4565b8054848a018601528895508794909301928101611523565b60ff19168682015292151560051b85019092019250839150610c9990506114e4565b8234610289575f36600319011261028957602090610d9f612551565b8234610289575f366003190112610289576020905160128152f35b8234610289575f36600319011261028957602090517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98152f35b505034610289578060031936011261028957813560243592611604612399565b600182106117c55761138882116117b75761161f4285611d8c565b90620151808083106117a8576116336120e8565b939093611798576103e894858102958187041481151715611785578486111561175f576305265c000291858304148515171561174c5760029161167961167f9286611dad565b906124c6565b1161173e577f1835882ee7a34ac194f717a35e09bb1d24c82a3b9d854ab6c9749525b714cdf260808686866116bc6116b6886124ee565b916124ee565b916116cf6116c942612521565b94612521565b916001600160401b03809116946006549163ffffffff9586938863ffffffff60a01b8860a01b16916001600160401b0360c01b161767ffffffffffffffff60401b83881b161763ffffffff8b1b858c1b16171760065584519788521660208701521690840152166060820152a1005b8351630e3845c960e11b8152fd5b601183634e487b7160e01b5f525260245ffd5b5081840291848304148415171561174c576002916116796117809287611dad565b61167f565b601184634e487b7160e01b5f525260245ffd5b85516317980f3f60e11b81528390fd5b5083516366b5811560e11b8152fd5b82516309b80d3960e41b8152fd5b825163ab92332360e01b8152fd5b8234610289575f3660031901126102895760209051674563918244f400008152f35b82346102895760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61148136611bf5565b5050346102895760205f608461183c36611bf5565b8651630aed65f560e11b815233988101989098526001600160a01b03928316602489015290821660448801526064870152859283917f0000000000000000000000000000000000000000000000000000000000000000165af1801561076f57610c09576020905160018152f35b8234610289575f36600319011261028957602090610d9f611cfc565b505034610289576060366003190112610289578135916001600160401b038311610289576118fb610d9f91602094369101611b95565b6119036120e8565b5061190c6120e8565b5091670de0b6b3a76400006119306024359461192b846044359261267b565b611dad565b04916121bc565b5050346102895780600319360112610289576020610bc592611957611ab1565b835163e1f21c6760e01b8152339281019283526001600160a01b03909116602083015260243560408301529384918291606090910190565b8234610289575f3660031901126102895780516003549091825f6119b284611cb7565b808352602094600190866001821691825f146115515750506001146119e35750506108689291610c99910385611b5d565b9085925060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f925b828410611a265750505082010181610c996114e4565b8054848a018601528895508794909301928101611a10565b843461028957602036600319011261028957359063ffffffff60e01b8216809203610289576020916301ffc9a760e01b148152f35b91908251928382525f5b848110611a9d575050825f602080949584010152601f8019910116010190565b602081830181015184830182015201611a7d565b600435906001600160a01b038216820361028957565b602435906001600160a01b038216820361028957565b606081019081106001600160401b03821117611af857604052565b634e487b7160e01b5f52604160045260245ffd5b60e081019081106001600160401b03821117611af857604052565b608081019081106001600160401b03821117611af857604052565b604081019081106001600160401b03821117611af857604052565b90601f801991011681019081106001600160401b03821117611af857604052565b6001600160401b038111611af85760051b60200190565b9080601f83011215610289576020908235611baf81611b7e565b93611bbd6040519586611b5d565b81855260208086019260051b82010192831161028957602001905b828210611be6575050505090565b81358152908301908301611bd8565b6060906003190112610289576001600160a01b0390600435828116810361028957916024359081168103610289579060443590565b9081518082526020808093019301915f5b828110611c49575050505090565b83516001600160a01b031685529381019392810192600101611c3b565b9081518082526020808093019301915f5b828110611c85575050505090565b835185529381019392810192600101611c77565b60021115611ca357565b634e487b7160e01b5f52602160045260245ffd5b90600182811c92168015611ce5575b6020831014611cd157565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611cc6565b5190811515820361028957565b6040516339370aa960e21b81523060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115611d81575f91611d52575090565b90506020813d602011611d79575b81611d6d60209383611b5d565b81010312610289575190565b3d9150611d60565b6040513d5f823e3d90fd5b91908203918211611d9957565b634e487b7160e01b5f52601160045260245ffd5b81810292918115918404141715611d9957565b9080601f8301121561028957815190602091611ddb81611b7e565b93611de96040519586611b5d565b81855260208086019260051b82010192831161028957602001905b828210611e12575050505090565b81516001600160a01b0381168103610289578152908301908301611e04565b906020828203126102895781516001600160401b03811161028957611e569201611dc0565b90565b9080601f8301121561028957815190602091611e7481611b7e565b93611e826040519586611b5d565b81855260208086019260051b82010192831161028957602001905b828210611eab575050505090565b81518152908301908301611e9d565b919091604081840312610289578051926001600160401b03938481116102895781611ee6918401611e59565b93602083015190811161028957611e569201611e59565b604051634f037ee760e01b81523060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115611d81575f91611d52575090565b6040810190611f6582516110936120e8565b90611f6e6120e8565b50918151611f7b81611c99565b611f8481611c99565b611fff57611feb91602091611fe5611fd1611ff1975193606081015193856080830151978893015199611fc18b611fbb898561219b565b516121af565b611fcb888461219b565b526121bc565b95611fdc838561219b565b5103918361219b565b5261219b565b51611d8c565b5f198101908111611d995790565b6120449161204b945190611fe561203060608301518095856020608087015196015199611fc18b611feb898561219b565b9561203b838561219b565b5101918361219b565b5190611d8c565b60018101809111611d995790565b60405160208101917f0000000000000000000000000000000000000000000000000000000000000000835263ffffffff60e01b1660408201526024815261209f81611add565b51902090565b906020828203126102895781516001600160401b03811161028957611e569201611e59565b81156120d4570490565b634e487b7160e01b5f52601260045260245ffd5b6040516120f481611b27565b60065460606001600160401b0391828116928385528160401c169384602082015263ffffffff808360801c169283604084015260a01c1692839101528142105f1461217257600193838082111561215a578261215694039242039103026120ca565b0191565b508161216d9303914203908403026120ca565b900391565b5050505f9091565b8051156121875760200190565b634e487b7160e01b5f52603260045260245ffd5b80518210156121875760209160051b010190565b91908201809211611d9957565b9291906121cb81518095611dad565b926121d58261217a565b516121e9866121e38561217a565b51611dad565b956001905b80821061231257505061220590612044838561219b565b906122108480611dad565b956103e893848802888104861489151715611d99576122519361223d6122439261167961224a968c611dad565b9261219b565b5190611dad565b94846120ca565b828102928184041490151715611d99578361227261228293612278936121af565b956121af565b61167985846121af565b5f5b60ff811061229e5760405163cd3eb73760e01b8152600490fd5b816122b2856122ad8380611dad565b6121af565b908060011b9080820460021490151715611d9957600191611679866122da8a6122df956121af565b611d8c565b928381811115612302570311156122fa576001905b01612284565b509250505090565b900311156122fa576001906122f4565b909196612347612335876123308561192b6001966122438a8d61219b565b6120ca565b98612340858861219b565b51906121af565b9201906121ee565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361238157565b60405163089676d560e01b8152336004820152602490fd5b6123ad5f356001600160e01b031916612059565b60405163aaabadc560e01b81526020916001600160a01b03919083826004817f000000000000000000000000000000000000000000000000000000000000000087165afa908115611d815784925f9261248a575b5060649060405194859384926326f8aa2160e21b84526004840152336024840152306044840152165afa918215611d81575f92612454575b50501561244257565b6040516323dada5360e01b8152600490fd5b90809250813d8311612483575b61246b8183611b5d565b810103126102895761247c90611cef565b5f80612439565b503d612461565b8092508391933d83116124bf575b6124a28183611b5d565b810103126102895751908282168203610289578391906064612401565b503d612498565b9080156124dc575f198201046001019015150290565b604051630a0c22c760e01b8152600490fd5b6001600160401b0390818111612502571690565b604490604051906306dfcc6560e41b8252604060048301526024820152fd5b63ffffffff90818111612532571690565b604490604051906306dfcc6560e41b8252602060048301526024820152fd5b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612652575b156125ac577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611af85760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612583565b90915f9183515f5b8181106127ae575083156127a557929061269e848392611dad565b915f906103e719840196848811916001986001890194858a11965b60ff82106126d2576040516208651960e51b8152600490fd5b805f5b8d8d82106127775750509081878661270f8f9561192b8f9897612709839a6127016103e8978892611dad565b049189611dad565b906121af565b91611d995761271f8c9388611dad565b0491611d99576127388f939261270961273e948d611dad565b906120ca565b92838181111561276857031115612759578b905b01906126b9565b50985050505050505050915090565b90031115612759578b90612752565b909691939c9261278a8561279892611dad565b612738856121e38b8761219b565b96019b929095919b6126d5565b50509150505f90565b936127bf600191612340878961219b565b9401612683565b60ff81146128045760ff811690601f82116127f257604051916127e883611b42565b8252602082015290565b604051632cd44ac360e21b8152600490fd5b506040515f815f549161281683611cb7565b8083529260209060019081811690811561289f5750600114612841575b5050611e5692500382611b5d565b9150925f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563935f925b8284106128875750611e569450505081016020015f80612833565b8554878501830152948501948694509281019261286c565b91505060209250611e5694915060ff191682840152151560051b8201015f80612833565b60ff81146128e55760ff811690601f82116127f257604051916127e883611b42565b506040515f816001916001546128fa81611cb7565b808452936020916001811690811561289f5750600114612922575050611e5692500382611b5d565b91509260015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6935f925b8284106129695750611e569450505081016020015f80612833565b8554878501830152948501948694509281019261294e565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116129f8579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15611d81575f516001600160a01b038116156129ee57905f905f90565b505f906001905f90565b5050505f9160039190565b6004811015611ca35780612a15575050565b60018103612a2f5760405163f645eedf60e01b8152600490fd5b60028103612a505760405163fce698f760e01b815260048101839052602490fd5b600314612a5a5750565b602490604051906335e2f38360e21b82526004820152fdfea2646970667358221220ea13707ae6fd5afce5e88412a97336cd75956e369daf1f7a7afa13c232c45b8864736f6c6343000818003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000003958583a272fc26dfb87b62917a3cc2c13b010f5000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000003e80000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000454455354000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004544553540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000417b226e616d65223a22537461626c65506f6f6c222c2276657273696f6e223a372c226465706c6f796d656e74223a2276332d737461626c652d706f6f6c2d37227d00000000000000000000000000000000000000000000000000000000000000
0x00000000000000000000000000000000000000000000000000000000000000400000000000000000000000003958583a272fc26dfb87b62917a3cc2c13b010f5000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000003e80000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000454455354000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004544553540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000417b226e616d65223a22537461626c65506f6f6c222c2276657273696f6e223a372c226465706c6f796d656e74223a2276332d737461626c652d706f6f6c2d37227d00000000000000000000000000000000000000000000000000000000000000